人工智能里的数学修炼 | 概率图模型 : 隐马尔可夫模型
人工智能里的数学修炼 | 隐马尔可夫模型:前向后向算法
人工智能里的数学修炼 | 隐马尔可夫模型 : 维特比(Viterbi)算法解码隐藏状态序列
人工智能里的数学修炼 | 隐马尔可夫模型:基于EM的鲍姆-韦尔奇算法求解模型参数
已经较为清楚的讲述了隐马尔可夫模型及其在实际应用的三个问题:1. 生成观察序列概率, 2. 预测问题, 3. 模型参数学习问题。
这里介绍求解第一个生成观察序列概率的前向后向算法,前向后向算法实际上是两个算法的合成,即前向算法和后向算法,二者相似,这里主要以前向算法为例进行介绍
一、前向算法
前向算法针对的是隐马尔可夫模型的概率计算问题,即给定一个模型参数已知的隐马尔可夫模型(HMM)和一组观测序列 x 1 , x 2 , . . . , x n x_{1},x_{2},...,x_{n} x1,x2,...,xn,求HMM生成这组观测序列的概率
前向算法定义了一个“前向概率”的定义,即:
给定隐马尔可夫模型
λ
\lambda
λ,定义1到t时刻部分的观测序列为
x
1
,
x
2
,
.
.
.
,
x
t
x_{1},x_{2},...,x_{t}
x1,x2,...,xt,则t时刻的状态
x
t
x_{t}
xt为
i
i
i的概率
q
i
q_{i}
qi为前向概率, 记做
c
t
(
i
)
=
P
(
x
1
,
x
2
,
.
.
.
,
x
t
,
i
i
=
q
i
∣
λ
)
c_{t}(i)=P(x_{1},x_{2},...,x_{t},i_{i}=q_{i}|\lambda)
ct(i)=P(x1,x2,...,xt,ii=qi∣λ)
定义说明:由于每个状态生成一个观测变量,那么在 t t t时刻就会生成 t t t个观测变量,在 t t t时刻处于状态 i i i的概率就是前向概率。状态 i i i的的取值范围为 o 1 , o 2 , . . . , o M o_{1},o_{2},...,o_{M} o1,o2,...,oM,详见 人工智能里的数学修炼 | 概率图模型 : 隐马尔可夫模型
利用定义的前向概率,可以很容易的从1到递推到 t t t得到观测序列概率 P ( x 1 , x 2 , . . . , x t ∣ λ ) P(x_{1},x_{2},...,x_{t}|\lambda) P(x1,x2,...,xt∣λ),共有三步:
- 计算初值(t=1)
c 1 ( i ) = π j b j i , j = { 1 , 2 , . . . , N } c_{1}(i)=\pi_{j}b_{ji}, j=\{1,2,...,N\} c1(i)=πjbji,j={1,2,...,N} 这里 π j \pi_{j} πj表示初始状态下状态变量为 j j j的概率, b j i b_{ji} bji表示从状态 j j j推出观测 i i i的输出观测概率 - 递推环节,对于
t
=
1
,
2
,
.
.
.
,
T
−
1
t=1,2,...,T-1
t=1,2,...,T−1
c t + 1 ( i ) = [ ∑ k = 1 N c t ( k ) a k j ] b j i , k = 1 , 2 , . . . , N c_{t+1}(i)=[\sum_{k=1}^{N}c_{t}(k)a_{kj}]b_{ji},k=1,2,...,N ct+1(i)=[k=1∑Nct(k)akj]bji,k=1,2,...,N这里的 a k j a_{kj} akj表示由状态 k k k转移到状态 j j j的状态转移概率, b j i b_{ji} bji表示由状态 j j j推出观测 i i i的输出观测概率 - 到达指定时刻T
P ( x 1 , x 2 , . . . , x t ∣ λ ) = ∑ i = 1 N c T i P(x_{1},x_{2},...,x_{t}|\lambda)=\sum_{i=1}^{N}c_{T}{i} P(x1,x2,...,xt∣λ)=i=1∑NcTi
前向算法的求解过程其实是相当简洁明了的,即从1到T时刻,对应于每一个观测值 x t x_{t} xt都计算其由前一时刻状态转移后状态输出概率各种可能的和。
二、后向算法
后向算法是前向算法的逆过程,定义了相应的“后向概率”,其原理其实是相似的,这里不做多余的赘述
三、更多资源下载
微信搜索“老和山算法指南”获取更多下载链接与技术交流群
有问题可以私信博主,点赞关注的一般都会回复,一起努力,谢谢支持。