从本篇博文开始总结
概率语言模型
(Statistical Language Model)
例如:
- 输入法:
P (隔壁老王) >P (隔壁老张) - 机器翻译:
I have a dream
P (我有个梦想) >P (我有只梦想) - 语音识别:
P (我向你汇报) >P (我象你汇报)
核心:所以语言模型一般指的是概率语言模型,通过分数来告诉机器怎么说人话。
N-gram 语言模型
计算
利用链式法则:
可得:
马尔可夫
- “无记忆性”: 未来的事件,只取决于有限的历史。
基于马尔科夫假设计算
我们以
显然引入马尔科夫假设,会使得模型变得简单,参数个数减少。
语言模型的评价
Perplexity
测试集的能力
语言模型 ⬆->
理解
Perplexity
−log2p(vi) :如果用概率p 来编码vi ,需要多少比特。−∑|V|i=1p̂ (vi)log2q(vi) :表示vi 服从p ,q 来编码vi 比特数的期望。-
2−1n∑Ni=1log2q(wi) ,Wtest 的等效状态数目。
OOV(Out of Vocab)
以
那么有人可能要问:为什么上面公式成立?
下面我们以上面这个训练集为例,利用最大似然估计 的方法来证明上式成立。
我们以首字符举例
约束条件:
由拉格朗日乘子法:
L对参数的导数等于零:
得:
可计算得出:
假设我们现在由训练集得出一个模型
按照上面的计算公式
同理:
那么如何解决
假设
Training Set 中出现了|V′| 个不同的词汇,那么我们根据词频选择词频最高的|V| 个词汇作为我们的词汇集V 。在
Training 和Testing 中,将不属于V 的词汇都替换成特殊词汇UNK 。
平滑方法
共有以下几种方法解决:
- +1 平滑
-
Back−off 回退法 -
Interpolate 插值法 -
Absolute Discount -
Kneser−Ney Smoothing -
Modified Kneser−Ney Smoothing (最优的方法)
+1 平滑
该平滑方法在别的分类问题中可能有用,但是在语言模型中表现一般,基本上不用。
Back−off
回退法
使用
因为之前已经解决了
Interpolate 插值法
将
这里面的参数如何得出?同理使用极大似然估计得:
更进一步:
根据不同的上下文,选择不同的参数。显然这样处理
Absolute Discounting “绝对折扣”
Kneser-Ney Smoothing
有钱的,每个人固定的税 D, 建立一个基金;没钱的,根据
Modified Kneser-Ney Smoothing
有钱的,每个人根据自己的收入交不同的税D, 类似于阶梯税,建立一个基金;没钱的,根据