隐马尔科夫模型(HMM)原理小结(2)

隐马尔科夫模型(HMM)原理小结(2)

  • 4. 基本问题二:学习问题 模型参数估计 λ = ( A , B , π ) \lambda=(A,B,\pi) λ=(A,B,π)
    • 4.1 监督学习方法
      • (1)转移概率 a i j a_{ij} aij的估计
      • (2)观测概率 b j ( k ) b_j(k) bj(k)的估计
      • (3)初始状态概率 π i \pi_i πi的估计
    • 4.2 无监督学习方法:Baum-Welch算法(EM)
      • 4.2.1 确定完全数据的对数似然函数
      • 4.2.2 E步:求 Q Q Q函数 Q ( λ ∣ λ ˉ ) Q(\lambda|\bar{\lambda}) Q(λλˉ)
      • 4.2.3 M步:极大化 Q Q Q函数求解模型参数 A , B , π A,B,\pi A,B,π
        • (1)初始状态概率 π i \pi_i πi的估计**
        • (2)转移概率 a i j a_{ij} aij的估计
        • (3)观测概率 b j ( k ) b_j(k) bj(k)的估计
      • 4.2.4 Baum-Welch算法描述
  • 5. 基本问题三:预测问题 状态序列概率 P ( I ∣ O , λ ) P(I|O,\lambda) P(IO,λ)计算
    • 5.1 近似算法
    • 5.2 维特比(viterbi)算法
      • 维特比算法描述
  • 6. HMM vs RNN
  • 7. HMM等生成式模型存在的问题
  • 完整代码地址
  • 参考

HMM系列文章:

隐马尔科夫模型(HMM)原理小结(1)
隐马尔科夫模型(HMM)原理小结(2)
手撸HMM实现词性标注(Part-of-speech)

本博客中使用到的完整代码请移步至: 我的github:https://github.com/qingyujean/Magic-NLPer,求赞求星求鼓励~~~

4. 基本问题二:学习问题 模型参数估计 λ = ( A , B , π ) \lambda=(A,B,\pi) λ=(A,B,π)

4.1 监督学习方法

训练数据包含观测序列状态序列。直接统计频数求概率。

