HMM学习笔记(二):监督学习方法与Baum-Welch算法

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_37334135/article/details/86302735

学习隐马尔可夫模型(HMM),主要就是学习三个问题:概率计算问题,学习问题和预测问题。在前面讲了概率计算问题:前后向算法推导,这里接着讲学习问题,即求模型 λ = ( π , A , B ) \lambda=(\pi,A,B) 的参数,以下分为监督学习和非监督学习来讲学习算法。

记: Q = { q 1 , q 2 , . . . , q N } Q=\{q_1,q_2,...,q_N\} 表示所有可能的状态集合, V = { v 1 , v 2 , . . . , v M } V=\{v_1,v_2,...,v_M\} 表示所有可能的观测集合。

I = { i 1 , i 2 , . . . , i T } I=\{i_1,i_2,...,i_T\} 表示状态序列, O = { o 1 , o 2 , . . . , o N } O=\{o_1,o_2,...,o_N\} 为对应的观测序列。

监督学习方法

假设给定训练集包含了观测序列 O O 和状态序列 I I (长度均为 T T ),即 { ( O 1 , I 1 ) , ( O 2 , I 2 ) , . . . , ( O S , I S ) } \{(O_1,I_1),(O_2,I_2),...,(O_S,I_S)\} 。那么模型 λ = ( π , A , B ) \lambda=(\pi,A,B) 参数的求得可以根据伯努利大数定理的结论 “频率的极限是概率”来给出HMM的参数。

伯努利大数定理:设 μ \mu n n 次试验中A发生的次数,一次试验中A发生的概率为 p p ,则对任意正数 ε \varepsilon 有:

lim n > + P ( μ n p < ε ) = 1 \lim \limits_{n->+\infty}P(|\frac{\mu}{n}-p|<\varepsilon)=1

这个式子说明了,当 n n 趋近于无穷的时候,频率等于概率。那么以下直接写出模型参数。

(1)、 π i = A i i = 1 N A i \overline{\pi}_i=\frac{A_i}{\sum\limits_{i=1}^{N}A_i}

其中 A i A_i 表示初始时刻 t = 1 t=1 ,状态为 q i q_i 的频数。

(2)、 a i j = A i j j = 1 N A i j \overline{a}_{ij}=\frac{A_{ij}}{\sum\limits_{j=1}^{N}A_{ij}}

其中 A i j A_{ij} 表示时刻 t t 状态为 q i q_i 到时刻 t + 1 t+1 状态为 q j q_j 的频数。

(3)、 b i ( k ) = B i k k = 1 M B i k \overline{b}_i(k)=\frac{B_{ik}}{\sum\limits_{k=1}^{M}B_{ik}}

其中 B i k B_{ik} 表示 t t 时刻,状态为 q i q_i 观测为 v k v_k 的频数。

Baum-Welch算法

Baum-Welch算法其实就是EM算法,用来求HMM,下面统统用EM来说。
如果训练数据只有观测序列而没有状态序列,即 { O 1 , O 2 , . . . , O S } \{O_1,O_2,...,O_S\} 此时HMM的学习就得使用EM算法了,这是非监督学习。

通常,如果给定数据和已经模型,那么求模型参数我们会用极大似然估计法,但是如果变量中含有隐变量,无法用极大似然求解(对数式子里面有求和,难以求出解析解),此时就可以使用EM算法。考虑HMM,观测序列 O O 是显变量,而状态变量 I I 则是隐变量,所以HMM实际上是含有隐变量的概率模型

P ( O λ ) = I P ( O I , λ ) P ( I λ ) P(O|\lambda)=\sum\limits_{I}P(O|I,\lambda)P(I|\lambda)

所以可以使用EM算法来求得模型参数,关于EM算法参考从极大似然估计推出EM算法

关于EM算法流程,有多个版本,但是仔细学习可以发现是大同小异的,以下使用《统计学习方法》上介绍的EM算法流程。

首先,给定参数初值 λ 0 = ( π 0 , A 0 , B 0 ) \lambda_0=(\pi_0,A_0,B_0)
E步:写 Q Q 函数

Q ( λ λ ) = I P ( I O , λ ) l o g P ( O , I λ ) = I P ( O , I λ ) P ( O λ ) l o g P ( O , I λ ) Q(\lambda|\overline{\lambda})=\sum\limits_{I}P(I|O,\overline{\lambda})logP(O,I|\lambda)=\sum\limits_{I}\frac{P(O,I|\overline{\lambda})}{P(O|\overline{\lambda})}logP(O,I|\lambda)

由于 P ( O λ ) P(O|\overline{\lambda}) 是个常数,将其去掉得到:

Q ( λ λ ) = I P ( O , I λ ) l o g P ( O , I λ ) Q(\lambda|\overline{\lambda})=\sum\limits_{I}P(O,I|\overline{\lambda})logP(O,I|\lambda)

