当前位置: 首页 > news >正文

两种子词分词算法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 ( s e g m e n t ) = ∏ P ( t o k e n ) 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. 总结

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

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

http://www.jsqmd.com/news/888244/

相关文章:

  • 2026年热门的苏州工作服/无锡工作服优质供应商推荐 - 品牌宣传支持者
  • 告别串口打印!用JScope的HSS模式实时图形化监控GD32变量(附Keil工程配置)
  • 告别提示词JSON依赖:提升大模型输出稳定性与效率的四种策略
  • Unity-MCP:游戏开发中的智能协作协议栈解析
  • 新手别怕!用51单片机+74HC138/573点亮数码管,保姆级代码与接线指南
  • Unity IL2CPP启动失败与BepInEx注入时机冲突深度解析
  • 观测不同模型在Taotoken平台上的响应速度与可用性状态
  • 别再傻傻分不清!SAP BADI与NEW BADI实战对比:从SE19创建到MIGO增强的完整避坑指南
  • 2026年靠谱的山东大型微波烘干机/小型微波烘干机/微波烘干机厂家选择推荐 - 行业平台推荐
  • Unity+Matlab实现FTP条纹投影三维重建仿真
  • 山东三方共建工业AI实验室:以JBoltAI为底座,实现转型
  • 企业级RAG成本优化实战:三级上下文剪枝流水线构建指南
  • Unity GPU加速Boids群体仿真实战指南
  • 避坑指南:MaAsLin2分析中数据标准化、模型选择与结果解读的常见误区
  • 保姆级教程:在Windows和Linux上搞定Android super.img解包(附simg2img_for_win工具)
  • 如何将影像组学与病理组学特征与胃癌术后复发的“炎症‑耗竭”免疫机制建立关联,并解释其与患者预后及辅助化疗/免疫治疗响应的机制联系
  • 2026年评价高的SUN插装阀集成液压阀组/上海抓斗专用液压阀组实力工厂推荐 - 品牌宣传支持者
  • Excel CLEAN函数:清除不可见控制字符的数据清洗核心技巧
  • 用51单片机和HC-06蓝牙模块,花100块自制一台手机遥控车(附完整代码和接线图)
  • 2026年热门的电伴热带/恒功率电伴热带/自限温电伴热带可靠供应商推荐 - 行业平台推荐
  • Unity GPU性能分析实战:用RenderDoc精准定位Draw Call与Shader瓶颈
  • 2026年热门的山东连续式微波烘干设备/山东真空微波烘干设备/山东大型微波烘干设备/小型微波烘干设备生产厂家推荐 - 行业平台推荐
  • 别再手动整理笔记了!用Obsidian Dataview插件自动生成你的电影库/书单
  • PyGALAX:融合AutoML与XAI的地理加权机器学习实战指南
  • FOREST ANIMALS PACK深度集成指南:动画架构、URP/HDRP适配与生态交互
  • Unity XR中Point Light不生效的原理与三种替代方案
  • 告别硬件IIC:用STM32F407的GPIO模拟IIC读写AT24C02 EEPROM实战
  • ARMv8架构LDTR指令详解与应用实践
  • 量子态层析与量子机器学习的融合技术解析
  • Docker部署MySQL实战:配置、持久化与Compose编排