HMM之前向算法forward algorithm

本文详细解读了HMM模型中前向算法的原理、公式(1)和(2),展示了如何通过动态规划优化计算,包括状态转移矩阵和发射概率的运用,以及从t=2到T的迭代计算过程。最后介绍了351页的《Speech and Language Processing》中关于前向算法的伪代码实现。
摘要由CSDN通过智能技术生成

前向算法在HMM模型的训练、解码和评估过程中都涉及到。掌握前向算法对彻底理解HMM非常必要。前向算法掌握之后,后向算法也就不再话下。

首先给出前向算法的公式,然后一步一步解析它的计算过程。

\alpha _{t}(j) =P(O_{1},O_{2},...,O_{t},q_{t}=j|\lambda )                    (1)

表示由\lambda代表的HMM模型,所有可能的状态下,在t时刻状态为j,且时间片1,2,…,t,产生的观察向量分别为O_{1},O_{2},...,O_{t}的概率。现在就是要设计一个算法来计算该数值,并且时间和空间复杂度合理。利用动态规划法,通过一张表记录当前的计算结果,供下一时刻使用,避免了暴力求解的时间消耗。

\alpha _{t}(j) =(\sum_{i=1}^{N}\alpha_{t-1}(i)a_{ij})\beta_{j}(O_{t})                           (2)

公式(2)比较清晰的表示出了,当前t时刻的值依赖前一时刻的计算结果。其中比较特殊的一点是求t=1时刻,因为它的前一时刻未定义。因此公式(2)其实应该有个前提条件,就是t大于1,而当t=1时,需要另外给出计算结果。

\alpha _{1}(j) =a_{0j}\beta_{j}(O_{1})   j=1,2,...,N                             (3)

状态转移矩阵a,发射概率函数向量\beta,是训练过程确立的,是HMM模型的主要参数。

由公式(3)得到时刻1时,也即\alpha矩阵第一列的数值,表示不同状态下产生观察向量O_{1}的概率大小。

从t=2到t=T时刻,状态j=1到j=N可以通过迭代的方式,在\alpha矩阵里计算得到,避免了大量的重复计算。

 

当t=T时,\alpha _{N}(j) =(\sum_{i=1}^{N}\alpha_{N-1}(i)a_{ij})\beta_{j}(O_{N}),最后一步,计算整个前向算法的值时,通过\alpha _{all}(O) =\sum_{i=1}^{N}\alpha_{T}(i)a_{i,q_{end}}可得,如上图的最后一列的箭头所示。

下面的截图是《Speech and Language Processing》351页关于前向算法的伪代码。

前向算法

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值