虽然之前一直用这个最基本的模型,但今天发现自己对这个模型确实不够熟悉,因此,对此参考了不少文献,以问答的形式进行了整理。
1、
n
-gram 的训练是什么?训练的参数是什么?
对于模型某条字符串的计算公式是:
P(wk1)
=
假设在一个模型里,单词数量为
V
。对于一个
说完了参数,我们说下训练。对于训练集, 我们对以上参数进行最大似然估计(MLE),估计方法如下:
P(wn|wn−11)=C(wn−11wn)∑wC(wn−11w)
,其中C是count的意思。
2、
n
-gram 这里的MLE是怎么得出来的?
统计次数就代表了它的最大似然估计,是因为对于
n
-
x1,x2⋯,xk
是指示变量,当输出的状态为
k
是
pi^=∑txtiN
这也就是刚好是统计次数,count部分。
3、
n
-gram 既然使用了MLE,那能不能引入最大后验估计(MAP)或者贝叶斯估计?
答案是可以的。我们问题1里提到的参数,如果看成是一个随机变量,那么我们可以引入先验分布,使用贝叶斯公式。
p(θ|χ)=p(χ|θ)p(θ)∫p(χ|θ′)p(θ′)dθ′
最大后验估计:
θMAP=argmaxθ∈Θp(χ|θ)p(θ)
贝叶斯估计:
θB=E[θ|χ]
正如问题2所说,
n
-
在狄利克雷先验下的最大后验估计是:
θMAP=argmaxθ∈ΘΓ(∑Kk=1αK)∏Kk=1Γ(αK)∏k=1Kθnk+αk−1k
等价于加m平滑的最大似然估计,先验可以通过大量通用语料训练,然后使用小规模的领域专用数据进行计算贝叶斯最大后验估计。