假设训练样本包含了长度相同的观测序列以及对应的状态序列 { ( 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)转移概率 a i j a_{ij} aij的估计

设样本中在时刻 t → t + 1 t\rightarrow t+1 tt+1 由状态 i → j i \rightarrow j ij 转移的频数为 A i j A_{ij} Aij,则转移概率 a i j a_{ij} aij的估计是:

a ^ i j = A i j ∑ j = 1 N A i j , i , j = 1 , 2 , . . . , N \hat{a}_{ij}=\frac{A_{ij}}{\sum\limits_{j=1}^N A_{ij}},\quad i,j = 1,2,...,N a^ij=j=1NAijAij,i,j=1,2,...,N

(2)观测概率 b j ( k ) b_j(k) bj(k)的估计

设样本中由状态 j j j 产生观测 k k k 的频数为 B j k B_{jk} Bjk,则观测概率 b j ( k ) b_j(k) bj(k)的估计是:

b ^ j ( k ) = B j k ∑ k = 1 M B j k , j = 1 , 2 , . . . , N ; k = 1 , 2 , . . . , M \hat{b}_j(k)=\frac{B_{jk}}{\sum\limits_{k=1}^M B_{jk}},\quad j=1,2,...,N;\quad k=1,2,...,M b^j(k)=k=1MBjkBjk,j=1,2,...,N;k=1,2,...,M

(3)初始状态概率 π i \pi_i πi的估计

样本中初始状态为 q i q_i qi 的频数 为初始状态概率 π i \pi_i πi的估计。

4.2 无监督学习方法:Baum-Welch算法(EM)

训练数据仅包含观测序列

假设训练样本中只包含长度为 T T T 的观测序列 { O 1 , O 2 , ⋯   , O S } \{O_1,O_2,\cdots,O_S\} { O1,O2,,OS}而没有对应的状态序列,把观测序列数据 O O O看做显变量,状态序列数据 I I I看做不可观测的隐变量 { I 1 , I 2 , ⋯   , I S } \{I_1,I_2,\cdots,I_S\} { I1,I2,,IS},那么此时HMM就可看做是含有隐变量的概率模型:

P ( O ∣ λ ) = ∑ I P ( O , I ∣ λ ) = ∑ I P ( O ∣ I , λ ) P ( I ∣ λ ) P(O \mid \lambda)=\sum_{I} P(O,I \mid \lambda)=\sum_{I} P(O \mid I, \lambda) P(I \mid \lambda) P(Oλ)=IP(O,Iλ)=IP(OI,λ)P(Iλ)

其参数的学习可以使用 EM算法 来求解。

4.2.1 确定完全数据的对数似然函数

l o g P ( O , I / λ ) logP(O,I/\lambda) logP(O,I/λ)

P ( O , I / λ ) = π i 1 b i 1 ( o 1 ) a i 1 i 2 b i 2 ( o 2 ) . . . a i T − 1 i T b i T ( o T ) P(O,I/\lambda)=\pi_{i_1}b_{i_1}(o_1)a_{i_1 i_2}b_{i_2}(o_2)...a_{i_{T-1} i_T}b_{i_T}(o_T) P(O,I/λ)=πi1bi1(o1)ai1i2bi2(o2)...aiT1iTbiT(oT)

4.2.2 E步:求 Q Q Q函数 Q ( λ ∣ λ ˉ ) Q(\lambda|\bar{\lambda}) Q(λλˉ)

λ \lambda λ 是需要极大化的HMM的参数, λ ˉ \bar{\lambda} λˉ 是当前迭代步中模型参数的估计值,那么 Q Q Q函数可写为:

Q ( λ ∣ λ ˉ ) = E I [ l o g P ( O , I / λ ) ∣ O , λ ˉ ] = ∑ I l o g P ( O , I ∣ λ ) P ( I ∣ O , λ ˉ ) = ∑ I l o g P ( O , I ∣ λ ) P ( I , O ∣ λ ˉ ) P ( O ∣ λ ˉ ) \begin{aligned}Q(\lambda|\bar{\lambda})&=E_I \big[logP(O,I/\lambda)|O,\bar{\lambda}\big]\\&=\sum_{I} log P(O,I \mid \lambda)P(I|O,\bar{\lambda})\\&=\sum_{I} log P(O,I \mid \lambda)\frac{P(I,O|\bar{\lambda})}{P(O|\bar{\lambda})}\end{aligned} Q(λλˉ)=EI[logP(O,I/λ)O,λˉ]=IlogP(O,Iλ)P(IO,λˉ)=IlogP(O,Iλ)P(Oλˉ)P(I,Oλˉ)

因为 P ( O ∣ λ ˉ ) P(O|\bar{\lambda}) P(Oλˉ)对于待求解参数 λ \lambda λ 来说相当于常数,对求解 Q Q Q函数的极大化(求偏导令其等于0)没什么影响,所以去掉该项以简化 Q Q Q函数,所以 Q Q Q 函数为:

Q ( λ ∣ λ ˉ ) = ∑ I l o g P ( O , I ∣ λ ) P ( I , O ∣ λ ˉ ) \begin{aligned}Q(\lambda|\bar{\lambda})=\sum_{I} log P(O,I \mid \lambda)P(I,O|\bar{\lambda})\end{aligned} Q(λλˉ)=IlogP(O,Iλ)P(I,Oλˉ)

注意有:

P ( O , I / λ ) = π i 1 b i 1 ( o 1 ) a i 1 i 2 b i 2 ( o 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 ) \begin{aligned}P(O,I/\lambda)&=\pi_{i_1}b_{i_1}(o_1)a_{i_1 i_2}b_{i_2}(o_2)...a_{i_{T-1} i_T}b_{i_T}(o_T)\\&=\pi_{i_1}\cdot \prod\limits_{t=1}^{T-1} a_{i_t i_{t+1}} \cdot \prod\limits_{t=1}^{T} b_{i_t}(o_t)\end{aligned} P(O,I/λ)=πi1bi1(o1)ai1i2bi2(o2)...aiT1iTbiT(oT)=πi1t=1T1aitit+1t=1Tbit(ot)

那么

l o g P ( O , I / λ ) = l o g π i 1 + ∑ t = 1 T − 1 l o g a i t i t + 1 + ∑ t = 1 T l o g b i t ( o t ) log P(O,I/\lambda)=log \pi_{i_1}+ \sum\limits_{t=1}^{T-1} log a_{i_t i_{t+1}} +\sum\limits_{t=1}^{T} log b_{i_t}(o_t) logP(O,I/λ)=logπi1+t=1T1logaitit+1+t=1Tlogbit(ot)

所以

Q ( λ ∣ λ ˉ ) = ∑ I l o g P ( O , I ∣ λ ) P ( I , O ∣ λ ˉ ) = ∑ I l o g   π i 1 P ( I , O ∣ λ ˉ ) ⏟ J 1 + ∑ I ( ∑ t = 1 T − 1 l o g   a i t i t + 1 ) P ( I , O ∣ λ ˉ ) ⏟ J 2 + ∑ I ( ∑ t = 1 T l o g b i t ( o t ) ) P ( I , O ∣ λ ˉ ) ⏟ J 3 \begin{aligned}Q(\lambda|\bar{\lambda})&=\sum_{I} log P(O,I \mid \lambda)P(I,O|\bar{\lambda})\\&=\underbrace{\sum_{I} log \,\pi_{i_1}P(I,O|\bar{\lambda})}_{J_1}+\underbrace{\sum_{I} \big( \sum\limits_{t=1}^{T-1} log \,a_{i_t i_{t+1}}\big)P(I,O|\bar{\lambda})}_{J_2}\\&+\underbrace{\sum_{I} \big( \sum\limits_{t=1}^{T} log b_{i_t}(o_t) \big)P(I,O|\bar{\lambda})}_{J_3}\end{aligned} Q(λλˉ)=IlogP(O,Iλ)P(I,Oλˉ)=J1 Ilogπi1P(I,Oλˉ)+J2 I(t=1T1logaitit+1)P(I,Oλˉ)+J3 I(t=1Tlogbit(ot))P(I,Oλˉ)

4.2.3 M步:极大化 Q Q Q函数求解模型参数 A , B , π A,B,\pi A,B,π

由于要极大化的参数刚好单独出现在 Q Q Q函数的3个不同的项中,所以只需对各项分别求极大化。

(1)初始状态概率 π i \pi_i πi的估计**

J 1 = ∑ I l o g   π i 1 P ( I , O ∣ λ ˉ ) = ∑ i = 1 N l o g   π i P ( O , i 1 = i ∣ λ ˉ ) J_1=\sum_{I} log \,\pi_{i_1}P(I,O|\bar{\lambda})=\sum_{i=1}^N log \,\pi_{i}P(O,i_1=i|\bar{\lambda}) J1=Ilogπi1P(I,Oλˉ)=i=1NlogπiP(O,i1=iλˉ)

注意到 π i \pi_i πi 满足约束: ∑ i = 1 N π i = 1 \sum\limits_{i=1}^N \pi_i=1 i=1Nπi=1,所以可以构建拉格朗日函数:

L ( π i , γ ) = ∑ i = 1 N l o g   π i P ( O , i 1 = i ∣ λ ˉ ) + γ ( ∑ i = 1 N π i − 1 ) L(\pi_i,\gamma)=\sum_{i=1}^N log \,\pi_{i}P(O,i_1=i|\bar{\lambda})+\gamma\big(\sum\limits_{i=1}^N \pi_i-1 \big) L(πi,γ)=i=1NlogπiP(O,i1=iλˉ)+γ(i=1Nπi1)

求偏导并令其等于0: ∂ L ( π i , γ ) ∂ π i = 0 \frac{\partial L(\pi_i,\gamma)}{\partial \pi_i}=0 πiL(πi,γ)=0,求得:

π i = P ( O , i 1 = i ∣ λ ˉ ) P ( O ∣ λ ˉ ) = γ 1 ( i ) \pi_i=\frac{P(O,i_1=i|\bar{\lambda})}{P(O|\bar{\lambda})}=\gamma_{1}(i) πi=P(Oλˉ)P(O,i1=iλˉ)=γ1(i)

(2)转移概率 a i j a_{ij} aij的估计

J 2 = ∑ I ( ∑ t = 1 T − 1 l o g   a i t i t + 1 ) P ( I , O ∣ λ ˉ ) = ∑ i = 1 N ∑ j = 1 N ∑ t = 1 T − 1 l o g   a i j P ( O , i t = i , i t + 1 = j ∣ λ ˉ ) J_2=\sum_{I} \big( \sum\limits_{t=1}^{T-1} log \,a_{i_t i_{t+1}}\big)P(I,O|\bar{\lambda})=\sum_{i=1}^N\sum_{j=1}^N \sum\limits_{t=1}^{T-1} log \,a_{ij}P(O,i_t=i,i_{t+1}=j|\bar{\lambda}) J2=I(t=1T1logaitit+1)P(I,Oλˉ)=i=1Nj=1Nt=1T1logaijP(O,it=i,it+1=jλˉ)

注意到 a i j a_{ij} aij 满足约束: ∑ j = 1 N a i j = 1 \sum\limits_{j=1}^N a_{ij}=1 j=1Naij=1,所以可以构建拉格朗日函数:

L ( a i j , γ ) = ∑ i = 1 N ∑ j = 1 N ∑ t = 1 T − 1 l o g   a i j P ( O , i t = i , i t + 1 = j ∣ λ ˉ ) + γ ( ∑ j = 1 N a i j − 1 ) L(a_{ij},\gamma)=\sum_{i=1}^N\sum_{j=1}^N \sum\limits_{t=1}^{T-1} log \,a_{ij}P(O,i_t=i,i_{t+1}=j|\bar{\lambda})+\gamma\big(\sum\limits_{j=1}^N a_{ij}-1 \big) L(aij,γ)=i=1Nj=1Nt=1T1logaijP(O,it=i,it+1=jλˉ)+γ(j=1Naij1)

求偏导并令其等于0: ∂ L ( a i j , γ ) ∂ π i = 0 \frac{\partial L(a_{ij},\gamma)}{\partial \pi_i}=0 πiL(aij,γ)=0,求得:

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 ∣ λ ˉ ) = ∑ t = 1 T − 1 ξ t ( i , j ) ∑ t = 1 T − 1 γ t ( i ) a_{ij}=\frac{\sum\limits_{t=1}^{T-1} P(O,i_t=i,i_{t+1}=j|\bar{\lambda})}{\sum\limits_{t=1}^{T-1} P(O,i_t=i|\bar{\lambda})}=\frac{\sum\limits_{t=1}^{T-1} \xi_{t}(i, j)}{\sum\limits_{t=1}^{T-1}\gamma_{t}(i) } aij=t=1T1P(O,it=iλˉ)t=1T1P(O,it=i,it+1=jλˉ)=t=1T1γt(i)t=1T1ξt(i,j)

