人工智能里的数学修炼 | 隐马尔可夫模型:基于EM的鲍姆-韦尔奇算法求解模型参数

人工智能里的数学修炼 | 概率图模型 : 隐马尔可夫模型
人工智能里的数学修炼 | 隐马尔可夫模型:前向后向算法
人工智能里的数学修炼 | 隐马尔可夫模型 : 维特比(Viterbi)算法解码隐藏状态序列
人工智能里的数学修炼 | 隐马尔可夫模型:基于EM的鲍姆-韦尔奇算法求解模型参数

隐马尔可夫模型的参数为 λ = { A , B , π } \lambda=\{A,B,\pi\} , 对余其参数的求解,可以分为两种情况。

第一种情况较为简单,就是我们已知长度为 T T 的观测序列和对应的隐藏状态序列,即 { ( O , I ) } \{(O,I)\} 是已知的,此时我们可以很容易的用最大似然来求解模型参数。

第二种情况较为复杂,很多时候,我们无法得到隐马尔可夫模型观察序列对应的隐藏序列,即只有 { O } \{O\} 是已知的,此时,我们就需要采用到鲍姆-韦尔奇算法,其实本质上也就是就是EM算法

一、鲍姆-韦尔奇算法原理

鲍姆-韦尔奇算法在每一次迭代中,都分为E和M两步,在E步,我们需要基于联合分布 P ( O , I λ ) P(O,I|\lambda) 和条件概率 P ( I O , λ ˉ ) P(I|O,\bar{\lambda}) 的算出期望 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)
  • 在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) 通过,E步和M步不断的迭代,我们可以得到收敛的参数 λ ˉ \bar{\lambda}
    上面的式子可能有些地方不知道该如何计算,接下来讲解,具体的推导和计算方法

二、鲍姆-韦尔奇算法的推导

输入:长度为 T T 的观测序列 O = { ( o 1 ) , ( o 2 ) , . . . , ( o T ) } O=\{(o_{1}),(o_{2}),...,(o_{T})\} ,所有的可能的状态集合 q 1 , q 2 , . . . , q N {q_{1},q_{2},...,q_{N}} , 所有可能的观测集合 v 1 , v 2 , . . . , v M {v_{1},v_{2},...,v_{M}}
未知:隐藏的状态序列 I = { ( i 1 ) , ( i 2 ) , . . . , ( i T ) } I=\{(i_{1}),(i_{2}),...,(i_{T})\}
目标: λ = { A , B , π } \lambda=\{A,B,\pi\}

对于鲍姆-韦尔奇算法的E步,我们需要首先计算联合分布 P ( O , I λ ) P(O,I|\lambda) 如下:
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 ( I O , λ ˉ ) = P ( O , I λ ) P ( O , λ ) P(I|O,\bar{\lambda})=\frac{P(O,I|\lambda)}{P(O,\lambda)} P ( O , λ ) P(O,\lambda) 是一个参数, 期望Q可以简化为
Q = I P ( O , I λ ˉ ) l o g P ( O , I λ ) Q=\sum_{I}P(O,I|\bar{\lambda})logP(O,I|\lambda) P ( O , I λ ) P(O,I|\lambda) 带入上式,我们有
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})

接下来对于对于鲍姆-韦尔奇算法的M步,我们需要极大化Q,这要求对Q的三个子式子分别求导,可以得到
π ˉ i = γ 1 ( i ) \bar{\pi}_{i}=\gamma_{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))} 表示在观测序列 O O 给定的条件下,时刻 t t 处于状态 q i q_{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)} 这里 ξ 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) 表示在观测序列 O O 给定的条件下,时刻 t t 处于状态 q i q_{i} 且时刻 t + 1 t+1 处于 q j q_{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)}

三、鲍姆-韦尔奇算法的流程

  1. 初始化参数 λ ˉ = { A , B , π } \bar{\lambda}=\{A,B,\pi\}
  2. 更新迭代参数
    π ˉ i = γ 1 ( i ) \bar{\pi}_{i}=\gamma_{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)}
    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)}
  3. 模型收敛,停止迭代
发布了74 篇原创文章 · 获赞 269 · 访问量 15万+

猜你喜欢

转载自blog.csdn.net/Liangjun_Feng/article/details/95189730