BPE (Byte-Pair Encoding, 字节对编码)Unigram Language Model 是目前大语言模型(LLM)中最主流的两种子词分词算法。它们的核心目标都是将文本拆分成有意义的“子词”,以减少词表大小并处理未登录词(OOV),但它们的底层逻辑、训练方式和分词机制有显著区别。

以下是详细的对比:

1. 核心逻辑区别

特性 BPE (如 Qwen, Llama, GPT-4) Unigram (如 SentencePiece, T5, Gemma)
算法类型 确定性 (Deterministic) 概率性 (Probabilistic)
训练方式 自底向上:从单个字符开始,迭代合并出现频率最高的相邻符号对,直到达到预定词表大小。 自顶向下:先建立一个非常大的候选词表,然后通过迭代删除概率最低的词,直到达到预定词表大小。
分词过程 贪心匹配:在推理时,按照固定规则(优先匹配最长子词)进行分割,结果是唯一确定的。 采样/搜索:在推理时,存在多种可能的分词方案。Unigram 模型会根据概率分布,选择总概率最高的那一种。
唯一性 对于同一段文本,BPE 永远给出相同的结果。 对于同一段文本,Unigram 理论上可以有多种分词方式(虽然实践中通常取最优或采样),这引入了随机性。

2. 具体工作流程详解

BPE 的工作原理 (Qwen, Llama 使用)
  1. 初始化:词表中包含所有单个字符。
  2. 统计:统计语料中所有相邻字符对的出现频率。
  3. 合并:找出频率最高的一对字符(例如 “he” 和 “l” 在 “hello” 中频繁一起出现),将它们合并成一个新 token “hell” 加入词表。
  4. 重复:重复步骤2-3,直到词表大小达到预设值(例如 32k tokens)。
  5. 分词:新文本到来时,先拆成字符,然后应用之前学到的合并规则。规则是固定的(例如总是优先合并 “th”)。

优点:逻辑简单,推理速度快(确定性算法)。
缺点:对于低频出现的子词组合,可能不是最优分割(因为它只看频率,不看语言模型概率)。

Unigram 的工作原理 (T5, Gemma 使用)
  1. 初始化:建立一个巨大的候选词表(包含所有出现的子串,比如 256k tokens)。
  2. 评估使用 Unigram 语言模型评估每个 token 的概率 P(t)P(t)P(t)
  3. 删除:移除概率最低的 10%-20% 的 token,保留高频且有意义的词。
  4. 重复:重复删除过程,直到词表大小达标。
  5. 分词
    • 给定一段文本 “hello”,可能存在多种分法:["h", "e", "l", "l", "o"]["he", "l", "lo"]["hel", "lo"] 等。
    • Unigram 模型会计算每种分法下所有 token 概率的乘积 P(segment)=∏P(token)P(segment) = \prod P(token)P(segment)=P(token)
    • 选择概率乘积最大的那种分法作为最终结果。

优点:从语言模型概率角度出发,理论上能更好地捕捉语言结构,处理边界情况更灵活。
缺点:推理过程涉及搜索或采样,计算复杂度略高(尽管现代实现已优化得很快)。

3. 对生成任务的影响(关键差异)

训练阶段,Unigram 通常被认为比 BPE 更优,因为它的概率模型更一致。但在**推理(生成)**阶段,两者差异如下:

  • BPE

    • 分词是确定性的。无论你怎么生成,“hello” 永远被分成 ["he", "llo"](假设这是学到的规则)。
    • 这意味着生成的文本 Token 序列是可预测的。
  • Unigram

    • 分词是基于概率的。在生成过程中,模型可能会“看到”不同的 token 序列。
    • 重要影响:在 Unigram 模型中,生成的长度(Token 数量)会随模型设置变化。如果你增加 max_new_tokens,模型可能会生成更少的实际 Token(因为一个长 token 比多个短 token 概率高),或者反之。这导致 Unigram 模型的“输出长度”不如 BPE 稳定。
    • 注:许多基于 Unigram 的模型(如 T5)在训练时会调整损失函数来缓解这个问题。

4. 谁在用?

  • BPE 阵营

    • Qwen (Qwen2.5, Qwen-VL)
    • Llama (Meta)
    • GPT (OpenAI)
    • Mistral
    • 理由:实现简单,兼容性好,推理速度极快,且在实际大模型训练中表现足够好。
  • Unigram 阵营

    • T5 (Google)
    • Gemma (Google)
    • PaLM (早期版本)
    • SentencePiece 工具包(许多模型用它预处理)
    • 理由:Google 早期研究认为 Unigram 在翻译和跨语言任务上更鲁棒,能更好地处理词汇化边界。

5. 总结

维度 BPE Unigram
简单程度 ⭐⭐⭐ (简单直观) ⭐⭐ (复杂,需概率计算)
推理速度 快 (确定性匹配) 稍慢 (需搜索最优分割)
词表效率 通常更好 (概率驱动)
生成稳定性 高 (Token 序列确定) 较低 (Token 数量可能波动)
主要使用者 Qwen, Llama, GPT, Mistral T5, Gemma, PaLM

结论
如果使用的是 Qwen2.5,你使用的是 BPE。这意味着你的分词规则是固定的,模型将文本切分为子词的方式是确定性的。如果你切换到使用 Unigram 的模型(如 Gemma),你可能会发现同样的输入产生了不同长度的 Token 输出,这是正常现象,由算法本身的概率性质决定。

Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