注:本文中所有公式和思路来自于邹博先生的《机器学习升级版》,我只是为了加深记忆和理解写的本文。
我们在前边简单介绍过一个预测的近似方法,就是在每个时刻选择出最有可能出现的状态,从而得到一个状态序列:
我们是这么计算的,处于时刻t的状态为qi的概率为:
当然我们已经将这种方案否定了,因为这种情况在实际应用中很可能会不存在,所以我们要是要使用动态规划中的一种算法Viterbi算法,其实前向后向算法也是动态规划。
Viterbi算法
Viterbi算法其实是用DP来解HMM预测问题的,用DP来求概率最大的路径(最优路径),这里一条路径其实就对应了一种序列状态。
定义:
递推公式:
终止:
不难发现,Viterbi算法跟前向算法唯一的差别就是Σ换成了max,仅此而已,非常之简单,因为用在了不同地方,做不同事情,所以递推公式也有一点差别,仅此而已啊 。
HMM模型全部介绍完了,我们来对HMM做一个总结:
HMM解决标注问题,在语音识别、NLP、生物信息、模式识别等领域被广泛的使用(深度学习在某些方面其实做的比HMM要好,例如语音识别),在一定的意义下,我们的数据可能比算法还要重要。
终于介绍完了,忙活了大半天,明天可以好好过一个光棍节了!!!!!!!!!!!!!!!!!!!!!!!!