机器学习 - 隐马尔科夫模型(3)- 学习算法

在隐马尔科夫模型的学习过程中,根据数据的完整性分为监督学习算法与无监督学习算法。

如果训练数据同时包含了观测序列和对应的状态序列,则可以使用监督学习方法,从数据中直接统计出来加以计算。

如果数据只包含观测序列,而没有状态序列,就需要使用无监督学习算法的 Baum-Welch 算法。

  • 监督学习算法

    假设已给训练数据包含 S 个长度相同的观测序列和对应的状态序列 { ( O 1 , I 1 ) , ( O 2 , I 2 ) , . . . , ( O S , I S ) } \{(O_1,I_1),(O_2,I_2),...,(O_S,I_S)\} {(O1,I1),(O2,I2),...,(OS,IS)},那么就可以使用极大似然估计法来估计 HMM 的参数。

    1. 初始状态概率向量 Π 的估计

      统计所有样本中初始状态为 q i q_i qi 的频率,并赋予对应的 π i π_i πi

    2. 状态转移概率的估计

      设样本中时刻 t 处于状态 i,在时刻 t+1 转移到状态 j 的频数为 Aij,那么状态转移概率 aij 的估计值为:

      a i j = A i j ∑ j = 1 N A i j , i = 1 , 2 , . . . , N ; j = 1 , 2 , . . . , N a_{ij}=\frac{A_{ij}}{\sum_{j=1}^NA_{ij}},i=1,2,...,N;j=1,2,...,N aij=j=1NAijAiji=1,2,...,Nj=1,2,...,N

    3. 观测概率的估计

      设样本中状态为 j j j 且观测值为 k k k 的频数是 Bjk,那么观测概率 bj(k) 的估计值为:

      b j ( k ) = B j k ∑ j = 1 M B j k , k = 1 , 2 , . . . , M ; j = 1 , 2 , . . . , N b_j(k)=\frac{B_{jk}}{\sum_{j=1}^{M}}B_{jk},k=1,2,...,M;j=1,2,...,N bj(k)=j=1MBjkBjkk=1,2,...,Mj=1,2,...,N

  • 无监督 Baum-Welch 算法

    监督学习需要使用训练数据,而人工标注训练数据非常的耗时耗力,成本很高,所以可以使用无监督学习。

    HMM 算法中的无监督学习算法经典的是 Baum-Welch 算法,它的核心是 EM 算法,即对含有隐变量的概率模型进行极大似然估计。

    • Baum-Welch 算法推导
      1. E 步

        对观测序列 O = ( o 1 , o 2 , . . . , o T ) O=(o_1,o_2,...,o_T) O=(o1,o2,...,oT),状态序列 S = ( s 1 , s 2 , . . . , s T ) S=(s_1,s_2,...,s_T) S=(s1,s2,...,sT),那么数据的对数似然函数为 log ⁡ P ( O , S ∣ λ ) \log{P(O,S|λ)} logP(O,Sλ)

        P ( O , S ∣ λ n e w ) = π s 1 b s 1 ( o 1 ) a s 1 s 2 b s 2 ( o 2 ) . . . a s T − 1 s T b s T ( o T ) P(O,S|λ^{new})=π_{s_1}b_{s_1}(o_1)a_{s_1s_2}b_{s_2}(o_2)...a_{s_{T-1}s_T}b_{s_T}(o_T) P(O,Sλnew)=πs1bs1(o1)as1s2bs2(o2)...asT1sTbsT(oT)

        Q 函数为: Q ( λ n e w , λ o l d ) = ∑ S log ⁡ P ( O , S ∣ λ n e w ) P ( S ∣ O , λ o l d ) = P ( S ∣ O , λ o l d ) ⟮ ∑ S log ⁡ π s 1 + ∑ S ∑ t = 1 T − 1 log ⁡ a s t s t + 1 + ∑ S ∑ t = 1 T log ⁡ b s t ( o t ) ⟯ \begin{aligned} Q(λ^{new},λ^{old})=&\sum_{S}\log{P(O,S|λ^{new})}P(S|O,λ^{old})\\ =P(S|O,λ^{old})\lgroup&\sum_{S}\log{π_{s_1}}+\sum_{S}\sum_{t=1}^{T-1}\log a_{s_ts_{t+1}}+\sum_{S}\sum_{t=1}^{T}\log b_{s_t}(o_t)\rgroup \end{aligned} Q(λnew,λold)==P(SO,λold)SlogP(O,Sλnew)P(SO,λold)Slogπs1+St=1T1logastst+1+St=1Tlogbst(ot)

      2. M 步

        极大化 Q 函数 Q ( λ n e w , λ o l d ) Q(λ^{new},λ^{old}) Q(λnew,λold) 求模型参数 A , B , Π A,B,Π ABΠ

        因为要极大化的参数分别独立存在于三项中,所以可以对各项分别极大化。


        1)对于第一项

        ∑ S log ⁡ π s 1 P ( S ∣ O , λ o l d ) = ∑ s = 1 N log ⁡ π s 1 P ( s 1 = s ∣ O , λ o l d ) \sum_{S}\log{π_{s_1}}P(S|O,λ^{old})=\sum_{s=1}^{N}\log{π_{s_1}}P(s_1=s|O,λ^{old}) Slogπs1P(SO,λold)=s=1Nlogπs1P(s1=sO,λold)

        注意到 π s π_s πs 满足约束条件 ∑ s = 1 N log ⁡ π s 1 = 1 \sum_{s=1}^{N}\log{π_{s_1}}=1 s=1Nlogπs1=1,利用拉格朗日乘子法,写出拉格朗日函数:

        ∑ s = 1 N log ⁡ π s 1 P ( s 1 = s ∣ O , λ o l d ) + γ ⟮ ∑ s = 1 N log ⁡ π s 1 − 1 ⟯ \sum_{s=1}^{N}\log{π_{s_1}}P(s_1=s|O,λ^{old})+γ\lgroup\sum_{s=1}^{N}\log{π_{s_1}}-1\rgroup s=1Nlogπs1P(s1=sO,λold)+γs=1Nlogπs11

        对其求偏导并令其等于 0,得: P ( s 1 = s ∣ O , λ o l d ) + γ π s = 0 P(s_1=s|O,λ^{old})+γπ_s=0 P(s1=sO,λold)+γπs=0

        对 s 求和得到 γ = − P ( O ∣ λ o l d ) γ=-P(O|λ^{old}) γ=P(Oλold),将此结果代入原式可得:

        π s = P ( s 1 = s ∣ λ o l d ) P ( O ∣ λ o l d ) π_s=\frac{P(s_1=s|λ^{old})}{P(O|λ^{old})} πs=P(Oλold)P(s1=sλold)


        2)对于第二项用同样方法可得

        a s j = ∑ t = 1 T − 1 P ( O , ∣ s t = s , s t + 1 = j , λ o l d ) ∑ t = 1 T − 1 P ( O , s t = s ∣ λ o l d ) a_{sj}=\frac{\sum_{t=1}^{T-1}P(O,|s_t=s,s_{t+1}=j,λ^{old})}{\sum_{t=1}^{T-1}P(O,s_t=s|λ^{old})} asj=t=1T1P(O,st=sλold)t=1T1P(O,st=sst+1=jλold)


        3)对于第三项,需要注意的是,只有在 0t = vk 时 bj(ot) 对 bj(k) 的偏导数才不为 0,以 I ( o t = v k ) I(o_t=v_k) I(ot=vk) 表示。接下来使用同样方法可得

        b j ( k ) = ∑ t = 1 T P ( O ∣ s t = j , λ o l d ) I ( o t = v k ) ∑ t = 1 T P ( O ∣ s t = j , λ o l d ) b_j(k)=\frac{\sum_{t=1}^{T}P(O|s_t=j,λ^{old})I(o_t=v_k)}{\sum_{t=1}^{T}P(O|s_t=j,λ^{old})} bj(k)=t=1TP(Ost=j,λold)t=1TP(Ost=j,λold)I(ot=vk)

    以上则将 λ 的各参数求出。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值