故事的起点:我们的目标
在 Introduction to NLP 的 n-gram language model 中,bigram 模型把完整历史近似为只看前一个词:
课件中直接给出 MLE 估计:
我们要证明的是:这个 count ratio 不是凭直觉硬写出来的,而是从 maximum likelihood estimation (MLE) 推出来的。
推理过程:把 bigram 估计变成一个条件多项分布问题
第1步:固定前一个词,把问题局部化
先固定前一个词为
在已经看到
的条件下,下一个词是每个 的概率是多少?
定义参数:
对同一个前词
逻辑:我们把整套 bigram 参数拆成很多个独立的小问题。每个前词
第2步:写出训练语料的 likelihood
设训练语料中 bigram
如果
把所有可能后继词的贡献乘起来,得到 likelihood:
逻辑:MLE 的目标是让训练语料最可能出现。出现次数越多的后继词,对 likelihood 的影响越大。
第3步:取 log,把乘法变成加法
直接最大化乘积不方便,所以取 log-likelihood:
因为
逻辑:log 不改变最大值位置,只是让推导从乘法变成加法,方便求导。
第4步:加入概率和为 1 的约束
我们不能随便让每个
用 Lagrange multiplier
逻辑:这一项的作用是强迫参数仍然是一组合法概率。没有这个约束,likelihood 会倾向于把概率无限推大,问题就不成立。
第5步:对每个参数求偏导
对每个
因此:
整理得到:
逻辑:最优解里,每个词的概率
第6步:用归一化约束求出
把
所以:
而
因此:
逻辑:
第7步:得到最终 MLE
代回
也就是:
把
总结:公式的逻辑链条
- 固定前词
:把 bigram estimation 拆成“给定 后,下一个词的分布”。 - 写 likelihood:每个观察到的 bigram
贡献一次 。 - 取 log-likelihood:把乘积转成求和,方便求导。
- 加归一化约束:保证
。 - 求导并归一化:得到概率正比于 count,归一化后就是 count ratio。
所以,bigram MLE 的本质是:
Exam Focus
- 分子
是这个 bigram 出现的次数。 - 分母
是所有以前词 开头的 bigram 总数。 - 分母不是整个语料 token 总数。
- 如果
,MLE 会给 0 概率,这正是后面需要 Laplace smoothing 的原因。