分子就与我们推理出来的表达式相同,但是多了一个分母P(O|µ),是因为在ξt(i,j)
的定义里,观察序列O属于已知条件,应该放在竖线的右侧,所以除以P(O|µ),根据贝叶斯公式转化得到ξt(i,j)
。
根据ξt(i,j)
,依照全概率公式的思想,我们可以知道给定µ和观察序列O下,在时间t位于状态si
的概率γt(i)
:
有了ξt(i,j)
和γt(i)
,我们就可以重新计算出µ参数估计值了(也即把第二个同学的饭分一部分给第一个同学):
前向后向算法的基本过程:
-
初始化,随机给µ的参数赋值,同时保证:
-
EM计算
E-步骤:根据模型µ计算ξt(i,j)
和γt(i)
M-步骤:根据ξt(i,j)
和γt(i)
重新估计模型µ -
重复执行EM计算,直到模型µ的参数收敛
HMM在自然语言处理研究中有着非常广泛的应用,除了上面的理论问题之外,还有一些技术上的问题需要注意,比如连乘引起的浮点数下溢,或者取对数使乘法变成加法,还有在前向后向算法中给出一个足够小的实数来判定模型参数是否收敛。