Note

什么是词元化?BPE 和 WordPiece 有什么区别?

从子词切分解释词元化,并比较 BPE 与 WordPiece 的合并规则。

什么是词元化?请比较一下 BPE 和 WordPiece 这两种主流的子词切分算法。

什么是词元化(Tokenization)?

词元化是将原始的文本字符串分解成一个个独立的单元(称为“词元”或“token”),并将这些词元映射到唯一的整数ID的过程。这是自然语言处理模型处理文本的第一步,因为模型只能处理数字输入。

现代大型语言模型普遍采用 子词(Subword) 词元化算法,它介于按词切分和按字符切分之间。这样做的好处是:

  1. 有效处理未登录词(OOV): 任何罕见词或新词都可以被拆解成已知的子词组合,避免了“未知”标记。
  2. 平衡词表大小与序列长度: 相比于词级别,词表规模大大减小;相比于字符级别,生成的序列长度又不会过长,兼顾了效率。
  3. 保留形态信息: 像 “running”, “runner” 这样的词可以共享 “run” 这个子词,使得模型能够理解词根和词缀的关系。

BPE vs. WordPiece

BPE和WordPiece是两种最主流的子词切分算法,它们构建词表的过程相似,但在合并子词的决策标准上有所不同。

BPE (Byte Pair Encoding)

  • 工作原理:

    1. 初始化: 词汇表由语料库中出现的所有基本字符组成。
    2. 迭代合并: 重复以下步骤直到达到预设的词表大小: a. 在整个语料库中,统计所有相邻词元对的出现频率。 b. 找出频率最高的那个词元对(例如 ('e', 's'))。 c. 将这个词元对合并成一个新的、更长的词元('es'),并将其加入词汇表。 d. 在语料库中,用新词元替换所有出现的该词元对。
  • 应用模型: GPT系列、Llama等。

  • 特点: 算法思想简单直观,完全基于数据中符号对的出现频率。

WordPiece

  • 工作原理:
    1. 初始化: 与BPE一样,词汇表也从所有基本字符开始。
    2. 迭代合并(核心区别): WordPiece在选择合并哪两个子词时,不是基于频率,而是基于语言模型的似然(Likelihood)。它会尝试所有可能的合并,并选择那个能够最大程度提升训练数据似然值的合并操作。
    • 可以通俗地理解为:如果把语料库看作一个语言模型,每次合并都应该让这个语言模型产生当前语料库的概率变得最大。它倾向于合并那些内部凝聚力更强的字符组合。
  • 应用模型: BERT, DistilBERT, Electra。
  • 特点: WordPiece在切分时,通常会在单词的非起始部分子词前加上特殊符号(如##),例如 “tokenization” 可能会被切分为 ("token", "##ization")。

主要区别总结:

特性BPE (Byte Pair Encoding)WordPiece
合并决策标准频率驱动:合并出现次数最多的相邻子词对。似然驱动:合并能最大化提升语料库语言模型似然的子词对。
理论基础数据压缩算法,简单高效。概率语言模型,理论上更优。
应用代表GPT, Llama, RoBERTaBERT, T5