在大屏或电脑上体验更佳——动画和操作区域更宽敞。
输入

BPE 训练

BPE 训练从语料学习子词词表。本例先将词拆成字符,按词频累计相邻符号对,合并最高频对,把规则按学习顺序保存。随后分词器用这些优先级编码新文本。

像书写者将常见相邻字母合成连字,频率决定值得合并的片段。这里先看规则从哪来,再到分词用真实 GPT-2 的 50,257 项词表应用规则。本课缩小语料以便显示全表;生产实现还有字节、边界、并列和重叠处理等细节。

计数、选择、合并

语料由词与频率组成,初始每词一行字符。每轮:

  1. 计数:累计各词中相邻符号对,每次出现乘词频。频率 12 的词中出现一次,贡献 12 而非 1。
  2. 选择:选最高计数的对,并按固定规则打破并列。
  3. 合并:对语料所有词应用该规则,记录为新符号和有序规则。

先学的规则优先级更高,顺序是分词器的一部分。本课按合并次数停止;实际可按目标词表大小或没有可合并候选停止。

逐步演示

默认学习四次合并:

词频率
hug10
pug5
pun12
bun4
hugs5
  1. 初始为 h u g、p u g、p u n、b u n、h u g s。
  2. (u,g) 来自 hug×10 + pug×5 + hugs×5 = 20,最高。合并后为 h ug、p ug、p u n、b u n、h ug s。
  3. 重新计数,(u,n) 来自 pun×12 + bun×4 = 16,胜过 (h,ug) 的 15。结果 h ug、p ug、p un、b un、h ug s。
  4. 第三次 (h,ug) 以 15 胜出,第四次 (p,un) 以 12 胜出。语料变成 hug、p ug、pun、b un、hug s。
  5. 规则顺序为 ug、un、hug、pun,加七个基础字符 b g h n p s u,词表共 11 项。

中间计数面板每轮排序并点亮赢家,下一节拍在所有含该对的词中合并;右侧累计规则表。合并过的 ug 随即能参与下一轮 (h,ug),规则会组合。

合并次数与并列

设为 5 次,下一轮 (hug,s) 与 (p,ug) 都是 5。面板先同时点亮,再按本实现的字母序选 (hug,s),第五条规则得到 hugs。固定、公开的并列规则让训练可复现;不同实现不必采用相同约定。

实际常先定词表预算,基础符号加新符号达到预算后停止,次数由此产生。太少会让常见词碎成小片,太多可能包含语料特有的罕见片段。实际系统可用更大语料、字节或字符等基础符号、预切分边界与保留特殊符号,不是所有 BPE 都只用原始字节。

边界情况

  • 计数并列:第五轮的两个 5 必须有固定决策,不能任意依赖不稳定遍历。
  • 跨多个词累计:(u,g) 的 20 来自三个词,不只看一个词。
  • 全局应用:规则在所有词应用,不只改第一处;若出现重叠,如相邻三次同符号,实际还需确定非重叠替换顺序,本例未触及。
  • 顺序属于模型:同样的合并集合,优先级不同可能产生不同编码,不能只存无序词表。
  • 新符号继续参与:合并结果是下一轮普通候选的一部分。

常见错误

  • 不乘词频。第二轮不加权时 (u,n) 与 (h,ug) 都出现在两个词中,真正的 16 > 15 决策会丢失。
  • 只在某个词合并,导致下一轮语料计数不一致。
  • 混淆训练与编码。训练从语料产生排序规则,编码在新输入应用已有规则,不重新按当前输入频率训练。
  • 期待所有完整词都成为 token。四次预算下 hugs 仍为 hug + s;第五次才成为一个。

模型范围

五种词、共 36 次出现,字符基础符号、字母序破并列、小预算。核心为计数、选择、合并、记录。生产规模还需考虑基础符号、词边界、重叠替换、特殊 token 和高效计数结构,不能把课堂表当完整的字节级 GPT-2 训练复现。