BPE 算法完整步骤

分类: 预训练与微调 · 难度: 中级 · 关联讲座: L07

BPE 算法完整步骤

本文详解 Byte-Pair Encoding(BPE)子词分词算法的完整流程,从初始字符词表出发,通过迭代合并最频繁的相邻 token 对逐步构建目标大小的词表。BPE 是现代大语言模型(GPT、Llama 等)分词器的基础算法。


1. 算法流程

📐 BPE 算法完整步骤

变量定义:初始语料 CC,目标词表大小 V|V|,当前词表 VV,token 对频率表 freq\text{freq}

推导过程(伪代码)

输入语料: ["low", "lower", "newest", "widest"]
初始化: 每词末尾加 </w> 标记
  词频: {"l o w </w>": 5, "l o w e r </w>": 2,
          "n e w e s t </w>": 6, "w i d e s t </w>": 3}

Step 1: 统计相邻 token pair 频率
  ("e", "s"): 6+3=9  ← 最高
  合并 "e"+"s" → "es",更新词表

Step 2: 再次统计
  ("es", "t"): 6+3=9  ← 最高
  合并 "es"+"t" → "est"

Step 3:
  ("est", "</w>"): 9  ← 最高
  合并 "est"+"</w>" → "est</w>"

Step 4:
  ("l", "o"): 5+2=7  ← 最高
  合并 → "lo"
  
... 重复直到 |V| 达到目标大小(如 50,000)

最终词表包含从单字符到完整单词的所有粒度的 token。