N-gram 语言模型与平滑技术
分类: 概率模型 · 难度: 中级 · 关联讲座: L01
N-gram 语言模型是最早的实用语言模型之一,通过统计词序列的共现频率来估计自然语言的概率分布。尽管其假设简单(仅依赖前 n−1 个词),但配合精心设计的平滑技术(特别是 Kneser-Ney 平滑),N-gram 模型在统计 NLP 时代长期作为语言建模的标准方法,其核心思想——用局部上下文预测下一个词——至今仍是现代语言模型的基础范式。
📐 N-gram 语言模型与平滑技术
MLE 估计(最大似然):
PMLE(wt∣wt−n+1,…,wt−1)=C(wt−n+1,…,wt−1)C(wt−n+1,…,wt)
零概率问题:语料中未见过的 n-gram 组合,MLE 给出概率 0——这意味着任何含未见 n-gram 的句子概率为 0。
Add-k 平滑(Laplace 平滑的推广):
Padd-k(w∣h)=C(h)+k∣V∣C(h,w)+k
- k=1:Laplace 平滑(过度平滑,性能差)
- k<1:Lidstone 平滑(如 k=0.01)
Kneser-Ney 平滑(实践中最优):
PKN(w∣wi−1)=C(wi−1)max(C(wi−1,w)−d,0)+λ(wi−1)⋅Pcontinuation(w)
- d≈0.75:折扣参数(从高频 n-gram 借概率给低频)
- Pcontinuation(w)=∣{(v′,w′):C(v′,w′)>0}∣∣{v:C(v,w)>0}∣
直觉:Kneser-Ney 的关键洞察是,一个词的”平滑概率”不应该只看它出现多少次,而是看它在多少种不同上下文中出现过。“Francisco” 出现频率高,但几乎只跟在 “San” 后面——作为新上下文的续词,它不应获得高概率。
🔢 数值/具体示例
TF-IDF 用于信息检索的词重要性打分:
TF-IDF(t,d,D)=词频 TF∑t′ft′,dft,d×逆文档频率 IDFlog∣{d∈D:t∈d}∣∣D∣
例:文档集 ∣D∣=1000,词”the”出现在 999 篇文档中,IDF≈0(无区分力);词”transformer”出现在 10 篇中,IDF≈4.6(高区分力)。
N-gram 平滑效果对比(Penn Treebank,trigram,perplexity↓更好):
| 方法 | Perplexity |
|---|
| 无平滑 MLE | ∞(遇到未见 trigram 直接崩溃) |
| Add-1 (Laplace) | ~1800(过度平滑) |
| Add-0.01 | ~350 |
| Kneser-Ney | ~130(实践标准) |
⚠️ 常见误区
误区:N-gram 模型只要语料够大就不需要平滑 → 正确:Zipf 定律保证永远有未见过的 n-gram——即使用整个互联网的文本训练 5-gram,仍有大量合理组合从未出现。平滑不是权宜之计,而是数学必需品。
🔗 知识关联
- N-gram → Transformer 语言模型(L04 RNN/L05 Transformer):N-gram 的上下文窗口固定为 n−1 个词;RNN 理论上无限但实际受梯度消失限制;Transformer 通过注意力机制实现真正的全局上下文。