人工智能里的数学修炼 | 概率图模型 : 隐马尔可夫模型
人工智能里的数学修炼 | 隐马尔可夫模型:前向后向算法
人工智能里的数学修炼 | 隐马尔可夫模型 : 维特比(Viterbi)算法解码隐藏状态序列
人工智能里的数学修炼 | 隐马尔可夫模型:基于EM的鲍姆-韦尔奇算法求解模型参数
隐马尔可夫模型的参数为
λ={A,B,π}, 对余其参数的求解,可以分为两种情况。
第一种情况较为简单,就是我们已知长度为
T的观测序列和对应的隐藏状态序列,即
{(O,I)}是已知的,此时我们可以很容易的用最大似然来求解模型参数。
第二种情况较为复杂,很多时候,我们无法得到隐马尔可夫模型观察序列对应的隐藏序列,即只有
{O}是已知的,此时,我们就需要采用到鲍姆-韦尔奇算法,其实本质上也就是就是EM算法
一、鲍姆-韦尔奇算法原理
鲍姆-韦尔奇算法在每一次迭代中,都分为E和M两步,在E步,我们需要基于联合分布
P(O,I∣λ)和条件概率
P(I∣O,λˉ)的算出期望
Q(其中
λˉ为当前迭代中模型参数),然后在M步中极大化这个期望,获得更新的模型参数
λ。通过不停的EM迭代,使得模型参数收敛
- E步的期望表达式为:
Q=I∑P(I∣O,λˉ)logP(O,I∣λ)
- 在M步我们极大化上式,然后得到更新后的模型参数如下:
λˉ=argmaxλˉI∑P(I∣O,λˉ)logP(O,I∣λ)通过,E步和M步不断的迭代,我们可以得到收敛的参数
λˉ。
上面的式子可能有些地方不知道该如何计算,接下来讲解,具体的推导和计算方法
二、鲍姆-韦尔奇算法的推导
输入:长度为
T的观测序列
O={(o1),(o2),...,(oT)},所有的可能的状态集合
q1,q2,...,qN, 所有可能的观测集合
v1,v2,...,vM
未知:隐藏的状态序列
I={(i1),(i2),...,(iT)}
目标:
λ={A,B,π}
对于鲍姆-韦尔奇算法的E步,我们需要首先计算联合分布
P(O,I∣λ)如下:
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,λ)P(O,I∣λ)且
P(O,λ)是一个参数, 期望Q可以简化为
Q=I∑P(O,I∣λˉ)logP(O,I∣λ)将
P(O,I∣λ)带入上式,我们有
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)其中
γt(i)=P(it=qi∣O,λ)=P(O∣λ))P(it=qi,O∣λ)表示在观测序列
O给定的条件下,时刻
t处于状态
qi的概率。
aˉij=∑t=1Tγt(i)∑t=1T−1ξt(i,j)这里
ξt(i,j)=P(it=qi,it+1=qj∣O,λ)表示在观测序列
O给定的条件下,时刻
t处于状态
qi且时刻
t+1处于
qj的概率。
bˉj(k)=∑t=1Tγt(j)∑t−1Tγt(j)I(ot=vk)
三、鲍姆-韦尔奇算法的流程
- 初始化参数
λˉ={A,B,π}
- 更新迭代参数
πˉi=γ1(i)
aˉij=∑t=1Tγt(i)∑t=1T−1ξt(i,j)
bˉj(k)=∑t=1Tγt(j)∑t−1Tγt(j)I(ot=vk)
- 模型收敛,停止迭代