公司动态

概率剪刀手:Unigram 如何从海量碎片中“剪”出大模型的最优词表

📅 2026/7/23 11:47:23
概率剪刀手:Unigram 如何从海量碎片中“剪”出大模型的最优词表
Unigram 语言模型分词Unigram Language Model Tokenization是 SentencePiece 库中除 BPE 之外的另一核心算法也是当前大模型分词的另一大流派。与 BPE 的自底向上合并不同Unigram 采用自顶向下的概率剪枝策略从庞大候选词表中逐步剔除“不重要”的子词最终得到一个兼顾效率与概率最优的词表。以下从原理、训练、编码、优化、对比到实际应用深入拆解 Unigram 方法。1. 从 BPE 到 Unigram统计频率 vs. 概率建模BPE 是纯频率驱动每次贪婪地合并最频繁的相邻符号对没有对“分割质量”建立明确的全局目标。这可能导致并非最优的分割例如把 “unrelated” 切成u n related。Unigram 则绕开了这种局部贪心转而采用全概率框架假设每个子词的出现是独立的即 Unigram 假设文本由一串子词序列生成对一个单词或整段文本而言其概率等于所有可能子词分割路径的概率之和边缘似然。训练目标寻找一个词表以及每个子词的概率使得训练语料的似然函数最大化同时满足词表大小限制。这种方法让每个分割决策都受全局概率指导不仅可以给出“最优分割”还能实现子词正则化Subword Regularization即对同一文本随机采样不同的子词序列极大提升模型鲁棒性。2. 核心算法期望最大化EM与迭代剪枝Unigram 的训练是一个逐步瘦身的过程步骤概览如下构建初始超大词表通常从语料中抽取所有出现的字符并枚举所有长度不超过某个阈值如 16的频繁子串或直接使用 BPE 产生的较高合并次数词表作为种子。这个初始词表往往远大于目标词表例如几十万甚至上百万。初始化概率一般采用启发式方法比如用子词频率除以总频率或均匀赋值然后进入 EM 迭代。E 步Expectation计算期望计数对语料中每个单词附带其频次利用动态规划计算该单词所有可能分割的路径概率总和得到每个子词在该词内的后验概率即该子词出现在最优/所有分割中的概率。累加每个子词的期望出现次数单词频次 × 后验概率 × 该子词在路径中的出现次数。这一步充分利用 Unigram 假设通过前向-后向算法高效完成复杂度随词长线性增长。M 步Maximization更新子词概率将每个子词的期望计数除以所有子词的总期望计数得到新的概率值这一步骤保证整个词表概率和为 1。计算损失并剪枝对于词表中的每个子词计算将其移除后的损失增益Loss Reduction。具体来说比较当前带有该子词的全概率模型与去掉它并将受影响的分割重新用剩余子词表示后的模型对数似然差异。某个子词的 loss reduction 越小说明它对似然贡献越小越可以被安全删去。按照 loss reduction 排序一次性删除比例如 20%最低贡献的子词。重复 EM 与剪枝剪枝后词表缩小再用剩余子词继续 EM 迭代并再次评估 loss reduction直到词表收缩到预设大小如 32,000。最后保留此时的子词及它们的概率。这一系列操作始终保持似然函数在受控下降范围内最大化使得最终词表里的每个子词都是“概率刚需”。3. 编码阶段Viterbi 解码与子词正则化有了训练好的词表和子词概率对一段新文本进行分词时最优分割Viterbi 算法将文本看成以字符为节点的有向图每条边代表一个子词从字符 i 到 j 的切片边权重为-log p(subword)。用动态规划找出总代价最小的路径即概率最大的子词序列。这是确定性的默认行为。子词正则化Subword Regularization训练时对同一文本按分割概率分布进行采样而非固定使用最优路径。具体做法是在动态规划时进行随机游走如根据后验概率选择边。这相当于一种数据增强让模型看到多种合理的子词组合显著提升对噪声、拼写错误及未登录词汇的泛化能力。XLNet、T5 等模型的成功部分归因于这种正则化。4. 一个直观的例子假设语料仅包含单词 “unhappiness” 频次 3单词 “unhappy” 频次 4。初始词表极大包含[un, h, a, p, i, n, e, s, y, unh, hap, pp, ...]等。EM 迭代会根据“unhappiness”的所有可能分割如un hap pi ness或un h a ...等动态调整概率。概率高的分割会在计数中占更大比重进而使un、ness、happy等有意义的子词概率上升。剪枝阶段比如hap如果存在于词表中但其 loss reduction 很低因为happy整体概率更高且能覆盖就会被淘汰而ness因为出现在 “unhappiness” 的唯一合理分割中贡献大得以保留。最终词表可能稳定为[un, happ, i, ness, y]之类并能把 “unhappiness” 最优切分为un happ i ness。这种概率权衡使得 Unigram 能自然捕捉词根词缀且避免像 BPE 那样过早合并不合理的子词。5. 关键参数与训练技巧目标词表大小通常是 8,000~64,000对多语言模型建议更大。初始词表构建常见方法有全字符 所有频繁子串或基于 BPE 生成一个较大的种子词表。SentencePiece 默认使用 BPE 种子 扩展的字符 n-gram。剪枝比例每次迭代删除多少子词典型值为 20%。激进剪枝会更快但可能丢失有用单元。EM 迭代次数剪枝后通常重新进行若干轮 EM比如 5~10 轮让概率重新稳定。字符覆盖率character coverage必须保证所有字符都在词表中否则会出现 OOV。通常将基础 Unicode 字符集预纳入词表。Byte fallback与 SentencePiece 结合时可启用 byte fallback将未识别的字符回退到 UTF-8 字节编码达到彻底零 OOV。6. Unigram 的优缺点优点全局概率最优整个词表和概率是统一优化出来的分割更符合统计规律避免了局部贪心的副作用。子词正则化天然支持采样多种分割可显著增强模型的鲁棒性和对低资源语言的泛化能力。灵活的粒度由于基于概率而非固定合并规则可以对不同词给出不同粒度的分割高频词倾向保持完整低频词切得更细。语言无关SentencePiece 实现将空格视为普通字符无需预分词适合所有语言。缺点训练成本高需维护超大初始词表并进行多轮 EM 剪枝时间和内存开销远超 BPE。对初始词表敏感如果初始种子不包含某些重要子串后续剪枝无法恢复最终词表可能次优。分割稳定性差概率训练中的随机性可能导致不同运行结果有微小差异采样模式也引入非确定性。可能过度切分高频词为了整体似然有时一些高频短词也会被切开而不像 BPE 那样绝对保持完整。7. 与其他主流分词方法的对比方法原理训练方向解码策略正则化代表应用BPE迭代合并高频相邻对自底向上固定规则需额外机制BPE-DropoutGPT-1/2部分RoBERTaWordPiece按语言模型概率增益合并自底向上最长匹配无确定性BERT, DistilBERTUnigram最大化语料似然剪枝低贡献子词自顶向下Viterbi 最优或概率采样原生支持Subword RegularizationXLNet, T5, ALBERT, DeBERTaV3注意LLaMA 系列使用的是 SentencePiece BPE byte fallback并非 Unigram。但 SentencePiece 库本身同时实现了 BPE 和 Unigram且 Unigram 是它的默认分词模式。8. 典型应用与变体SentencePiece UnigramGoogle 的 SentencePiece 对 Unigram 进行了工程优化包括用内存高效的 lattice 表示所有分割、加速 EM、集成 byte fallback 及 NFKC 归一化。它被 T5、XLNet、ALBERT、T5、Flan-T5 等模型直接使用。Unigram 与 BPE 混合一些工作尝试先 BPE 后 Unigram 剪枝或结合两种策略以兼具速度与质量。多语言扩展Unigram 在多语言模型中表现突出因为概率建模能更好地共享跨语言子词减少词表膨胀。9. 总结Unigram 分词方法将词表构建转化为一个概率模型的训练与压缩问题。它从海量子词候选中通过 EM 算法学习概率分布再利用损失驱动的剪枝留下最小必要单元最终得到一部“概率词典”。在推理时不仅可以给出最优分割还能按概率采样不同分割实现优雅的子词正则化。这使得它在许多注重鲁棒性和多语言能力的模型中成为首选并和 BPE 一起构成了当代大模型分词技术的两大基石。