BPE(Byte‑Pair Encoding,字节对编码)原理 BPEByte‑Pair Encoding字节对编码原理核心决定性因素是词频。一个单词或者短语在训练数据里出现得越频繁它就越有可能单独成为一个 token。生僻词汇、专业术语以及非英文文本会被拆分成更小片段这会消耗更多 token模型处理它们时也要耗费更多算力。有一个粗略经验标准1 个 token 大约对应 4 个英文字符或是大约 ¾ 个英文单词。现代大模型GPT 系列、LLaMA用的是字节级 BPE它最终拆分 token 完全由词频决定我们分通俗版本 完整执行步骤来讲。一、初始状态先把全部训练文本拆成最基础单元单个字符字节。 举个简单例子假设我们只有单词low, lower, newest, widest拆开成单个字符l o w, l o w e r, n e w e s t, w i d e s t初始 token 集合{l, o, w, e, r, n, i, d, s, t}。 此时每一个字符都是独立 token。二、BPE 迭代规则重点词频决定合并遍历全部相邻字符对统计每一组连续字符共同出现的频次选出出现次数最多的字符组合把这一对合并成一个新 token将这个新组合加入词表重复循环直到词表达到预设大小例如 GPT‑3 词表约 5 万。用上面例子演示一遍统计相邻配对(l,o)出现 2 次(o,w)出现 2 次(w,e)出现 2 次(e,s)出现 2 次 其余组合只出现 1 次。 随便选频次最高的o w合并为ow。 文本更新l ow, l ow e r, n e w e s t, w i d e s t。 第二轮再重新统计配对频次继续合并高频组合比如接下来把low合并成一个整体 token。最终结果low反复出现配对频率很高 → 整体作为单个 tokenwid这类片段出现很少始终无法合并最后依旧拆成独立小 token。至此就能回答你的核心问题为什么词频决定 token 划分 BPE 只会合并经常挨在一起出现的字符。片段在语料里出现越频繁相邻字符对被选中合并的机会越大出现足够多次后一整段单词就会被打包成单独 token。 生僻词、专业术语、中文汉字在英文语料里相邻组合很少没有高频配对就没办法合并成大块 token只能维持很小的拆分单元占用更多 token。三、适配 GPT 的字节版 BPEGPT‑2 以后的实现GPT 并不是以英文字母为最小单元而是以UTF‑8 字节作为初始单元英文普通字符1 个字节中文汉字一个汉字占 3 个 UTF‑8 字节。 这就是关键英文高频单词多次迭代合并之后几个字节组合成一个完整单词 token于是平均下来4 个英文字符≈1 个 token¾ 个单词≈1 个 token中文汉字汉字的字节组合在英文训练集里极少出现字节配对频率很低很难合并一个汉字往往占用 2‑3 个 token所以中文更消耗 token。举个实例today高频很早就被合并成 1 个 token冷门化学术语acetylcholinesterase语料中出现少没法整体合并会被拆成 46 个 token。四、高度浓缩总结版BPE 本质不断合并出现频次最高的连续字符对高频短语、常用单词字符组合反复出现被持续合并最后整体作为 1 个 token生僻词、中文、小众术语字符配对出现概率极低得不到合并拆成大量细碎 tokentoken 数量越多模型输入序列变长注意力矩阵计算量上升算力消耗变大。五、补充边界理解容易踩坑BPE 不是按语义分词只看字符共现频率不理解单词意思。哪怕单词逻辑上是一个整体只要出现次数不够照样拆开词表容量上限是人为设定的词表越大可以保存更长的高频片段短语也可以被合并比如the‑、of‑the在语料高频出现短语整体会成为单独 token这也是长短语可以整体为一个 token 的由来。