语言模型基础 入门 约 15 分钟 更新 2026-10-02

词元化与词表:BPE 及其变体

学习状态:
未学

一句话定义

词元化(Tokenization)把原始文本切成模型词表内的最小处理单元「词元(Token)」,主流算法字节对编码(Byte-Pair Encoding,BPE)通过迭代合并高频字节对,在词表大小与序列长度间取得平衡。

为什么重要

模型不认识「字」或「词」,只认识词元 id。词表设计直接影响序列长度(成本)、拼写与数字能力、多语言公平性乃至代码能力。理解词元化,你才能解释「为什么模型数不清 strawberry 里有几个 r」「为什么中文按 token 计费更贵」这类真实问题。

前置知识

核心概念

原理与机制

BPE 训练:统计语料中相邻符号对频次,合并最高频对,重复到词表达标。推理:用学得的合并规则贪心切分新文本。高频词保持完整(如「的」),低频词被拆成多个子词甚至单字节。词元序列作为 id 序列送入嵌入层(见 kp-004)。生成端模型输出词元 id,再由分词器解码回文本。

公式或模型

BPE 合并次数与词表关系:初始字节词表 |V0| ≈ 256,执行 M 次合并后:

|V| = |V0| + M

压缩率可用「平均每词元字符数(bytes per token)」衡量,中文通常低于英文,是同等内容中文 token 成本更高的原因之一。

图示

语料: "low low lower newest newest newest widest"
初始: l o w ▁ ...              → 频次统计
合并1: l+o → lo                → 合并2: lo+w → low
编码 "lowest": low + e + s + t (未整词合并则继续拆)

直观类比

像「成语压缩」:人们把高频的固定表达固化成成语(高频字节对合并成新词元),低频组合仍逐字表达(拆成单字节)。压缩表就是词表,说话时按查表结果念出。

实例或案例

把 "Internationalization" 输入某 GPT 系分词器,常被拆成多个子词如 "Intern/ational/ization"——词表内没有整词则按合并规则拆分;这也是模型在长英文单词拼写任务上容易出错的结构性原因之一。数字方面,若干模型把整数按 2-3 位切开,直接导致「9.11 与 9.9 谁大」式的比较失误。

常见误区

与其他知识点的关系

自测题

  1. 描述 BPE 的训练循环(两步操作)。
    答案要点:统计相邻符号对频次;合并当前最高频对;重复至词表达标。
  2. 为什么字节级 BPE 能处理任意输入?
    答案要点:任何文本的字节表示都可枚举,基元覆盖全部 256 个字节值,不存在「编不进词表」的字符。
  3. 举一个由词元化直接导致的模型缺陷。
    答案要点:拼写计数、大数比较、非主流语言效率低等,任一举例并说明词元拆分如何导致。

延伸阅读