人工智能里的数学修炼 | 概率图模型 : 隐马尔可夫模型
人工智能里的数学修炼 | 隐马尔可夫模型:前向后向算法
人工智能里的数学修炼 | 隐马尔可夫模型 : 维特比(Viterbi)算法解码隐藏状态序列
人工智能里的数学修炼 | 隐马尔可夫模型:基于EM的鲍姆-韦尔奇算法求解模型参数
隐马尔可夫模型的参数为 λ = { A , B , π } \lambda=\{A,B,\pi\} λ={A,B,π}, 对余其参数的求解,可以分为两种情况。
第一种情况较为简单,就是我们已知长度为 T T T的观测序列和对应的隐藏状态序列,即 { ( O , I ) } \{(O,I)\} {(O,I)}是已知的,此时我们可以很容易的用最大似然来求解模型参数。
第二种情况较为复杂,很多时候,我们无法得到隐马尔可夫模型观察序列对应的隐藏序列,即只有 { O } \{O\} {O}是已知的,此时,我们就需要采用到鲍姆-韦尔奇算法,其实本质上也就是就是EM算法
一、鲍姆-韦尔奇算法原理
鲍姆-韦尔奇算法在每一次迭代中,都分为E和M两步,在E步,我们需要基于联合分布 P ( O , I ∣ λ ) P(O,I|\lambda) P(O,I∣λ)和条件概率 P ( I ∣ O , λ ˉ ) P(I|O,\bar{\lambda}) P(I∣O,λˉ)的算出期望 Q Q Q(其中 λ ˉ \bar{\lambda} λˉ为当前迭代中模型参数),然后在M步中极大化这个期望,获得更新的模型参数 λ \lambda λ。通过不停的EM迭代,使得模型参数收敛
- E步的期望表达式为:
Q = ∑ I P ( I ∣ O , λ ˉ ) l o g P ( O , I ∣ λ ) Q=\sum_{I}P(I|O,\bar{\lambda})logP(O,I|\lambda) Q=I∑P(I∣O,λˉ)logP(O,I∣λ) - 在M步我们极大化上式,然后得到更新后的模型参数如下:
λ ˉ = a r g m a x λ ˉ ∑ I P ( I ∣ O , λ ˉ ) l o g P ( O , I ∣ λ ) \bar{\lambda}=argmax_{\bar{\lambda}}\sum_{I}P(I|O,\bar{\lambda})logP(O,I|\lambda) λˉ=argmaxλˉI∑P(I∣O,λˉ)logP(O,I∣λ)通过,E步和M步不断的迭代,我们可以得到收敛的参数 λ ˉ \bar{\lambda} λˉ。
上面的式子可能有些地方不知道该如何计算,接下来讲解,具体的推导和计算方法
二、鲍姆-韦尔奇算法的推导
输入:长度为
T
T
T的观测序列
O
=
{
(
o
1
)
,
(
o
2
)
,
.
.
.
,
(
o
T
)
}
O=\{(o_{1}),(o_{2}),...,(o_{T})\}
O={(o1),(o2),...,(oT)},所有的可能的状态集合
q
1
,
q
2
,
.
.
.
,
q
N
{q_{1},q_{2},...,q_{N}}
q1,q2,...,qN, 所有可能的观测集合
v
1
,
v
2
,
.
.
.
,
v
M
{v_{1},v_{2},...,v_{M}}
v1,v2,...,vM
未知:隐藏的状态序列
I
=
{
(
i
1
)
,
(
i
2
)
,
.
.
.
,
(
i
T
)
}
I=\{(i_{1}),(i_{2}),...,(i_{T})\}
I={(i1),(i2),...,(iT)}
目标:
λ
=
{
A
,
B
,
π
}
\lambda=\{A,B,\pi\}
λ={A,B,π}
对于鲍姆-韦尔奇算法的E步,我们需要首先计算联合分布
P
(
O
,
I
∣
λ
)
P(O,I|\lambda)
P(O,I∣λ)如下:
P
(
O
,
I
∣
λ
)
=
π
i
1
b
i
1
(
o
1
)
a
i
1
i
2
b
i
2
(
o
2
)
a
i
2
i
3
.
.
.
b
i
(
T
−
1
)
(
o
T
−
1
)
a
i
(
T
−
1
)
i
(
T
)
b
i
T
(
o
T
)
P(O,I|\lambda)=\pi_{i1}b_{i1}(o_{1})a_{i1i2}b_{i2}(o_{2})a_{i2i3}...b_{i(T-1)}(o_{T-1})a_{i(T-1)i(T)}b_{iT}(o_{T})
P(O,I∣λ)=πi1bi1(o1)ai1i2bi2(o2)ai2i3...bi(T−1)(oT−1)ai(T−1)i(T)biT(oT)因为条件概率
P
(
I
∣
O
,
λ
ˉ
)
=
P
(
O
,
I
∣
λ
)
P
(
O
,
λ
)
P(I|O,\bar{\lambda})=\frac{P(O,I|\lambda)}{P(O,\lambda)}
P(I∣O,λˉ)=P(O,λ)P(O,I∣λ)且
P
(
O
,
λ
)
P(O,\lambda)
P(O,λ)是一个参数, 期望Q可以简化为
Q
=
∑
I
P
(
O
,
I
∣
λ
ˉ
)
l
o
g
P
(
O
,
I
∣
λ
)
Q=\sum_{I}P(O,I|\bar{\lambda})logP(O,I|\lambda)
Q=I∑P(O,I∣λˉ)logP(O,I∣λ)将
P
(
O
,
I
∣
λ
)
P(O,I|\lambda)
P(O,I∣λ)带入上式,我们有
Q
=
∑
I
P
(
O
,
I
∣
λ
ˉ
)
l
o
g
π
i
+
∑
I
(
∑
t
T
l
o
g
b
i
t
(
o
t
)
)
P
(
O
,
I
∣
λ
ˉ
)
+
∑
I
(
∑
t
T
−
1
l
o
g
a
i
t
i
(
t
+
1
)
)
P
(
O
,
I
∣
λ
ˉ
)
Q=\sum_{I}P(O,I|\bar{\lambda})log\pi_{i}+\sum_{I}(\sum_{t}^{T}logb_{it}(o_{t}))P(O,I|\bar{\lambda})+\sum_{I}(\sum_{t}^{T-1}loga_{iti(t+1)})P(O,I|\bar{\lambda})
Q=I∑P(O,I∣λˉ)logπi+I∑(t∑Tlogbit(ot))P(O,I∣λˉ)+I∑(t∑T−1logaiti(t+1))P(O,I∣λˉ)
接下来对于对于鲍姆-韦尔奇算法的M步,我们需要极大化Q,这要求对Q的三个子式子分别求导,可以得到
π
ˉ
i
=
γ
1
(
i
)
\bar{\pi}_{i}=\gamma_{1}(i)
πˉi=γ1(i)其中
γ
t
(
i
)
=
P
(
i
t
=
q
i
∣
O
,
λ
)
=
P
(
i
t
=
q
i
,
O
∣
λ
)
P
(
O
∣
λ
)
)
\gamma_{t}(i)=P(i_{t}=q_{i}|O,\lambda)=\frac{P(i_{t}=q_{i},O|\lambda)}{P(O|\lambda))}
γt(i)=P(it=qi∣O,λ)=P(O∣λ))P(it=qi,O∣λ)表示在观测序列
O
O
O给定的条件下,时刻
t
t
t处于状态
q
i
q_{i}
qi的概率。
a
ˉ
i
j
=
∑
t
=
1
T
−
1
ξ
t
(
i
,
j
)
∑
t
=
1
T
γ
t
(
i
)
\bar{a}_{ij}=\frac{\sum_{t=1}^{T-1}\xi_{t}(i,j)}{\sum_{t=1}^{T}\gamma_{t}(i)}
aˉij=∑t=1Tγt(i)∑t=1T−1ξt(i,j)这里
ξ
t
(
i
,
j
)
=
P
(
i
t
=
q
i
,
i
t
+
1
=
q
j
∣
O
,
λ
)
\xi_{t}{(i,j)}=P(i_{t}=q_{i},i_{t+1}=q_{j}|O,\lambda)
ξt(i,j)=P(it=qi,it+1=qj∣O,λ)表示在观测序列
O
O
O给定的条件下,时刻
t
t
t处于状态
q
i
q_{i}
qi且时刻
t
+
1
t+1
t+1处于
q
j
q_{j}
qj的概率。
b
ˉ
j
(
k
)
=
∑
t
−
1
T
γ
t
(
j
)
I
(
o
t
=
v
k
)
∑
t
=
1
T
γ
t
(
j
)
\bar{b}_{j}(k)=\frac{\sum_{t-1}^{T}\gamma_{t}(j)I(o_{t}=v_{k})}{\sum_{t=1}^{T}\gamma_{t}(j)}
bˉj(k)=∑t=1Tγt(j)∑t−1Tγt(j)I(ot=vk)
三、鲍姆-韦尔奇算法的流程
- 初始化参数 λ ˉ = { A , B , π } \bar{\lambda}=\{A,B,\pi\} λˉ={A,B,π}
- 更新迭代参数
π ˉ i = γ 1 ( i ) \bar{\pi}_{i}=\gamma_{1}(i) πˉi=γ1(i)
a ˉ i j = ∑ t = 1 T − 1 ξ t ( i , j ) ∑ t = 1 T γ t ( i ) \bar{a}_{ij}=\frac{\sum_{t=1}^{T-1}\xi_{t}(i,j)}{\sum_{t=1}^{T}\gamma_{t}(i)} aˉij=∑t=1Tγt(i)∑t=1T−1ξt(i,j)
b ˉ j ( k ) = ∑ t − 1 T γ t ( j ) I ( o t = v k ) ∑ t = 1 T γ t ( j ) \bar{b}_{j}(k)=\frac{\sum_{t-1}^{T}\gamma_{t}(j)I(o_{t}=v_{k})}{\sum_{t=1}^{T}\gamma_{t}(j)} bˉj(k)=∑t=1Tγt(j)∑t−1Tγt(j)I(ot=vk) - 模型收敛,停止迭代
四、更多资源下载
微信搜索“老和山算法指南”获取更多下载链接与技术交流群
有问题可以私信博主,点赞关注的一般都会回复,一起努力,谢谢支持。