(3)观测概率 b j ( k ) b_j(k) bj(k)的估计

J 3 = ∑ I ( ∑ t = 1 T l o g b i t ( o t ) ) P ( I , O ∣ λ ˉ ) = ∑ j = 1 N ∑ t = 1 T l o g b j ( o t ) P ( O , i t = j ∣ λ ˉ ) J_3=\sum_{I} \big( \sum\limits_{t=1}^{T} log b_{i_t}(o_t) \big)P(I,O|\bar{\lambda})=\sum_{j=1}^N \sum\limits_{t=1}^{T} log b_{j}(o_t) P(O,i_t=j|\bar{\lambda}) J3=I(t=1Tlogbit(ot))P(I,Oλˉ)=j=1Nt=1Tlogbj(ot)P(O,it=jλˉ)

注意到 b j ( k ) b_{j}(k) bj(k) 满足约束: ∑ k = 1 M b j ( k ) = 1 \sum\limits_{k=1}^M b_{j}(k)=1 k=1Mbj(k)=1,所以可以构建拉格朗日函数:

L ( b j ( k ) , γ ) = ∑ j = 1 N ∑ t = 1 T l o g b j ( o t ) P ( O , i t = j ∣ λ ˉ ) + γ ( ∑ k = 1 M b j ( k ) − 1 ) L(b_{j}(k),\gamma)=\sum_{j=1}^N \sum\limits_{t=1}^{T} log b_{j}(o_t) P(O,i_t=j|\bar{\lambda})+\gamma\big(\sum\limits_{k=1}^M b_{j}(k)-1 \big) L(bj(k),γ)=j=1Nt=1Tlogbj(ot)P(O,it=jλˉ)+γ(k=1Mbj(k)1)