又因为 P ( O , I λ ) = π i 1 b i 1 ( o 1 ) a i 1 i 2 . . . a i T 1 i T b i T ( o T ) = π i 1 t = 1 T 1 a i t i t + 1 t = 1 T b i t ( o t ) P(O,I|\lambda)=\pi_{i_1}b_{i_1}(o_1)a_{i_1i_2}...a_{i_{T-1}i_{T}}b_{i_T}(o_T)=\pi_{i_1}\prod\limits_{t=1}^{T-1}a_{i_ti_{t+1}}\prod\limits_{t=1}^{T}b_{i_t}(o_t) (关于这个式子 在这篇概率计算问题:前后向算法推导中,直接计算方法中介绍了,实际是根据贝叶斯网络和HMM假设得出),带入到 Q Q 函数中,得到:

Q ( λ λ ) = I P ( O , I λ ) l o g [ π i 1 t = 1 T 1 a i t i t + 1 t = 1 T b i t ( o t ) ] = I l o g π i 1 P ( O , I λ ) + I ( t = 1 T 1 l o g a i t j t + 1 ) P ( O , I λ ) + I ( t = 1 T l o g b i t ( o t ) ) P ( O , I λ ) Q(\lambda|\overline{\lambda})=\sum\limits_{I}P(O,I|\overline{\lambda})log[\pi_{i_1}\prod\limits_{t=1}^{T-1}a_{i_ti_{t+1}}\prod\limits_{t=1}^{T}b_{i_t}(o_t)]\\=\sum\limits_{I}log\pi_{i_1}P(O,I|\overline{\lambda})+\sum\limits_{I}(\sum\limits_{t=1}^{T-1}loga_{i_tj_{t+1}})P(O,I|\overline{\lambda})+\sum\limits_{I}(\sum\limits_{t=1}^{T}logb_{i_t}(o_t))P(O,I|\overline{\lambda})

注意到这个式子三项是分别关于 π i , a i j b j ( k ) \pi_i,a_{ij}和b_j(k) 的,只需要分别计算即可。

(1)、求 π \pi

I l o g π i 1 P ( O , I λ ) = I l o g π i 1 P ( O , i 1 , i 2 , . . . , i T λ ) \sum\limits_{I}log\pi_{i_1}P(O,I|\overline{\lambda})=\sum\limits_{I}log\pi_{i_1}P(O,i_1,i_2,...,i_T|\overline{\lambda})

如果我们将这个式子完全展示的话, I \sum\limits_{I} 实际上是 T T 层求和,分别关于 i 1 i 2 , . . . , i T i_1,i_2,...,i_T 的取值,均有 N N 种取值。 i 1 i_1 N N 种取值,那么 l o g π i 1 log\pi_{i_1} 也是 N N 种取值,方便起见假设 i 1 = q 5 i_1=q_5 ,那么 P ( O , q 5 , i 2 , . . . , i T λ ) P(O,q_5,i_2,...,i_T|\overline{\lambda}) 不管有多少种取值,展开后求和关于为 l o g π 5 log\pi_{5} 的项为 l o g π 5 [ i 2 , . . . , i T P ( O , q 5 , i 2 , . . . , i T λ ) ] log\pi_{5}[\sum\limits_{i_2,...,i_T}P(O,q_5,i_2,...,i_T|\overline{\lambda})] ,根据全概率公式(将 i 2 , . . . , i T i_2,...,i_T 看成一项即可)得到
[ i 2 , . . . , i T P ( O , q 5 , i 2 , . . . , i T λ ) ] = P ( O , q 5 λ ) [\sum\limits_{i_2,...,i_T}P(O,q_5,i_2,...,i_T|\overline{\lambda})]=P(O,q_5|\overline{\lambda}) ,所以展开后求和关于为 l o g π 5 log\pi_{5} 的项为 l o g π 5 P ( O , q 5 λ ) log\pi_{5}P(O,q_5|\overline{\lambda}) ,所以有:

I l o g π i 1 P ( O , I λ ) = I l o g π i 1 P ( O , i 1 , i 2 , . . . , i T λ ) = i = 1 N l o g π i P ( O , i 1 = i λ ) \sum\limits_{I}log\pi_{i_1}P(O,I|\overline{\lambda})=\sum\limits_{I}log\pi_{i_1}P(O,i_1,i_2,...,i_T|\overline{\lambda})\\=\sum\limits_{i=1}^{N}log\pi_iP(O,i_1=i|\overline{\lambda})

其中 i 1 = i i_1=i 也就是 i 1 = q i i_1=q_i ,只是为了方便才那样写了。

