两种子词分词算法BPE (Byte-Pair Encoding) 和Unigram 区别

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 输出,这是正常现象,由算法本身的概率性质决定。

相关推荐
he___H1 小时前
leetcode100-普通数组
java·数据结构·算法·leetcode
工业机器人销售服务1 小时前
空调阀板微米级密封涂胶:伯朗特机器人均匀出胶,密封胶层紧实无气泡缺陷
人工智能
guslegend1 小时前
第2节:规范驱动开发SSD,让AI永远在轨道上
人工智能·大模型
Struggle_97551 小时前
算法知识-堆相关知识
java·开发语言·算法
xixixi777772 小时前
算力网络双轮驱动:800G 光模块价格再降、1.6T 商用提速,AI-eSIM 用户破亿重构身份生态
网络·人工智能·ai·大模型·光模块·通信·运营商
数字哨兵(和中)2 小时前
数字底座全面升级,IPv6 与 AI 共筑数字经济新高地
人工智能
李伟_Li慢慢2 小时前
从惯性和矩详解惯性矩
人工智能·算法·机器人
黎阳之光2 小时前
实景三维重构赋能智慧仓储,黎阳之光打造仓库全域透明管控新生态
大数据·人工智能·算法·安全·数字孪生
YUDAMENGNIUBI2 小时前
day31_RNN及其变体
人工智能·rnn·深度学习