求偏导并令其等于0: ∂ L ( b j ( k ) , γ ) ∂ π i = 0 \frac{\partial L(b_{j}(k),\gamma)}{\partial \pi_i}=0 πiL(bj(k),γ)=0,求得:

b j ( k ) = ∑ t = 1 T P ( O , i t = j ∣ λ ˉ )   I ( o t = v k ) ∑ t = 1 T P ( O , i t = i ∣ λ ˉ ) = ∑ t = 1 , o t = v k T γ t ( j ) ∑ t = 1 T γ t ( j ) b_{j}(k)=\frac{\sum\limits_{t=1}^{T} P(O,i_t=j|\bar{\lambda})\,I(o_t=v_k)}{\sum\limits_{t=1}^{T} P(O,i_t=i|\bar{\lambda})}=\frac{\sum\limits_{t=1,o_t=v_k}^{T}\gamma_{t}(j)}{\sum\limits_{t=1}^{T}\gamma_{t}(j)} bj(k)=t=1TP(O,it=iλˉ)t=1TP(O,it=jλˉ)I(ot=vk)=t=1Tγt(j)t=1,ot=vkTγt(j)

注意只有在 o t = v k o_t=v_k ot=vk b j ( o t ) b_{j}(o_t) bj(ot) b j ( k ) b_{j}(k) bj(k) 的偏导数才不为0,上式中以 I ( o t = v k ) I(o_t=v_k) I(ot=vk)表示。

