WordPiece:当分词学会用“概率增益”雕刻语言

📅 2026/7/23 11:42:01
WordPiece:当分词学会用“概率增益”雕刻语言
1. 从 BPE 到 WordPiece为什么需要“更聪明”的合并BPE 的核心是频率哪一对相邻符号出现次数多就合并哪一对。这非常简单但也有盲区。例如语料中 “un” 和 “able” 经常一起出现但它们各自也可能是更常见的独立单元。仅仅依靠频次合并容易产生一些“高频但无意义”的组合比如把 “th” 和 “e” 合并成 “the” 是有意义的但某些语言中会把虚词粘连在一起。WordPiece 的提出正是为了解决这一问题。它保留 BPE 的自底向上合并框架但改变了选择合并哪一对的标准不再看这对符号出现多少频次而是看合并后能多大程度提高训练语料在语言模型下的概率。这个标准被称为似然增益 (likelihood gain)。这使得合并更具语言学合理性优先形成能够提升整体数据似然的子词单元。2. 算法原理最大化语言模型的似然增益3. 详细步骤与公式WordPiece 的训练过程与 BPE 非常相似但在合并选择上采用了“评分函数”。3.1 训练流程初始化词表与 BPE 类似将训练文本按字符切分并在每个单词的开头保留原始字符在单词内部的字符前添加特殊前缀##例如 “word” 变为w ##o ##r ##d。这使得词表能区分“词首子词”和“非词首子词”。构建基础词表包含所有可能出现的单个字符如a,b,##c等以及一些特殊 token[CLS],[SEP],[UNK]。迭代合并遍历词表中所有相邻符号对 (a,b)(a,b)计算合并后的似然增益或代用分数。选择得分最高的对将它们合并成新符号并加入词表。例如合并(a, ##b)→##b实际上会变成ab或带前缀的形式。更新语料中所有该对的出现重复直到词表达目标大小。关键区别在于评分函数。常见公式来自 TensorFlow Text 实现为其中 freq(a,b)) 是 a 和 b 相邻出现的次数freq(a) 和 freq(b) 是各自独立出现的总次数。这个公式实际上是点间互信息 (PMI)的变体。选择分数最高的对进行合并意味着希望合并那些“经常在一起且各自不太常见”的符号从而最大化似然提升。这比单纯频率更合理。3.2 编码阶段分词时WordPiece 采用最长匹配 (longest match first)策略对于给定的预分词单词从词首开始找出词表中最长的子词匹配。如果是词首子词不加##如果是词中或词尾子词前应带有##。例如词 “unaffable”词表包含[un, ##aff, ##able]则分词为un##aff##able。如果无法完全匹配剩余字符无法在任何子词找到会回退到[UNK]通常通过足够大的字符覆盖避免。这种确定性最长匹配使推理速度很快但牺牲了类似 Unigram 的概率采样多样性。4. 一个具体的训练例子假设微型语料经过预分词和频次统计low : 5 → l o w lower : 2 → l o w e r newest : 6 → n e w e s t widest : 3 → w i d e s t初始化每个词拆分为字符并给词首后的字符加##low : l ##o ##w lower : l ##o ##w ##e ##r newest : n ##e ##w ##e ##s ##t widest : w ##i ##d ##e ##s ##t此时词表包含l, ##o, ##w, ##e, ##r, n, ##s, ##t, w, ##i, ##d等。第一轮评分计算所有相邻对的 score使用 PMI 变体。其中(##e, ##s)在 “newest” 和 “widest” 中频繁相邻出现且##e和##s各自独立出现频率适中因此 score 可能较高。而(l, ##o)虽然频次高7次但l和##o各自出现也很多l还出现在别处这里仅此词出现所以可能也比较高。具体取决于分布。假设(##e, ##s)得分最高合并为##es。更新newest变为n ##e ##w ##es ##twidest变为w ##i ##d ##es ##t。词表新增##es。继续现在(##es, ##t)可能得分很高合并为##est。最终形成类似low,##er,##est等有意义的词干和词缀。注意WordPiece 可能会因为 PMI 准则避免合并一些高频但不具信息量的对而更倾向合并如(##e, ##r)→##er这样的后缀。5. 优缺点分析优点语言学更合理的子词基于似然增益的合并倾向于形成有意义的词素前缀、后缀、词根而非纯统计粘连。词表利用率高同等大小词表下WordPiece 通常能覆盖更多罕见词的合理切分OOV 率极低。推理速度快最长匹配分词是确定性的无需动态规划或采样适合高效部署。对预分词友好与 BPE 一样可采用预分词处理西方语言时效率高。缺点训练计算成本略高需要为每个候选对计算得分虽然可实现为近似但比 BPE 的纯频次统计稍复杂。无法进行子词正则化分词是确定的无法像 Unigram 那样在训练时对同一文本提供多种分割来增强鲁棒性除非后处理添加 BPE-Dropout 类似机制。对非空格语言需要特殊处理与 BPE 相似WordPiece 本身依赖预分词空格切分用于中文、日语等需额外分词或使用 SentencePiece 的变体如 BERT 中文版实际是字粒度或由其他分词器处理。初始词表敏感与 BPE 一样如果初始字符集不完整会产生[UNK]。6. 与其他子词分词方法的对比方法合并/剪枝准则训练方向推理方式正则化典型应用BPE相邻对频率自底向上合并按合并优先级应用需 BPE-DropoutGPT-1/2, RoBERTaWordPiece似然增益 / PMI自底向上合并最长匹配无原生支持BERT, DistilBERT, ElectraUnigram损失减少剪枝自顶向下剪枝Viterbi 或采样原生子词正则化XLNet, T5, ALBERT注BERT 使用的是 WordPiece但原始论文中词表大小 30k。TensorFlow Text 提供了高效 WordPiece 实现。现代很多框架使用 SentencePiece 实现 BPE 或 Unigram而 WordPiece 则常见于 HuggingFace Tokenizers 的 BERT 系列分词器。7. 应用场景BERT 及其变体BERT-Base、BERT-Large、DistilBERT、Electra、DeBERTa早期版本等均使用 WordPiece。Google 的早期 NMT 系统如 GNMT 曾探索 WordPiece。多语言模型如 multilingual BERT 使用 WordPiece 并在 104 种语言上训练词表大小 110k。