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

隐马尔可夫模型(HMM)可以用五个元素来描述,包括2个状态集合和3个概率矩阵:
1. 隐含状态 Q={q1,...,qN}Q=\{q_1,...,q_N\}Q={q1,...,qN}。隐状态的数量为NNN,这些状态之间满足马尔可夫性质,是马尔可夫模型中实际所隐含的状态。这些状态通常无法通过直接观测而得到,当前状态只依赖于前一时刻的状态。满足齐次马尔可夫假设,可以用一下公式来描述(iti_tit表示t时刻的状态):
p(it∣ii−1...,i2,i1)=p(it∣it−1)p(i_t | i_{i-1}...,i_2,i_1) = p(i_t|i_{t-1})p(it∣ii−1...,i2,i1)=p(it∣it−1) 2. 可观测状态 V={v1,...,vM}V=\{v_1,...,v_M\}V={v1,...,vM}。观测序列的数量为MMM,在模型中与隐含状态相关联,可通过直接观测而得到,当前时刻的观测值只依赖于当前时刻的状态。满足观测独立性假设,可以用以下公式描述(oto_tot表示t时刻的观测序列):
p(ot∣ot−1,...,o1,it,it−1,...,i1)=p(ot∣it)p(o_t | o_{t-1},...,o_1, i_t,i_{t-1},...,i_1) = p(o_t | i_t)p(ot∣ot−1,...,o1,it,it−1,...,i1)=p(ot∣it) 3. 初始状态概率矩阵 π\piπ。表示隐含状态在初始时刻t=1的概率矩阵,也就是t=1时刻出现各种状态的概率。例如t=1时,p(q1)=p1, p(q2)=p2, p(q3)=p3p(q_1)=p_1,\space p(q_2)=p_2, \space p(q_3)=p_3p(q1)=p1, p(q2)=p2, p(q3)=p3,则初始状态概率矩阵 π=[p1,p2,p3]\pi =[ p_1, p_2, p_3 ]π=[p1,p2,p3].
4. 隐含状态转移概率矩阵 AAA。描述了HMM模型中各个状态之间的转移概率。AAA的维度为(N,N)(N, N)(N,N),其中aij=p(it+1=qj∣it=qi) (1<=i,j<=N)a_{ij}=p(i_{t+1}=q_j | i_{t}=q_i)\space \space (1 <= i, j <= N)aij=p(it+1=qj∣it=qi) (1<=i,j<=N)表示在 t 时刻、状态为 qiq_iqi的条件下,在 t+1 时刻状态是 qjq_jqj 的概率。
5. 观测状态转移概率矩阵 BBB。描述了HMM模型中各个状态到观测序列的概率。BBB的维度为(N,M)(N, M)(N,M),则:bj(k)=p(ot=vk∣it=qj), 1≤j≤N,1≤k≤Mb_{j}(k)=p(o_t=v_k | i_t=q_j), \space \space 1 \le j \le N,1 \le k \le Mbj(k)=p(ot=vk∣it=qj), 1≤j≤N,1≤k≤M, 表示在 t 时刻、隐含状态是 qjq_jqj 条件下,观察状态为 vkv_kvk的概率。
一般的,可以用λ=(A,B,π)\lambda = (A,B,\pi)λ=(A,B,π)三元组来简洁的表示一个隐马尔可夫模型。隐马尔可夫模型实际上是标准马尔可夫模型的扩展,添加了可观测状态集合和这些状态与隐含状态之间的概率关系。
三个问题
- 评价问题
问题描述:此问题主要是在已知模型参数λ=(A,B,π)\lambda = (A,B,\pi)λ=(A,B,π)的条件下,求给定观测序列出现的概率。设状态序列为I={i1,i2,...,iT}I=\{i_1, i_2,...,i_T\}I={i1,i2,...,iT}:,其对应的观测序列为:O={o1,o2,...,oT}O=\{o_1, o_2,...,o_T\}O={o1,o2,...,oT},概率可以表示为:
p(O∣λ)=∑Ip(O,I∣λ)=∑Ip(O∣I,λ)p(I∣λ) \begin{aligned} p(O | \lambda) &= \sum_I p(O, I | \lambda) \\ &= \sum_I p(O | I, \lambda)p(I | \lambda) \end{aligned} p(O∣λ)=I∑p(O,I∣λ)=I∑p(O∣I,λ)p(I∣λ)
由于状态序列III的长度为TTT,每个状态有NNN种可能,所以状态序列III共有NTN^TNT种可能,然后每种可能计算与观测序列O的概率,所以时间复杂度为:O(TNT)O(TN^T)O(TNT)。对于此方法的时间复杂度太高,实际上不可行。
当状态数量过多或状态序列长度过大时,直接求解就会相当困难,于是需要使用其他可行的算法代替。这里介绍两种算法:前向算法和后向算法。前向算法
首先,我们设在时刻ttt的状态为qiq_iqi,且观测序列为o1,o2,...,oto_1, o_2,...,o_to1,o2,...,ot的概率为:
αt(i)=p(o1,o2,...,ot,it=qi∣λ) \alpha_t(i)=p(o_1, o_2,...,o_t, i_t=q_i | \lambda) αt(i)=p(o1,o2,...,ot,it=qi∣λ)
接着,我们设在时刻ttt的状态为qjq_jqj,且观测序列为o1,o2,...,ot+1o_1, o_2,...,o_{t+1}o1,o2,...,ot+1的概率为:
α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+1∣o1,o2,...,ot,it=qj,it+1=qi,λ)=∑j=1Np(o1,o2,...,ot,it=qj,it+1=qi∣λ)p(ot+1∣it+1=qi,λ)=∑j=1Np(o1,o2,...,ot,it=qj∣λ)p(ot+1∣it+1=qi,λ)p(it+1=qi∣o1,o2,...,ot,it=qj,λ)=∑j=1Np(o1,o2,...,ot,it=qj∣λ)p(ot+1∣it+1=qi,λ)p(it+1=qi∣it=qj,λ)=∑j=1Nαt(j)bi(ot+1)aji=bi(ot+1)∑j=1Nαt(j)aji \begin{aligned} \alpha_{t+1}(i) &= p(o_1, o_2,...,o_{t+1}, i_{t+1}=q_i | \lambda) \\ &= \sum_{j=1}^{N}p(o_1, o_2,...,o_{t+1}, i_t=q_j, i_{t+1}=q_i | \lambda) \\ &= \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)\\ &= \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)\\ &= \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)\\ &= \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)\\ &= \sum_{j=1}^{N}\alpha_t(j) b_i(o_{t+1})a_{ji}\\ &= 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=1∑Np(o1,o2,...,ot+1,it=qj,it+1=qi∣λ)=j=1∑Np(o1,o2,...,ot,it=qj,it+1=qi∣λ)p(ot+1∣o1,o2,...,ot,it=qj,it+1=qi,λ)=j=1∑Np(o1,o2,...,ot,it=qj,it+1=qi∣λ)p(ot+1∣it+1=qi,λ)=j=1∑Np(o1,o2,...,ot,it=qj∣λ)p(ot+1∣it+1=qi,λ)p(it+1=qi∣o1,o2,...,ot,it=qj,λ)=j=1∑Np(o1,o2,...,ot,it=qj∣λ)p(ot+1∣it+1=qi,λ)p(it+1=qi∣it=qj,λ)=j=1∑Nαt(j)bi(ot+1)aji=bi(ot+1)j=1∑Nαt(j)aji
特别的,当t=1t=1t=1时刻,α1=bi(o1)πi\alpha_1=b_i(o_1)\pi_iα1=bi(o1)πi,其中1≤i≤N1\le i \le N1≤i≤N。后向算法
首先,我们设在时刻ttt的状态为qiq_iqi,且观测序列为ot+1,ot+2,...,oTo_{t+1}, o_{t+2},...,o_Tot+1,ot+2,...,oT的概率为:
βt(i)=p(ot+1,ot+2,...,oT∣it=qi,λ) \beta_t(i)=p(o_{t+1}, o_{t+2},...,o_T | i_t=q_i, \lambda) βt(i)=p(ot+1,ot+2,...,oT∣it=qi,λ)
接着,我们设在时刻t−1t-1t−1的状态为qiq_iqi,且观测序列为ot,ot+1,...,oTo_t, o_{t+1},...,o_Tot,ot+1,...,oT的概率为:
βt−1(i)=p(ot,ot+1,...,oT∣it−1=qi,λ)=∑j=1Np(ot,ot+1,...,oT,it=qj∣it−1=qi,λ)=∑j=1Np(ot+1,...,oT,it=qj∣it−1=qi,λ)p(ot∣ot+1,...,oT,it−1=qi,it=qj,λ)=∑j=1Np(ot+1,...,oT,it=qj∣it−1=qi,λ)p(ot∣it=qj,λ)=∑j=1Np(ot+1,...,oT∣it−1=qi,it=qj,λ)p(it=qj∣ot+1,...,oT,it−1=qi,λ)p(ot∣it=qj,λ)=∑j=1Np(ot+1,...,oT∣it=qj,λ)p(it=qj∣it−1=qi,λ)p(ot∣it=qj,λ)=∑j=1Nβt(j)aijbj(ot) \begin{aligned} \beta_{t-1}(i) &=p(o_t, o_{t+1},...,o_T | i_{t-1}=q_i, \lambda) \\ &=\sum_{j=1}^Np(o_t, o_{t+1},...,o_T, i_t=q_j | i_{t-1}=q_i, \lambda) \\ &=\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) \\ &=\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) \\ &=\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) \\ &=\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) \\ &=\sum_{j=1}^N\beta_t(j)a_{ij}b_j(o_t) \\ \end{aligned} βt−1(i)=p(ot,ot+1,...,oT∣it−1=qi,λ)=j=1∑Np(ot,ot+1,...,oT,it=qj∣it−1=qi,λ)=j=1∑Np(ot+1,...,oT,it=qj∣it−1=qi,λ)p(ot∣ot+1,...,oT,it−1=qi,it=qj,λ)=j=1∑Np(ot+1,...,oT,it=qj∣it−1=qi,λ)p(ot∣it=qj,λ)=j=1∑Np(ot+1,...,oT∣it−1=qi,it=qj,λ)p(it=qj∣ot+1,...,oT,it−1=qi,λ)p(ot∣it=qj,λ)=j=1∑Np(ot+1,...,oT∣it=qj,λ)p(it=qj∣it−1=qi,λ)p(ot∣it=qj,λ)=j=1∑Nβt(j)aijbj(ot)
特别的,当t=Tt=Tt=T时刻,βT(i)=1\beta_T(i)= 1βT(i)=1,T时刻是最终时刻,无后续,可以任意设置。 - 预测问题
问题描述:此问题主要是在已知模型参数λ=(A,B,π)\lambda = (A,B,\pi)λ=(A,B,π)的条件下,求出最优可能出现的状态序列。设状态序列为I={i1,i2,...,iT}I=\{i_1, i_2,...,i_T\}I={i1,i2,...,iT}:,其对应的观测序列为:O={o1,o2,...,oT}O=\{o_1, o_2,...,o_T\}O={o1,o2,...,oT}。该问题可以表示为:
argmaxIP(I∣O,λ) arg\max_{I} P(I | O, \lambda) argImaxP(I∣O,λ)维特比算法
首先,我们设在时刻ttt的状态为qiq_iqi,且观测序列为o1,o2,...,oto_1, o_2,...,o_to1,o2,...,ot。此时最有可能的状态序列为::
δt(i)=maxi1,i2,..it−1p(o1,o2,...,ot,i1,i2,...,it=qi∣λ) \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,..it−1maxp(o1,o2,...,ot,i1,i2,...,it=qi∣λ)
接着,我们设在时刻ttt的状态为qiq_iqi,且观测序列为o1,o2,...,ot+1o_1, o_2,...,o_{t+1}o1,o2,...,ot+1。此时最有可能的状态序列为:
δt+1(i)=maxi1,i2,..itp(o1,o2,...,ot+1,i1,i2,...,it+1=qi∣λ)=maxi1,i2,..itp(o1,o2,...,ot,i1,i2,...,it+1=qi∣λ)p(ot+1∣o1,o2,...,ot,i1,i2,...,it+1=qi,λ)=maxi1,i2,..itp(o1,o2,...,ot,i1,i2,...,it+1=qi∣λ)p(ot+1∣it+1=qi,λ)=maxi1,i2,..itp(o1,o2,...,ot,i1,i2,...,it=qj∣λ)p(ot+1∣it+1=qi,λ)p(it+1=qi∣o1,o2,...,ot,i1,i2,...,it=qj,λ)=maxi1,i2,..itp(o1,o2,...,ot,i1,i2,...,it=qj∣λ)p(ot+1∣it+1=qi,λ)p(it+1=qi∣it=qj,λ)=maxi1,i2,..itδt(j)bi(ot+1)aji=maxitδt(j)bi(ot+1)aji=max1≤j≤Nδt(j)bi(ot+1)aji=bi(ot+1)max1≤j≤Nδt(j)aji \begin{aligned} \delta_{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 | \lambda) \\ &= \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)\\ &= \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)\\ &= \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)\\ &= \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)\\ &= \max_{i_1,i_2, ..i_t} \delta_t(j)b_i(o_{t+1}) a_{ji}\\ &= \max_{i_t} \delta_t(j)b_i(o_{t+1}) a_{ji}\\ &= \max_{1\le j \le N} \delta_t(j)b_i(o_{t+1}) a_{ji}\\ &= 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+1∣o1,o2,...,ot,i1,i2,...,it+1=qi,λ)=i1,i2,..itmaxp(o1,o2,...,ot,i1,i2,...,it+1=qi∣λ)p(ot+1∣it+1=qi,λ)=i1,i2,..itmaxp(o1,o2,...,ot,i1,i2,...,it=qj∣λ)p(ot+1∣it+1=qi,λ)p(it+1=qi∣o1,o2,...,ot,i1,i2,...,it=qj,λ)=i1,i2,..itmaxp(o1,o2,...,ot,i1,i2,...,it=qj∣λ)p(ot+1∣it+1=qi,λ)p(it+1=qi∣it=qj,λ)=i1,i2,..itmaxδt(j)bi(ot+1)aji=itmaxδt(j)bi(ot+1)aji=1≤j≤Nmaxδt(j)bi(ot+1)aji=bi(ot+1)1≤j≤Nmaxδt(j)aji
特别的,当t=1t=1t=1时刻,δ1=bi(o1)πi\delta_1=b_i(o_1)\pi_iδ1=bi(o1)πi,其中1≤i≤N1\le i \le N1≤i≤N。 - 学习问题
. 问题描述:此问题是在知道状态序列,观测序列的条件下,求出最有可能的λ=(A,B,π)\lambda=(A, B, \pi)λ=(A,B,π)。该问题使用Baum-Welch 算法解决。该算法目前还没有研究,待后续补上。。。
关于HMM的应用会在后续的分词、词性标注上具体给出,敬请期待!