联系一下前面的期望的计算,这里其实就是从“平均”意义上去求解参数的。

4.2.4 Baum-Welch算法描述

隐马尔科夫模型(HMM)原理小结(2)_第1张图片

5. 基本问题三:预测问题 状态序列概率 P ( I ∣ O , λ ) P(I|O,\lambda) P(IO,λ)计算

arg ⁡ max ⁡ I P ( I ∣ O , λ ) \arg \max\limits_I P(I|O,\lambda) argImaxP(IO,λ) 等价于求 arg ⁡ max ⁡ I P ( I , O ∣ λ ) \arg \max\limits_I P(I,O|\lambda) argImaxP(I,Oλ) ,因为因子 1 P ( O ∣ λ ) \frac{1}{P(O|\lambda)} P(Oλ)1对于 I I I 来说相当于常数项,对其求max 无影响。

5.1 近似算法

近似算法类似于贪心算法:在每个时刻 t t t选择在该时刻最有可能出现的状态 i t ∗ i^*_t it,从而得到一个状态序列 I ∗ = ( i 1 ∗ , i 2 ∗ , ⋯   , i T ∗ ) I^*=(i^*_1,i^*_2,\cdots,i^*_T) I=(i1,i2,,iT),将它作为预测的结果。

每个时刻 t t t选择在该时刻最有可能出现的状态 i t ∗ i^*_t it
i t ∗ = arg ⁡ max ⁡ 1 ⩽ i ⩽ N [ γ t ( i ) ] , t = 1 , 2 , ⋯   , T i_{t}^{*}=\arg \max _{1 \leqslant i \leqslant N}\left[\gamma_{t}(i)\right], \quad t=1,2, \cdots, T it=arg1iNmax[γt(i)],t=1,2,,T

  • 优点:计算简单
  • 缺点:不能保证预测的状态整体上是最有可能发生的。而且这样产生的状态序列可能事实上根本不可能存在,例如可能存在转移概率为0的情况。

5.2 维特比(viterbi)算法

维特比算法是利用 动态规划 来求解HMM的预测问题的,即使用DP求解概率最大路径,或者叫最优路径

导入两个变量 δ \delta δ Ψ \Psi Ψ,定义在时刻 t t t状态为 i i i的所有单个路径 ( i 1 , i 2 , ⋯   , i t ) (i_1,i_2,\cdots,i_t) (i1,i2,,it)中概率最大值为

δ t ( i ) = max ⁡ i 1 , i 2 , ⋯   , i t P ( i t = i , i t − 1 , ⋯   , i 1 , o t , ⋯   , o 1 ∣ λ ) , i = 1 , 2 , ⋯   , N \delta_{t}(i) =\max _{i_{1}, i_{2}, \cdots, i_{t}} P\left(i_{t}=i, i_{t-1}, \cdots, i_{1}, o_{t}, \cdots, o_{1} \mid \lambda\right),\quad i=1,2, \cdots, N δt(i)=i1,i2,,itmaxP(it=i,it1,,i1,ot,,o1λ),i=1,2,,N

