M5-006M5: NLP & Large Language ModelsTokenization (BPE / WordPiece / Unigram)Hard
Mastery:

Tokenization (BPE / WordPiece / Unigram): 解释词表扩展(vocabulary expansion)的做法与注意点。

📐 Mathematical Definition
enew∼N(μold,σold);then continue pretraining with lower lre_{\text{new}}\sim\mathcal{N}(\mu_{\text{old}},\sigma_{\text{old}});\qquad \text{then continue pretraining with lower lr}
⚡ Executive Summary
Core Concept: 为新语言/领域追加 token 并初始化其 embedding,再继续训练;注意初始化方式、学习率与对原能力的保护。

📌 Key Takeaways

  • •
    追加 token → 扩展 embedding 与输出层 → 初始化新行 → 继续预训练
  • •
    新 token 的 embedding 常用旧 token 的均值/同方差采样初始化
  • •
    注意:原 token 的分词分布会变化(需重新适配)

📐 Mathematical Derivations

数学机理:<strong>动机</strong>——原 tokenizer 对目标语言/领域效率低(fertility 高);扩展词表可 (a) 降低 token 数(省推理成本)、(b) 提升上下文有效容量、(c) 让模型更高效地学习该语言/领域。<strong>做法</strong>:(1) <strong>训练新 tokenizer 或增量合并</strong>——在目标语料上训练一个 tokenizer,或把新子词并入原词表(保持原 token 的 id 不变,新 token 追加在后);(2) <strong>扩展参数矩阵</strong>——把输入 embedding 矩阵 E∈ℝ^{V×d} 扩展为 E'∈ℝ^{(V+K)×d},输出层同理(若 tied 则一起扩展);(3) <strong>初始化新行</strong>——常用 (a) <strong>均值初始化</strong>(新 token 的向量 = 原词表 embedding 的均值)、(b) <strong>同分布采样</strong>(从原 embedding 的均值与方差采样),避免用随机初始化(会引入分布外的大梯度);(4) <strong>继续预训练(continued pretraining)</strong>——用目标语言/领域语料继续训练,学习率<strong>较小</strong>(如原预训练 lr 的 1/10),步数视数据量而定;可只训练 embedding 与输出层(冻结其余)或全参数微调。<strong>注意点</strong>:(a) <strong>原 token 的分布变化</strong>——新词表改变了分词方式,原语言的文本也会被切成不同的 token 序列(虽然原 token id 未变),故模型需'重新适应'新分词分布;(b) <strong>原能力的保护</strong>——继续预训练可能导致<strong>灾难性遗忘</strong>,故常混合原语言数据(如 10%~30%)以保持原能力;(c) <strong>输出层与 tied embedding</strong>——若 tied,扩展需同步(否则输入输出不一致);(d) <strong>位置编码与上下文</strong>——扩展词表不改变最大长度,但'每 token 字节数'变化会影响有效容量。<strong>效果</strong>——对低资源语言/新领域,词表扩展通常比'不改词表直接继续训练'更高效(序列更短、学习更快)。

🏭 Production Trade-offs

深度剖析与工程权衡:① <strong>'新 token 的初始化'是关键细节</strong>——用随机初始化会让新 token 在训练初期产生异常大的梯度(因为其 embedding 远离训练分布),可能破坏模型;均值/同分布初始化使新 token 从'合理的起点'开始学习。② <strong>词表扩展 vs 从头训练 tokenizer</strong>——扩展保留原模型能力(推荐);从头换 tokenizer 等于'重训整个模型'(不现实)。故实践中'扩展'是主流。③ <strong>与 LoRA/PEFT 的组合</strong>——若只想加新语言能力,可'扩展词表 + 继续训练 embedding + LoRA 微调其余层';这比全参数继续预训练便宜得多。④ <strong>对原语言的性能影响</strong>——扩展后原语言的分词会变化(新词表可能改变合并规则);若新词表是在'原语料 + 新语料'上重训的,可能损害原语言的压缩率;故常采用'<strong>增量合并</strong>'(保留原合并规则、只追加新 token)以最小化影响。⑤ <strong>评估方式</strong>——需分别测 (a) 目标语言的 token 效率(fertility/压缩率)、(b) 目标语言的任务指标、(c) <strong>原语言的任务指标</strong>(确保未遗忘);三者缺一不可。⑥ <strong>面试要点</strong>——被问'如何让模型支持新语言',应给出'<strong>扩展词表(增量合并 + 均值初始化)+ 继续预训练(小 lr + 混合原语料)+ 评估双向指标</strong>'的流程,并说明'均值初始化'与'灾难性遗忘防护'两个关键点;这是'工程落地'类问题的高分回答。
⚠️ Common Interview Pitfalls
  • ✕
    用随机初始化新 token 的 embedding
  • ✕
    继续预训练时不混合原语料(导致遗忘)
🎯 Interviewer Follow-ups
  • ?
    为什么新 token 要用均值初始化?
  • ?
    词表扩展对原能力有什么风险?
📚

Associated Knowledge Base Guides & Mindmaps

Explore the comprehensive technical article, exam cards, and global architecture tree.

← PreviousM5-005: Tokenization (BPE / WordPiece / Unigram): 解释分词对多语言与代码的影响与常见问题。📋Back to BankNext →M5-007: Pretraining Objectives & Data Curation: 解释因果语言建模(CLM)与掩码语言建模(MLM)的差异。