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

马尔科夫链

    马尔可夫链是一组具有马尔可夫性质的离散随机变量的集合。具体地,随机变量集合 X = { X n : n > 0 } \bold X=\{X_n:n>0\} X={Xn:n>0},若随机变量的取值都在数据集内 X n = s i , s i ∈ s X_n =s_i, s_i \in \bold s Xn=si,sis ,且随机变量的条件概率满足如下关系:
p ( X t + 1 ∣ X t , X t − 1 , . . . , X 2 , X 1 ) = p ( X t + 1 ∣ X t ) p(X_{t+1}|X_t,X_{t-1},...,X_2,X_1) = p(X_{t+1}|X_t) p(Xt+1Xt,Xt1,...,X2,X1)=p(Xt+1Xt) X \bold X X被称为马尔可夫链, s \bold s s被称为状态空间,马尔可夫链在状态空间内的取值称为状态。
    用通俗易懂的话就是:当前状态只依赖于前一时刻的状态,与其他时刻状态无关。

隐马尔可夫模型

    隐马尔可夫模型中引入了隐状态,隐状态符合马尔可夫链特性。示意图如下:

    隐马尔可夫模型(HMM)可以用五个元素来描述,包括2个状态集合和3个概率矩阵:
    1. 隐含状态 Q = { q 1 , . . . , q N } Q=\{q_1,...,q_N\} Q={q1,...,qN}。隐状态的数量为 N N N,这些状态之间满足马尔可夫性质,是马尔可夫模型中实际所隐含的状态。这些状态通常无法通过直接观测而得到,当前状态只依赖于前一时刻的状态。满足齐次马尔可夫假设,可以用一下公式来描述( i t i_t it表示t时刻的状态):
p ( i t ∣ i i − 1 . . . , i 2 , i 1 ) = p ( i t ∣ i t − 1 ) p(i_t | i_{i-1}...,i_2,i_1) = p(i_t|i_{t-1}) p(itii1...,i2,i1)=p(itit1)    2. 可观测状态 V = { v 1 , . . . , v M } V=\{v_1,...,v_M\} V={v1,...,vM}。观测序列的数量为 M M M,在模型中与隐含状态相关联,可通过直接观测而得到,当前时刻的观测值只依赖于当前时刻的状态。满足观测独立性假设,可以用以下公式描述( o t o_t ot表示t时刻的观测序列):
p ( o t ∣ o t − 1 , . . . , o 1 , i t , i t − 1 , . . . , i 1 ) = p ( o t ∣ i t ) p(o_t | o_{t-1},...,o_1, i_t,i_{t-1},...,i_1) = p(o_t | i_t) p(otot1,...,o1,it,it1,...,i1)=p(otit)    3. 初始状态概率矩阵 π \pi π。表示隐含状态在初始时刻t=1的概率矩阵,也就是t=1时刻出现各种状态的概率。例如t=1时, p ( q 1 ) = p 1 ,   p ( q 2 ) = p 2 ,   p ( q 3 ) = p 3 p(q_1)=p_1,\space p(q_2)=p_2, \space p(q_3)=p_3 p(q1)=p1, p(q2)=p2, p(q3)=p3,则初始状态概率矩阵 π = [ p 1 , p 2 , p 3 ] \pi =[ p_1, p_2, p_3 ] π=[p1,p2,p3].
    4. 隐含状态转移概率矩阵 A A A。描述了HMM模型中各个状态之间的转移概率。 A A A的维度为 ( N , N ) (N, N) (N,N),其中 a i j = p ( i t + 1 = q j ∣ i t = q i )    ( 1 &lt; = i , j &lt; = N ) a_{ij}=p(i_{t+1}=q_j | i_{t}=q_i)\space \space (1 &lt;= i, j &lt;= N) aij=p(it+1=qjit=qi)  (1<=i,j<=N)表示在 t 时刻、状态为 q i q_i qi的条件下,在 t+1 时刻状态是 q j q_j qj 的概率。
    5. 观测状态转移概率矩阵 B B B。描述了HMM模型中各个状态到观测序列的概率。 B B B的维度为 ( N , M ) (N, M) (N,M),则: b j ( k ) = p ( o t = v k ∣ i t = q j ) ,    1 ≤ j ≤ N , 1 ≤ k ≤ M b_{j}(k)=p(o_t=v_k | i_t=q_j), \space \space 1 \le j \le N,1 \le k \le M bj(k)=p(ot=vkit=qj),  1jN,1kM, 表示在 t 时刻、隐含状态是 q j q_j qj 条件下,观察状态为 v k v_k vk的概率。
    一般的,可以用 λ = ( A , B , π ) \lambda = (A,B,\pi) λ=(A,B,π)三元组来简洁的表示一个隐马尔可夫模型。隐马尔可夫模型实际上是标准马尔可夫模型的扩展,添加了可观测状态集合和这些状态与隐含状态之间的概率关系。

