前言
这里的前向算法与神经网络里的前向传播算法没有任何联系。。。这里的前向算法是自然语言处理领域隐马尔可夫模型第一个基本问题的算法。
前向算法是什么?
这里用一个海藻的例子来描述前向算法是什么。网上有关于前向算法的严格数学推导,不过感觉还是海藻的例子比较好一些。网上的例子有很多都是有问题的,在本文中也都进行了相应的修正。
状态转移矩阵
相关性矩阵
初始状态序列:Sunny(0.63),Cloudy(0.17),Rainy(0.20)
我们想要求一个观察序列{Dry, Damp, Soggy}的概率。
具体怎么求这个概率,数学上有严格的推导流程,这里不再进行阐述,这里仅针对前向算法进行阐述。
前向算法的Python实现
前向算法的问题尽管看起来和维特比算法解决的问题不太一样,但是套路实际上是完全相同的。
首先可以利用numpy将数据加入到python代码中
import numpy as np
# 前向算法
tran = np.array([[0.5, 0.375, 0.125],
[0.25, 0.125, 0.625],