可得变量 δ \delta δ的递推公式为:

δ t + 1 ( i ) = max ⁡ i 1 , i 2 , ⋯   , i t P ( i t + 1 = i , i t , ⋯   , i 1 , o t + 1 , ⋯   , o 1 ∣ λ ) = max ⁡ 1 ⩽ j ⩽ N [ δ t ( j ) a j i ] b i ( o t + 1 ) , i = 1 , 2 , ⋯   , N ; t = 1 , 2 , ⋯   , T − 1 \begin{aligned}\delta_{t+1}(i) &=\max _{i_{1}, i_{2}, \cdots, i_{t}} P\left(i_{t+1}=i, i_{t}, \cdots, i_{1}, o_{t+1}, \cdots, o_{1} \mid \lambda\right) \\&=\max _{1 \leqslant j \leqslant N}\left[\delta_{t}(j) a_{j i}\right] b_{i}\left(o_{t+1}\right), \quad i=1,2, \cdots, N ; \quad t=1,2, \cdots, T-1\end{aligned} δt+1(i)=i1,i2,,itmaxP(it+1=i,it,,i1,ot+1,,o1λ)=1jNmax[δt(j)aji]bi(ot+1),i=1,2,,N;t=1,2,,T1

定义在时刻 t t t状态为 i i i的所有单个路径 ( i 1 , i 2 , ⋯   , i t − 1 , i ) (i_1,i_2,\cdots,i_{t-1},i) (i1,i2,,it1,i)中概率最大的路径的第 t − 1 t-1 t1个结点为

Ψ t ( i ) = arg ⁡ max ⁡ 1 ⩽ j ⩽ N [ δ t − 1 ( j ) a j i ] , i = 1 , 2 , ⋯   , N \Psi_{t}(i)=\arg \max _{1 \leqslant j \leqslant N}\left[\delta_{t-1}(j) a_{j i}\right], \quad i=1,2, \cdots, N Ψt(i)=arg1jNmax[δt1(j)aji],i=1,2,,N

维特比算法描述

隐马尔科夫模型(HMM)原理小结(2)_第2张图片
隐马尔科夫模型(HMM)原理小结(2)_第3张图片

6. HMM vs RNN

可以说,HMM能干的事情LSTM(RNN)都能干,如果数据量大,LSTM(RNN)是首选,数据量小的时候,HMM是首选。

下面的对比内容摘自:从HMM到RNN

HMM和RNN在基本结构上是挺像的,都是通过hidden state的演化来刻画序列间的依赖关系。不同是:

  • HMM本质是一个概率模型,而RNN不是,RNN没有马尔科夫假设,可以考虑很长的历史信息。
  • 隐状态的表示: HMM是one hot, RNN是distributed representation。RNN的表示能力强很多,或者说在面对高维度时,表示效率更高。类似nlp里,对单个token的表示,一种是onehot, 一种是word vector。
  • 隐状态的演化方式: HMM是线性的,RNN是高度非线性。
  • 深度:lstm可以增加depth, 随着depth增加,表示能力指数增加。

RNN的最大优势在于,可以真正充分地利用所有上文信息来预测下一个词,而不像HMM那样,只能开一个k个词的窗口,只用前k个词来预测下一个词。从形式上看,这是一个非常“终极”的模型,毕竟语言模型里能用到的信息,他全用上了。

7. HMM等生成式模型存在的问题

  1. 由于生成模型定义的是联合概率,必须列举所有观察序列的可能值,这对多数领域来说是比较困难的。
  2. HMM的观测独立性假设:基于观察序列中的每个元素都相互条件独立,即在任何时刻观察值仅仅与状态(即要标注的标签)有关。对于简单的数据集,这个假设倒是合理;但大多数现实世界中的真实观察序列是由多个相互作用的特征和观察序列中较长范围内的元素之间的依赖而形成的

完整代码地址

完整代码请移步至: 我的github:https://github.com/qingyujean/Magic-NLPer,求赞求星求鼓励~~~

最后:如果本文中出现任何错误,请您一定要帮忙指正,感激~

参考

[1] 统计学习方法(第2版) 李航
[2] 从HMM到RNN

你可能感兴趣的:(NLP,MachineLearning,机器学习,NLP)