三个问题
  1. 评价问题
        问题描述:此问题主要是在已知模型参数 λ = ( A , B , π ) \lambda = (A,B,\pi) λ=(A,B,π)的条件下,求给定观测序列出现的概率。设状态序列为 I = { i 1 , i 2 , . . . , i T } I=\{i_1, i_2,...,i_T\} I={i1,i2,...,iT}:,其对应的观测序列为: O = { o 1 , o 2 , . . . , o T } O=\{o_1, o_2,...,o_T\} O={o1,o2,...,oT},概率可以表示为:
    p ( O ∣ λ ) = ∑ I p ( O , I ∣ λ ) = ∑ I p ( O ∣ I , λ ) p ( I ∣ λ ) \begin{aligned} p(O | \lambda) &amp;= \sum_I p(O, I | \lambda) \\ &amp;= \sum_I p(O | I, \lambda)p(I | \lambda) \end{aligned} p(Oλ)=Ip(O,Iλ)=Ip(OI,λ)p(Iλ)
        由于状态序列 I I I的长度为 T T T,每个状态有 N N N种可能,所以状态序列 I I I共有 N T N^T NT种可能,然后每种可能计算与观测序列O的概率,所以时间复杂度为: O ( T N T ) O(TN^T) O(TNT)。对于此方法的时间复杂度太高,实际上不可行。
        当状态数量过多或状态序列长度过大时,直接求解就会相当困难,于是需要使用其他可行的算法代替。这里介绍两种算法:前向算法和后向算法。
    前向算法
        首先,我们设在时刻 t t t的状态为 q i q_i qi,且观测序列为 o 1 , o 2 , . . . , o t o_1, o_2,...,o_t o1,o2,...,ot的概率为:
    α t ( i ) = p ( o 1 , o 2 , . . . , o t , i t = q i ∣ λ ) \alpha_t(i)=p(o_1, o_2,...,o_t, i_t=q_i | \lambda) αt(i)=p(o1,o2,...,ot,it=qiλ)
        接着,我们设在时刻 t t t的状态为 q j q_j qj,且观测序列为 o 1 , o 2 , . . . , o t + 1 o_1, o_2,...,o_{t+1} o1,o2,...,ot+1的概率为:
    α t + 1 ( i ) = p ( o 1 , o 2 , . . . , o t + 1 , i t + 1 = q i ∣ λ ) = ∑ j = 1 N p ( o 1 , o 2 , . . . , o t + 1 , i t = q j , i t + 1 = q i ∣ λ ) = ∑ j = 1 N p ( o 1 , o 2 , . . . , o t , i t = q j , i t + 1 = q i ∣ λ ) p ( o t + 1 ∣ o 1 , o 2 , . . . , o t , i t = q j , i t + 1 = q i , λ ) = ∑ j = 1 N p ( o 1 , o 2 , . . . , o t , i t = q j , i t + 1 = q i ∣ λ ) p ( o t + 1 ∣ i t + 1 = q i , λ ) = ∑ j = 1 N p ( o 1 , o 2 , . . . , o t , i t = q j ∣ λ ) p ( o t + 1 ∣ i t + 1 = q i , λ ) p ( i t + 1 = q i ∣ o 1 , o 2 , . . . , o t , i t = q j , λ ) = ∑ j = 1 N p ( o 1 , o 2 , . . . , o t , i t = q j ∣ λ ) p ( o t + 1 ∣ i t + 1 = q i , λ ) p ( i t + 1 = q i ∣ i t = q j , λ ) = ∑ j = 1 N α t ( j ) b i ( o t + 1 ) a j i = b i ( o t + 1 ) ∑ j = 1 N α t ( j ) a j i \begin{aligned} \alpha_{t+1}(i) &amp;= p(o_1, o_2,...,o_{t+1}, i_{t+1}=q_i | \lambda) \\ &amp;= \sum_{j=1}^{N}p(o_1, o_2,...,o_{t+1}, i_t=q_j, i_{t+1}=q_i | \lambda) \\ &amp;= \sum_{j=1}^{N}p(o_1, o_2,...,o_t, i_t=q_j, i_{t+1}=q_i| \lambda) p(o_{t+1} | o_1, o_2,...,o_t, i_t=q_j, i_{t+1}=q_i, \lambda)\\ &amp;= \sum_{j=1}^{N}p(o_1, o_2,...,o_t, i_t=q_j, i_{t+1}=q_i| \lambda) p(o_{t+1} | i_{t+1}=q_i, \lambda)\\ &amp;= \sum_{j=1}^{N}p(o_1, o_2,...,o_t, i_t=q_j| \lambda) p(o_{t+1} | i_{t+1}=q_i, \lambda)p(i_{t+1}=q_i | o_1, o_2,...,o_t, i_t=q_j, \lambda)\\ &amp;= \sum_{j=1}^{N}p(o_1, o_2,...,o_t, i_t=q_j| \lambda) p(o_{t+1} | i_{t+1}=q_i, \lambda)p(i_{t+1}=q_i |i_t=q_j, \lambda)\\ &amp;= \sum_{j=1}^{N}\alpha_t(j) b_i(o_{t+1})a_{ji}\\ &amp;= b_i(o_{t+1})\sum_{j=1}^{N}\alpha_t(j) a_{ji}\\ \end{aligned} αt+1(i)=p(o1,o2,...,ot+1,it+1=qiλ)=j=1Np(o1,o2,...,ot+1,it=qj,it+1=qiλ)=j=1Np(o1,o2,...,ot,it=qj,it+1=qiλ)p(ot+1o1,o2,...,ot,it=qj,it+1=qi,λ)=j=1Np(o1,o2,...,ot,it=qj,it+1=qiλ)p(ot+1it+1=qi,λ)=j=1Np(o1,o2,...,ot,it=qjλ)p(ot+1it+1=qi,λ)p(it+1=qio1,o2,...,ot,it=qj,λ)=j=1Np(o1,o2,...,ot,it=qjλ)p(ot+1it+1=qi,λ)p(it+1=qiit=qj,λ)=j=1Nαt(j)bi(ot+1)aji=bi(ot+1)j=1Nαt(j)aji
        特别的,当 t = 1 t=1 t=1时刻, α 1 = b i ( o 1 ) π i \alpha_1=b_i(o_1)\pi_i α1=bi(o1)πi,其中 1 ≤ i ≤ N 1\le i \le N 1iN
    后向算法
        首先,我们设在时刻 t t t的状态为 q i q_i qi,且观测序列为 o t + 1 , o t + 2 , . . . , o T o_{t+1}, o_{t+2},...,o_T ot+1,ot+2,...,oT的概率为:
    β t ( i ) = p ( o t + 1 , o t + 2 , . . . , o T ∣ i t = q i , λ ) \beta_t(i)=p(o_{t+1}, o_{t+2},...,o_T | i_t=q_i, \lambda) βt(i)=p(ot+1,ot+2,...,oTit=qi,λ)
        接着,我们设在时刻 t − 1 t-1 t1的状态为 q i q_i qi,且观测序列为 o t , o t + 1 , . . . , o T o_t, o_{t+1},...,o_T ot,ot+1,...,oT的概率为:
    β t − 1 ( i ) = p ( o t , o t + 1 , . . . , o T ∣ i t − 1 = q i , λ ) = ∑ j = 1 N p ( o t , o t + 1 , . . . , o T , i t = q j ∣ i t − 1 = q i , λ ) = ∑ j = 1 N p ( o t + 1 , . . . , o T , i t = q j ∣ i t − 1 = q i , λ ) p ( o t ∣ o t + 1 , . . . , o T , i t − 1 = q i , i t = q j , λ ) = ∑ j = 1 N p ( o t + 1 , . . . , o T , i t = q j ∣ i t − 1 = q i , λ ) p ( o t ∣ i t = q j , λ ) = ∑ j = 1 N p ( o t + 1 , . . . , o T ∣ i t − 1 = q i , i t = q j , λ ) p ( i t = q j ∣ o t + 1 , . . . , o T , i t − 1 = q i , λ ) p ( o t ∣ i t = q j , λ ) = ∑ j = 1 N p ( o t + 1 , . . . , o T ∣ i t = q j , λ ) p ( i t = q j ∣ i t − 1 = q i , λ ) p ( o t ∣ i t = q j , λ ) = ∑ j = 1 N β t ( j ) a i j b j ( o t ) \begin{aligned} \beta_{t-1}(i) &amp;=p(o_t, o_{t+1},...,o_T | i_{t-1}=q_i, \lambda) \\ &amp;=\sum_{j=1}^Np(o_t, o_{t+1},...,o_T, i_t=q_j | i_{t-1}=q_i, \lambda) \\ &amp;=\sum_{j=1}^Np(o_{t+1},...,o_T, i_t=q_j | i_{t-1}=q_i, \lambda)p(o_t | o_{t+1},...,o_T, i_{t-1}=q_i, i_t=q_j, \lambda) \\ &amp;=\sum_{j=1}^Np(o_{t+1},...,o_T, i_t=q_j |i_{t-1}=q_i, \lambda)p(o_t | i_t=q_j, \lambda) \\ &amp;=\sum_{j=1}^Np(o_{t+1},...,o_T|i_{t-1}=q_i, i_t=q_j, \lambda)p(i_t=q_j | o_{t+1},...,o_T, i_{t-1}=q_i, \lambda)p(o_t | i_t=q_j, \lambda) \\ &amp;=\sum_{j=1}^Np(o_{t+1},...,o_T | i_t=q_j, \lambda)p(i_t=q_j | i_{t-1}=q_i, \lambda)p(o_t | i_t=q_j, \lambda) \\ &amp;=\sum_{j=1}^N\beta_t(j)a_{ij}b_j(o_t) \\ \end{aligned} βt1(i)=p(ot,ot+1,...,oTit1=qi,λ)=j=1Np(ot,ot+1,...,oT,it=qjit1=qi,λ)=j=1Np(ot+1,...,oT,it=qjit1=qi,λ)p(otot+1,...,oT,it1=qi,it=qj,λ)=j=1Np(ot+1,...,oT,it=qjit1=qi,λ)p(otit=qj,λ)=j=1Np(ot+1,...,oTit1=qi,it=qj,λ)p(it=qjot+1,...,oT,it1=qi,λ)p(otit=qj,λ)=j=1Np(ot+1,...,oTit=qj,λ)p(it=qjit1=qi,λ)p(otit=qj,λ)=j=1Nβt(j)aijbj(ot)
        特别的,当 t = T t=T t=T时刻, β T ( i ) = 1 \beta_T(i)= 1 βT(i)=1,T时刻是最终时刻,无后续,可以任意设置。
  2. 预测问题
        问题描述:此问题主要是在已知模型参数 λ = ( A , B , π ) \lambda = (A,B,\pi) λ=(A,B,π)的条件下,求出最优可能出现的状态序列。设状态序列为 I = { i 1 , i 2 , . . . , i T } I=\{i_1, i_2,...,i_T\} I={i1,i2,...,iT}:,其对应的观测序列为: O = { o 1 , o 2 , . . . , o T } O=\{o_1, o_2,...,o_T\} O={o1,o2,...,oT}。该问题可以表示为:
    a r g max ⁡ I P ( I ∣ O , λ ) arg\max_{I} P(I | O, \lambda) argImaxP(IO,λ)
    维特比算法
        首先,我们设在时刻 t t t的状态为 q i q_i qi,且观测序列为 o 1 , o 2 , . . . , o t o_1, o_2,...,o_t o1,o2,...,ot。此时最有可能的状态序列为::
    δ t ( i ) = max ⁡ i 1 , i 2 , . . i t − 1 p ( o 1 , o 2 , . . . , o t , i 1 , i 2 , . . . , i t = q i ∣ λ ) \delta_t(i)= \max_{i_1,i_2, ..i_{t-1}} p(o_1, o_2,...,o_t, i_1, i_2, ..., i_t=q_i | \lambda) δt(i)=i1,i2,..it1maxp(o1,o2,...,ot,i1,i2,...,it=qiλ)
        接着,我们设在时刻 t t t的状态为 q i q_i qi,且观测序列为 o 1 , o 2 , . . . , o t + 1 o_1, o_2,...,o_{t+1} o1,o2,...,ot+1。此时最有可能的状态序列为:
    δ t + 1 ( i ) = max ⁡ i 1 , i 2 , . . i t p ( o 1 , o 2 , . . . , o t + 1 , i 1 , i 2 , . . . , i t + 1 = q i ∣ λ ) = max ⁡ i 1 , i 2 , . . i t p ( o 1 , o 2 , . . . , o t , i 1 , i 2 , . . . , i t + 1 = q i ∣ λ ) p ( o t + 1 ∣ o 1 , o 2 , . . . , o t , i 1 , i 2 , . . . , i t + 1 = q i , λ ) = max ⁡ i 1 , i 2 , . . i t p ( o 1 , o 2 , . . . , o t , i 1 , i 2 , . . . , i t + 1 = q i ∣ λ ) p ( o t + 1 ∣ i t + 1 = q i , λ ) = max ⁡ i 1 , i 2 , . . i t p ( o 1 , o 2 , . . . , o t , i 1 , i 2 , . . . , i t = q j ∣ λ ) p ( o t + 1 ∣ i t + 1 = q i , λ ) p ( i t + 1 = q i ∣ o 1 , o 2 , . . . , o t , i 1 , i 2 , . . . , i t = q j , λ ) = max ⁡ i 1 , i 2 , . . i t p ( o 1 , o 2 , . . . , o t , i 1 , i 2 , . . . , i t = q j ∣ λ ) p ( o t + 1 ∣ i t + 1 = q i , λ ) p ( i t + 1 = q i ∣ i t = q j , λ ) = max ⁡ i 1 , i 2 , . . i t δ t ( j ) b i ( o t + 1 ) a j i = max ⁡ i t δ t ( j ) b i ( o t + 1 ) a j i = max ⁡ 1 ≤ j ≤ N δ t ( j ) b i ( o t + 1 ) a j i = b i ( o t + 1 ) max ⁡ 1 ≤ j ≤ N δ t ( j ) a j i \begin{aligned} \delta_{t+1}(i) &amp;= \max_{i_1,i_2, ..i_t} p(o_1, o_2,...,o_{t+1}, i_1, i_2, ..., i_{t+1}=q_i | \lambda) \\ &amp;= \max_{i_1,i_2, ..i_t} p(o_1, o_2,...,o_t, i_1, i_2, ..., i_{t+1}=q_i | \lambda) p(o_{t+1} | o_1, o_2,...,o_t, i_1, i_2, ..., i_{t+1}=q_i, \lambda)\\ &amp;= \max_{i_1,i_2, ..i_t} p(o_1, o_2,...,o_t, i_1, i_2, ..., i_{t+1}=q_i | \lambda) p(o_{t+1} | i_{t+1}=q_i, \lambda)\\ &amp;= \max_{i_1,i_2, ..i_t} p(o_1, o_2,...,o_t, i_1, i_2, ..., i_t=q_j | \lambda) p(o_{t+1} | i_{t+1}=q_i, \lambda) p(i_{t+1}=q_i | o_1, o_2,...,o_t, i_1, i_2, ..., i_t=q_j, \lambda)\\ &amp;= \max_{i_1,i_2, ..i_t} p(o_1, o_2,...,o_t, i_1, i_2, ..., i_t=q_j | \lambda) p(o_{t+1} | i_{t+1}=q_i, \lambda) p(i_{t+1}=q_i | i_t=q_j, \lambda)\\ &amp;= \max_{i_1,i_2, ..i_t} \delta_t(j)b_i(o_{t+1}) a_{ji}\\ &amp;= \max_{i_t} \delta_t(j)b_i(o_{t+1}) a_{ji}\\ &amp;= \max_{1\le j \le N} \delta_t(j)b_i(o_{t+1}) a_{ji}\\ &amp;= b_i(o_{t+1})\max_{1\le j \le N} \delta_t(j) a_{ji}\\ \end{aligned} δt+1(i)=i1,i2,..itmaxp(o1,o2,...,ot+1,i1,i2,...,it+1=qiλ)=i1,i2,..itmaxp(o1,o2,...,ot,i1,i2,...,it+1=qiλ)p(ot+1o1,o2,...,ot,i1,i2,...,it+1=qi,λ)=i1,i2,..itmaxp(o1,o2,...,ot,i1,i2,...,it+1=qiλ)p(ot+1it+1=qi,λ)=i1,i2,..itmaxp(o1,o2,...,ot,i1,i2,...,it=qjλ)p(ot+1it+1=qi,λ)p(it+1=qio1,o2,...,ot,i1,i2,...,it=qj,λ)=i1,i2,..itmaxp(o1,o2,...,ot,i1,i2,...,it=qjλ)p(ot+1it+1=qi,λ)p(it+1=qiit=qj,λ)=i1,i2,..itmaxδt(j)bi(ot+1)aji=itmaxδt(j)bi(ot+1)aji=1jNmaxδt(j)bi(ot+1)aji=bi(ot+1)1jNmaxδt(j)aji
        特别的,当 t = 1 t=1 t=1时刻, δ 1 = b i ( o 1 ) π i \delta_1=b_i(o_1)\pi_i δ1=bi(o1)πi,其中 1 ≤ i ≤ N 1\le i \le N 1iN
  3. 学习问题
    .     问题描述:此问题是在知道状态序列,观测序列的条件下,求出最有可能的 λ = ( A , B , π ) \lambda=(A, B, \pi) λ=(A,B,π)。该问题使用Baum-Welch 算法解决。该算法目前还没有研究,待后续补上。。。
        关于HMM的应用会在后续的分词、词性标注上具体给出,敬请期待!
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值