注意到: i = 1 N π i = 1 \sum\limits_{i=1}^{N}\pi_i=1 ,构造拉格朗日函数

L = i = 1 N l o g π i P ( O , i 1 = i λ ) + α [ i = 1 N π i 1 ] L=\sum\limits_{i=1}^{N}log\pi_iP(O,i_1=i|\overline{\lambda})+\alpha[\sum\limits_{i=1}^{N}\pi_i-1]

π i \pi_i 求导,令导数为0

L π i = P ( O , i 1 = i λ ) π i + α = 0 \frac{\partial L}{\partial \pi_i}=\frac{P(O,i_1=i|\overline{\lambda})}{\pi_i}+\alpha=0
= > P ( O , i 1 = i λ ) = α π i =>P(O,i_1=i|\overline{\lambda})=-\alpha\pi_i (1)
两边求和( i = 1 N \sum\limits_{i=1}^{N} )
α = i = 1 N P ( O , i 1 = i λ ) = P ( O λ ) -\alpha=\sum\limits_{i=1}^{N}P(O,i_1=i|\overline{\lambda})=P(O|\overline{\lambda}) ,带入到(1)式,得到:

π i = P ( O , i 1 = i λ ) P ( O λ ) \pi_i=\frac{P(O,i_1=i|\overline{\lambda})}{P(O|\overline{\lambda})}

(2)、求 a i j a_{ij}

同样地 第二项:
I ( t = 1 T 1 l o g a i t j t + 1 ) P ( O , I λ ) = i = 1 N i = 1 N t = 1 T 1 l o g a i j P ( O , i t = i , i t + 1 = j λ ) \sum\limits_{I}(\sum\limits_{t=1}^{T-1}loga_{i_tj_{t+1}})P(O,I|\overline{\lambda})=\sum\limits_{i=1}^{N}\sum\limits_{i=1}^{N}\sum\limits_{t=1}^{T-1}loga_{ij}P(O,i_t=i,i_{t+1}=j|\overline{\lambda})

约束条件是 j = 1 N a i j = 1 \sum\limits_{j=1}^{N}a_{ij}=1 ,同样使用拉格朗日乘子法得到:

a i j = t = 1 T 1 P ( O , i t = i , i t + 1 = j λ ) t = 1 T 1 P ( O , i t = i λ ) a_{ij}=\frac{\sum\limits_{t=1}^{T-1}P(O,i_t=i,i_{t+1}=j|\overline{\lambda})}{\sum\limits_{t=1}^{T-1}P(O,i_t=i|\overline{\lambda})}

(3)、求 b j ( k ) b_j(k)

同样地,第三项:

I ( t = 1 T l o g b i t ( o t ) ) P ( O , I λ ) = i = 1 N t = 1 T l o g b i ( o t ) P ( O , i t = i λ ) \sum\limits_{I}(\sum\limits_{t=1}^{T}logb_{i_t}(o_t))P(O,I|\overline{\lambda})=\sum\limits_{i=1}^{N}\sum\limits_{t=1}^{T}logb_{i}(o_t)P(O,i_t=i|\overline{\lambda})

约束条件是 k = 1 M b i ( k ) = 1 \sum\limits_{k=1}^{M}b_i(k)=1 ,还是使用拉格朗日乘子法,得到

b i ( k ) = t = 1 T P ( O , i t = i λ ) I ( o t = v k ) t = 1 T P ( O , i t = i λ ) b_i(k)=\frac{\sum\limits_{t=1}^{T}P(O,i_t=i|\overline{\lambda})I(o_t=v_k)}{\sum\limits_{t=1}^{T}P(O,i_t=i|\overline{\lambda})}

I ( o t = v k ) I(o_t=v_k) 为指示函数, I ( t r u e ) = 1 , I ( f a l s e ) = 0 I(true)=1,I(false)=0 ,因为只有在 o t = v k o_t=v_k 时候, b i ( o t ) b_i(o_t) b i ( k ) b_i(k) 求导才不为0。

概率计算问题:前后向算法推导中,最后推导了一些结论,直接用在这里来表示这些模型参数吧。

π i = γ 1 ( i ) \pi_i=\gamma_1(i)

a i j = t = 1 T 1 ξ t ( i , j ) t = 1 T 1 γ t ( i ) a_{ij}=\frac{\sum\limits_{t=1}^{T-1}\xi_t(i,j)}{\sum\limits_{t=1}^{T-1}\gamma_t(i)}

b i ( k ) = t = 1 , o t = v k T γ t ( i ) t = 1 T γ t ( i ) b_i(k)=\frac{\sum\limits_{t=1,o_t=v_k}^{T}\gamma_t(i)}{\sum\limits_{t=1}^{T}\gamma_t(i)}

猜你喜欢

转载自blog.csdn.net/qq_37334135/article/details/86302735