BPE(Byte Pair Encoding)
BPELLM 分词器的基石算法
亦作、亦称:Byte Pair Encoding · 字节对编码 · 子词分词
BPE(Byte Pair Encoding,字节对编码)是 GPT、LLaMA、Mistral 等主流大语言模型分词器的事实标准算法。它最初是 1994 年 Philip Gage 提出的数据压缩算法,2016 年由 Sennrich 等人改造为子词分词方法引入 NLP。
核心思想是在词级与字符级之间取得平衡——高频词保留为完整 token,罕见词拆成有意义的子词(如 unbelievable → un+believ+able),既控制词表规模,又保留语义。分词方式直接决定 LLM 的多语言效率、上下文利用率与推理成本。
发展历程
BPE 的发展经历了两个阶段。压缩算法阶段(1994-2015):Philip Gage 于 1994 年发表 BPE 算法,用于文本数据压缩。算法核心是迭代合并最高频字节对,通过查找表实现压缩和解压。这一时期 BPE 主要用于 Unix 系统的 compress 命令等工具。
NLP 分词阶段(2016-至今):Sennrich et al.(2016)将 BPE 改造为子词分词方法,应用于神经机器翻译。关键创新是将 BPE 从字节级提升到 token 级,合并规则从字节对变为 token 对。
2018 年 Google 的 WordPiece(BPE 的变体,使用似然而非频率指导合并)随 BERT 发布。2019 年 SentencePiece 提供语言无关的分词框架,支持 BPE 和 Unigram 两种算法,被 LLaMA、T5 等模型采用。
2024 年 OpenAI 发布 tiktoken 库和 o200k 分词器,针对多语言和代码做了专门优化。截至 2026 年,BPE 及其变体是 LLM 分词器的主流选择,词表大小从 32K(LLaMA 2)到 200K(GPT-4o)。
算法原理
BPE 的训练算法分为三步:
- 初始化:将语料中每个字符作为独立 token,构建初始词表(通常 256 个字节)。
- 频率统计:遍历语料,统计所有相邻 token 对的出现频率。
- 合并与迭代:找到频率最高的 token 对,合并为新 token 加入词表,将语料中所有该 pair 替换为新 token。重复步骤 2-3 直到词表达到目标大小。BPE 的变体包括:WordPiece(Google)——使用训练数据似然(而非频率)选择合并对,对低频 pair 更保守;Unigram(Kudo, 2018)——从大词表开始,迭代删除使训练数据似然下降最小的 token,直到达到目标大小,支持多种分词粒度;SentencePiece——在原始字节(而非字符)上运行 BPE/Unigram,实现语言无关的分词,特别适合中日韩等无空格语言。
对 LLM 的影响
分词器是 LLM 处理文本的第一道工序,决定了模型如何「看见」语言。BPE 的选择对 LLM 有三个关键影响:
- 上下文窗口利用率:同一文本在不同分词器下的 token 数量差异可达 2-3 倍。例如「unbelievable」在字符级需要 12 个 token,在 BPE 子词级只需 3 个(un+believ+able)。128K 上下文窗口在不同分词器下能容纳的实际内容量差异巨大。
- 多语言能力:为英文优化的 BPE 分词器处理中文时可能需要 3-5 倍的 token 数量。GPT-4 的 o200k 分词器针对中文做了专门优化,将中文 token 效率提升约 40%。
- 推理成本:API 按 token 计费,分词效率低意味着同样的内容要付更多钱。分词器还影响模型对词义的理解——子词级分词保留了有意义的语义单元(如「un」表示否定),比字符级分词提供更丰富的语义信息。
常见误解
日常交流中容易听到的简化说法,未必准确,但能帮助理解误解从何而来。
- 「LLM 分词器的基石算法」
- 「从压缩算法到 NLP 基础设施」
相关术语
和本术语关联紧密的其他词条,便于串联理解。
🎯 考点练习
含该术语的高频面试题,含标准答案与追问。
- 中级概念查看详解 →
子词分词:BPE、WordPiece、Unigram 有什么区别?
BPE 按频率自底向上合并、WordPiece 按似然增益合并(BERT)、Unigram 概率化自顶向下裁剪(SentencePiece)。
- 高级概念查看详解 →
决策树如何用于自然语言处理任务?
NLP 中常先把文本转为 [TF-IDF](/glossary/tf-idf) 或 n-gram 稀疏向量,再用决策树做情感分类、主题分类、意图识别等。树模型可解释性强,但对高维稀疏文本易过拟合,实践中多与随机森林、XGBoost 或线性模型配合。
- 高级概念查看详解 →
朴素贝叶斯分类器如何用于自然语言处理?
朴素贝叶斯用贝叶斯定理 + 特征条件独立假设做文本分类:用训练集估计 $P(c|w_1...w_n) \propto P(c)\prod P(w_i|c)$。Multinomial NB 配合词频/TF-IDF 广泛用于垃圾邮件过滤与短文本分类,小数据上极快且稳健。
- 高级概念查看详解 →
词性标注(POS)在 NLP 中有何意义?
[词性标注(POS)](/glossary/part-of-speech-tagging) 为每个词分配语法类别(名词、动词等),是句法分析、信息抽取和机器翻译的基础预处理。它能消歧(「Time flies」),并为依存解析提供语言学先验。
延伸阅读
从知识库精选 1 篇文章,帮助深入理解该术语。
外部参考
维基百科:查看「BPE」词条本页内容为本站原创撰写;维基百科链接仅作延伸参考。
