所属模块:
M5 · NLP 与大语言模型 (NLP & Large Language Models)| 专题分类:Tokenization (Tokenization (BPE / WordPiece / Unigram))| 难度等级:Easy
一、核心一句话结论 (One-Sentence Summary)
从字符开始,反复合并最高频的相邻符号对,直到达到目标词表;兼顾高频词整体化与未登录词可分解。
Byte-Pair Encoding (BPE) iteratively merges the most frequent pairs of adjacent characters or subwords to construct a fixed-size subword vocabulary, eliminating out-of-vocabulary words while balancing sequence length and vocabulary size.
二、核心考点要义 (Key Insights)
- 📌 从字符(或字节)起步,每步贪心合并最高频的相邻对
- 📌 合并次数 = 目标词表大小 − 初始符号数
- 📌 高频词被合并为整体 token,罕见词被拆成子词
English Insights:
– Algorithmic process: begins with individual characters (or bytes); iteratively counts co-occurrences of all adjacent token pairs and merges the most frequent pair until reaching target vocabulary size $V$
– Elimination of OOV: byte-level BPE (BBPE) represents any arbitrary UTF-8 byte stream, guaranteeing zero Out-Of-Vocabulary (OOV) tokens
– Optimal compression: balances token sequence length against vocabulary embedding parameters, outperforming pure character or whole-word tokenization
三、核心数学原理与机理推导 (Mathematical Principles & Derivation)
$$text{merge}^*=argmax_{(a,b)} mathrm{count}(a,b);qquad text{vocab grows by 1 per merge}$$
数学机理:BPE(Byte-Pair Encoding) 原本是数据压缩算法,被 Sennrich 等(2016)引入 NLP 分词。训练流程:(1) 把语料初始化为字符序列(或字节序列);(2) 统计所有相邻符号对的频次,选择频次最高的一对 (a,b) 合并为新符号 ab;(3) 重复 (2),直到词表达到目标大小 V(或合并次数用尽)。核心性质:(a) 贪心——每步只做局部最优合并,不保证全局最优分词(这是它的局限,也是 Unigram 语言模型方法出现的动机);(b) 确定性与可逆——训练得到的合并规则(有序列表)确定性地定义了分词过程(推理时按合并顺序依次应用),且分词结果可无损还原原文;(c) 子词共享——高频词(如 the、ing)被合并为整体 token,罕见词被拆成子词组合,从而兼顾词表效率与未登录词(OOV)覆盖——任何字符串都可被分解为已知子词,故 OOV 问题被消除(这是相对词级分词的关键优势)。为什么被广泛使用:(a) 消除 OOV、词表可控(固定 V);(b) 子词单元在’字符级(序列过长)’与’词级(词表爆炸)’之间取得平衡;(c) 实现简单、速度快(可用并行统计加速);(d) 与字节级结合(BBPE,GPT-2 起广泛使用)后,可无损编码任意 Unicode 文本(包括 emoji、罕见字符、代码),彻底解决’字符集覆盖’问题。
📖 查看英文严格数学推导 (English Mathematical Derivation)
Mathematical Mechanism: 1. Training Phase: – Input corpus $mathcal{D}$, initialize vocabulary $mathcal{V}_0 = Sigma$ (all unique characters or 256 raw bytes). – In iteration $k$, scan the corpus to compute co-occurrence frequencies for all adjacent pairs $(t_i, t_j) in mathcal{V}_{k-1} times mathcal{V}_{k-1}$: $$(t_a, t_b) = argmax_{(t_i, t_j)} text{Freq}(t_i, t_j)$$ – Create a new token $t_{text{new}} = t_a circ t_b$, set $mathcal{V}_k = mathcal{V}_{k-1} cup {t_{text{new}}}$, and replace all occurrences of $(t_a, t_b)$ with $t_{text{new}}$ in $mathcal{D}$. – Repeat for $K = V – |Sigma|$ merge steps. 2. Tokenization (Inference) Phase: Given a new word $w$: – Decompose $w$ into characters/bytes. – Iterate through learned merge rules in the exact priority order they were trained, merging adjacent subwords until no further rules apply. 3. Byte-Level BPE (BBPE): Operates on UTF-8 raw bytes (GPT-2, LLaMA). Base vocabulary has $|Sigma| = 256$. Any Unicode text is losslessly converted into bytes, preventing any OOV token.
四、工业级落地权衡与工程考量 (Industrial Trade-offs)
深度剖析与工程权衡:① 字节级 BPE(BBPE)的关键意义——先在 UTF-8 字节层面做 BPE(初始符号 256 个字节);这使词表天然覆盖任意文本(因为任何字符都是字节序列),且不同语言/emoji/代码共享字节表示。代价是’一个非 ASCII 字符需多个字节’(如中文一字常 3 字节),故多语言/中文的 token 效率低(同一段中文需更多 token)。② 词表大小与序列长度的权衡——V 越大则序列越短(推理成本低)但 embedding 与 softmax 参数越多(V×d,可能占大量参数);V 越小则序列越长(推理成本高)。这是’参数 vs 计算’的经典权衡(见下一题)。③ 贪心合并的局限——BPE 的贪心性可能产生’次优’的分词(如把高频但语义不相关的组合合并);Unigram 用概率模型 + EM 优化,理论上更优但更慢。④ 压缩率指标——用’每 token 平均字节数’或’fertility(每词 token 数)’衡量 tokenizer 效率;中文/日文/韩文的 fertility 显著高于英文(同义内容需更多 token),这直接影响推理成本与上下文有效长度(对多语言公平性有影响)。⑤ 与下游任务的关系——分词影响 (a) 算术能力(数字被切成不规则 token,损害数位对齐)、(b) 代码(缩进与符号)、(c) 形态丰富的语言(黏着语);故有’按数字切分’、’代码专用 tokenizer’等改进。⑥ 面试要点——被问’BPE 是什么’,应给出’从字符/字节起、反复合并最高频相邻对、直到 V‘与’消除 OOV + 词表可控 + 子词平衡‘;能指出’BBPE 覆盖任意文本但中文效率低’是深度理解的标志。
⚙️ 查看英文落地权衡分析 (English Systems & Trade-offs)
Deep Dive & Engineering Trade-offs: ① Deterministic Greedy Nature: Standard BPE tokenization is a deterministic greedy algorithm; it does not evaluate global probabilistic sentence likelihood (unlike Unigram LM). BPE-Dropout introduces random dropout to merge rules during training, improving model robustness to noisy inputs. ② Pre-tokenization Regex: GPT-4 and LLaMA use regex pre-tokenization rules (e.g., splitting on whitespaces, punctuation, contractions, and digit sequences) before BPE. This prevents numbers from being merged across different digits and stops punctuation from contaminating word stems. ③ Cross-Lingual Fertility Inequality: English words are compressed efficiently ($pprox 1.3$ tokens/word), whereas non-Latin scripts (Chinese, Arabic, Hindi) may require 2-4 tokens per word if the tokenizer pre-training corpus was heavily English-centric. ④ Implementation Speed: Modern tokenizers (HuggingFace `tokenizers`, TikToken) implement BPE in Rust, using Aho-Corasick or prefix-trie lookup to tokenize millions of tokens per second. ⑤ Interview Strategy: Write down the greedy pair-merge frequency optimization, contrast byte-level vs character-level bases, and explain why regex pre-tokenization (e.g., isolating digits) is essential.
五、常见面试避坑陷阱 (Common Pitfalls & Traps)
- ⚠️ 以为 BPE 的贪心合并是全局最优
- ⚠️ 忽略字节级 BPE 对中文/多语言的 token 效率影响
English Pitfalls:
– Confusing the training phase (finding frequent pairs globally) with the inference phase (applying ordered merge rules)
– Omitting regex pre-tokenization (causes numbers like ‘123’ and ‘456’ to merge into arbitrary multi-digit tokens)
– Assuming BPE outputs a probabilistic segmentation (standard BPE is strictly deterministic)
六、高频深度面试追问与预测 (Follow-Up Questions)
- BPE 的贪心合并是全局最优吗?
- Why does TikToken use regex pre-tokenization to isolate individual digits and punctuation?
- BPE 与字节级 BPE(BBPE)的关系?
- How does BPE-Dropout regularize subword segmentation during model training?
七、知识图谱对齐 (Knowledge Graph Anchor)
- 🔗 关联底层卡片:
分词算法与原理:BPE 字节对编码、WordPiece、Unigram 与多语言分词(Tokenization Algorithms: BPE, WordPiece & Multilingual Vocab) - 🗺️ 知识图谱模块:
大语言模型全景图谱
🔬 算法科学家与机器学习深度考察全量题库 (Science Depth)
本题收录于 TalentMe 算法科学家深度考察真题库 (Science Depth)。全库共 856 道硬核考点,深度覆盖数学统计、经典ML、深度学习、Transformer、大语言模型、多模态、推荐系统与 MLOps。支持 Jev 面经智能匹配、一键离线单文件 HTML 手册导出并直连 Obsidian 本地记忆。