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

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

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

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

如果数据只包含观测序列,而没有状态序列,就需要使用无监督学习算法的 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)\} ,那么就可以使用极大似然估计法来估计 HMM 的参数。

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

      统计所有样本中初始状态为 q i q_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

    3. 观测概率的估计

      设样本中状态为 j j 且观测值为 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

      扫描二维码关注公众号,回复: 5154130 查看本文章
  • 无监督 Baum-Welch 算法

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

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

    • Baum-Welch 算法推导

      1. E 步

        对观测序列 O = ( o 1 , o 2 , . . . , o T ) O=(o_1,o_2,...,o_T) ,状态序列 S = ( s 1 , s 2 , . . . , s T ) S=(s_1,s_2,...,s_T) ,那么数据的对数似然函数为 log P ( O , S λ ) \log{P(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)

        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}

      2. M 步

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

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


        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})

        注意到 π s π_s 满足约束条件 s = 1 N log π s 1 = 1 \sum_{s=1}^{N}\log{π_{s_1}}=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

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

        对 s 求和得到 γ = P ( O λ o l d ) γ=-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})}


        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})}


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

        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})}

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

猜你喜欢

转载自blog.csdn.net/weixin_37352167/article/details/86493472