隐马尔可夫模型(HMM)未完待续……

隐马尔可夫模型(HMM)

1、模型背景

  现实生活中很多事情的发生都是有规律可循的,即表现出来的结果,受到某些“隐藏”因素的影响。举个例子,某个人事业成功与否,这与他自身是否努力有一定关系的。其表现出来的状态是成功或者失败,而隐藏的影响因素为努力与否。对于类似这类问题可以通过统计学的方法,计算表现结果为X的情况下,隐藏状态为Y的概率即P(YX)P(Y|X)。利用这个概率可以将给定的表现结果X,标注上其最有可能对应的隐藏状态Y。这就是机器学习中样本标注的过程。

贝叶斯公式:
P(AB)=P(AB)P(B)=P(BA)P(A)P(B)(1) P(A|B) = \cfrac{P(AB)}{P(B)} = \cfrac{P(B|A) P(A)}{P(B)}\tag1
X={x1,x2,,xn}Y={y1,y2,,yn}X = \{x_1,x_2,\cdots,x_n\}Y = \{y_1,y_2,\cdots,y_n\}
P(YX)=P(y1,y2,...,ynxi,x2,,xn)=P(x1,x2,...,xny1,y2,,yn)P(y1,y2,,yn)P(x1,x2,,xn)P(x1,x2,...,xny1,y2,,yn)P(y1,y2,,yn) \begin{aligned} P(Y|X) &= P(y_1,y_2,...,y_n|x_i,x_2,\cdots,x_n)\\ &= \cfrac{P(x_1,x_2,...,x_n|y_1,y_2,\cdots,y_n) P(y_1,y_2,\cdots,y_n)}{P(x_1,x_2,\cdots,x_n)}\\ & \propto P(x_1,x_2,...,x_n|y_1,y_2,\cdots,y_n) P(y_1,y_2,\cdots,y_n) \end{aligned}
其中
P(y1,y2,,yn)=P(y1)P(y2,,yny1)=P(y1)P(y2y1)P(y3,,yny1,y2)=P(y1)P(y2y1)P(y3y1,y2)P(y4,,yny1,y2,y3)=P(y1)P(y2y1)P(y3y1,y2)P(yiy1,,yi1)P(yi+1,,yny1,,yi)=P(y1)i=2nP(yiy1,,yi1) \begin{aligned} P(y_1,y_2,\cdots,y_n) &= P(y_1) P(y_2,\cdots,y_n|y_1)\\ &=P(y_1) P(y_2|y_1) P(y_3,\cdots,y_n|y_1,y_2)\\ &=P(y_1) P(y_2|y_1) P(y_3|y_1,y_2) P(y_4,\cdots,y_n|y_1,y_2,y_3)\\ &=P(y_1) P(y_2|y_1) P(y_3|y_1,y_2)\cdots P(y_i|y_1,\cdots,y_{i-1}) P(y_{i+1},\cdots,y_n|y_1,\cdots,y_i)\\ &=P(y_1)\prod_{i=2}^n P(y_i|y_1,\cdots,y_{i-1}) \end{aligned}
假设隐藏状态yiy_i仅与前一状态yi1y_{i-1}有关(即齐次性假设),而与其他状态无关,则
P(y1)i=2nP(yiy1,,yi1)P(y1)i=2nP(yiyi1)(2) P(y_1)\prod_{i=2}^n P(y_i|y_1,\cdots,y_{i-1}) \approx P(y_1)\prod_{i=2}^n P(y_i|y_{i-1}) \tag2

P(x1,x2,...,xny1,y2,,yn)=P(x1y1,,yn)P(x2,,xnx1,y1,,yn)=P(x1y1,,yn)P(x2x1,y1,,yn)P(x3,,xnx1,x2,y1,,yn)=P(x1y1,,yn)P(x2x1,y1,,yn)P(xix1,,xi1,y1,,yn)P(xi+1,,xnx1,,xi,y1,,yn)=i=1nP(xix1,,xi1,y1,,yn) \begin{aligned} P(x_1,x_2,...,x_n|y_1,y_2,\cdots,y_n) &=P(x_1|y_1,\cdots,y_n) P(x_2,\cdots,x_n|x_1,y_1,\cdots,y_n)\\ &=P(x_1|y_1,\cdots,y_n) P(x_2|x_1,y_1,\cdots,y_n) P(x_3,\cdots,x_n|x_1,x_2,y_1,\cdots,y_n)\\ &=P(x_1|y_1,\cdots,y_n) P(x_2|x_1,y_1,\cdots,y_n) \cdots P(x_i|x_1,\cdots,x_{i-1},y_1,\cdots,y_n)\\ &P(x_{i+1},\cdots,x_n|x_1,\cdots,x_i,y_1,\cdots,y_n)\\ &= \prod_{i=1}^n P(x_i|x_1,\cdots,x_{i-1},y_1,\cdots,y_n) \end{aligned}
假设当前的表现xix_i仅与当前的隐藏状态yiy_i有关,与其他时刻的表现及隐藏状态无关(独立性假设),则
i=1nP(xix1,,xi1,y1,,yn)i=1nP(xiyi)(3) \prod_{i=1}^n P(x_i|x_1,\cdots,x_{i-1},y_1,\cdots,y_n) \approx \prod_{i=1}^n P(x_i|y_i) \tag3
结合公式(2)和公式(3)则有如下关系:
P(y1,y2,...,ynxi,x2,,xn)i=1nP(xiyi)P(yiyi1)(4) P(y_1,y_2,...,y_n|x_i,x_2,\cdots,x_n) \propto \prod_{i=1}^n P(x_i|y_i) P(y_i|y_{i-1}) \tag4
公式(4)需满足一个初始条件,中当i=1i = 1时,P(y1y0)=P(y1)P(y_1|y_0) = P(y_1)。公式(4)所代表的模型即为隐马尔可夫模型

2、模型定义

  隐马尔可夫模型是关于时序的概率模型,描述由一个隐藏的马尔可夫链随机生成不可观测的状态随机序列,再由各个状态生成一个观测从而产生观测随机序列的过程。隐藏的马尔可夫链随机生成的状态的序列,称为状态序列(state sequence);每个状态生成一个观测,而由此产生的观测的随机序列,称为观测序列(observation sequence)。序列的每一个位置又可以看作是一个时刻。
  隐马尔可夫模型由初始概率分布、状态转移概率分布以及观测概率分布确定。隐马尔可夫模型的定义如下:
  设QQ是所有可能的状态的集合,VV是所有可能的观测的集合:
Q={q1,q2,,qN},     V={v1,v2,,vM} Q = \{q_1,q_2,\cdots,q_N\}, \ \ \ \ \ V =\{v_1,v_2,\cdots,v_M\}
其中,NN是可能的状态数,MM是可能的观测数。
II 是长度为 TT 的状态序列,OO是对应的观测序列:

I={i1,i2,,iT},     O={o1,o2,,oT} I = \{i_1,i_2,\cdots,i_T\}, \ \ \ \ \ O=\{o_1,o_2,\cdots,o_T\}
  AA是状态转移概率矩阵:
A=[aij]N×NA=[a_{ij} ]_{N×N}
其中,
aij=P(it+1=qjit=qi),     i=1,2,,N;  j=1,2,,Na_{ij} = P(i_{t+1} = q_j | i_ t = q_i), \ \ \ \ \ i=1,2,\cdots,N;\ \ j=1,2,\cdots,N
代表在tt时刻处于qiq_i的条件下在t+1t+1时刻转移到状态qjq_j的概率。
  BB代表观测矩阵:
B=[bj(k)]N×MB=[b_j(k)]_{N×M}
其中,
bj(k)=P(ot=vkit=qj)   j=1,2,,N;   k=1,2,,Mb_j(k)=P(o_t=v_k|i_t=q_j)\ \ \ j=1,2,\cdots,N; \ \ \ k=1,2,\cdots,M
代表在tt时刻处于qjq_j的条件下生成观测vkv_k的概率。
  π\pi是初始状态概率向量:
π=(πi)\pi=(\pi_i)
其中,
πi=P(i1=qi)     i=i,2,,N\pi_i=P(i_1=q_i)\ \ \ \ \ i=i,2,\cdots,N
代表t=1t=1的时刻,状态为qiq_i的概率。
  隐马尔可夫模型由初始状态概率向量π\pi、状态转移概率矩阵AA和观测概率矩阵BB决定。π\piAA决定状态序列,BB决定观测序列。因此,隐马尔可夫模型λ\lambda可以用三元符号表示,即
λ=(A,B,π)\lambda=(A,B,\pi)
AA,BB,π\pi称位隐马尔可夫模型的三要素
  状态转移概率矩阵AA与初始状态概率向量π\pi确定了隐藏的马尔可夫链,生成不可观测的状态序列。观测概率矩阵BB确定了如何从状态生成观测,与状态序列综合确定了如何产生观测序列。
  前面背景介绍中涉及到的两种基本假设,下面在这里进行详细介绍:
(1)齐次马尔可夫假设,即假设隐藏的马尔可夫链在任意时刻tt的状态只依赖于其前一时刻的状态,与其他时刻的状态及观测无关,也与时刻t无关:
P(itit1,ot1,,i1,o1)=P(itit1),     t=1,2,,T(5)P(i_t|i_{t-1},o_{t-1},\cdots,i_1,o_1)=P(i_t|i_{t-1}),\ \ \ \ \ t=1,2,\cdots,T \tag5
(2)观测独立性假设,即假设任意时刻的观测只依赖于该时刻的马尔可夫链的状态,与其他观测及状态无关:
P(otiT,oT,iT1,oT1,,it+1,ot+1,it,it1,ot1,,i1,o1)=P(otit)(6) P(o_t|i_T,o_T,i_{T-1},o_{T-1},\cdots,i_{t+1},o_{t+1},i_t,i_{t-1},o_{t-1},\cdots,i_1,o_1)=P(o_t|i_t) \tag6
  隐马尔可夫模型可以用于标注,这是状态对应着标记。标注问题是给定观测的序列预测其对应的标记序列。可以假设标注问题的数据是由隐马尔可夫模型生成的。这样我们可以利用隐马尔可夫模型的学习与预测算法进行标注。
  本节内容可以用一句话简单概括,一个定义,二个假设,三个要素

3、模型的三个基本问题

3.1、概率计算问题

  给定模型λ=(A,B,π)\lambda=(A,B,\pi)和观测序列O=(o1,o2,,oT)O=(o_1,o_2,\cdots,o_T),计算在模型λ\lambda下观测序列OO出现的概率P(Oλ)P(O|\lambda)
1、直接计算法
  给定模型λ=(A,B,π)\lambda=(A,B,\pi)和观测序列O=(o1,o2,,oT)O=(o_1,o_2,\cdots,o_T),计算观测序列OO出现的概率P(Oλ)P(O|\lambda)。最直接的方法是按照概率公式直接计算。列举所有可能的长度为TT的状态序列I=(i1,i2,,iT)I=(i_1,i_2,\cdots,i_T),求各个状态序列II与观测序列O=(o1,o2,,oT)O=(o_1,o_2,\cdots,o_T)联合概率P(O,Iλ)P(O,I|\lambda),然后对所有可能的状态序列求和,得到P(Oλ)P(O|\lambda)
  状态序列I=(i1,i2,,iT)I=(i_1,i_2,\cdots,i_T)的概率是:
P(Iλ)=πi1ai1i2ai2i3aiT1iT(7)P(I|\lambda)=\pi_{i_1}a_{i_1i_2}a_{i_2i_3}\cdots a_{i_{T-1}i_T} \tag7
  对固定的状态序列I=(i1,i2,,iT)I=(i_1,i_2,\cdots,i_T),生成观测序列O=(o1,o2,,oT)O=(o_1,o_2,\cdots,o_T)的概率是:
P(OI,λ)=bi1(o1)bi2(o2)biT(oT)(8)P(O|I,\lambda)=b_{i_1}(o_1)b_{i_2}(o_2)\cdots b_{i_T}(o_T)\tag8
  OIO和I同时出现的联合概率为
P(O,Iλ)=P(OI,λ)P(Iλ)=πi1bi1(o1)ai1i2bi2(o2)aiT1iTbiT(oT)(9) P(O,I|\lambda)=P(O|I,\lambda)P(I|\lambda)=\pi_{i_1}b_{i_1}(o_1)a_{i_1i_2}b_{i_2}(o_2)\cdots a_{i_{T-1}i_T}b_{i_T}(o_T)\tag9
  IOP(Oλ)然后,对所有可能的状态序列I求和,得到观测序列O的概率P(O|\lambda),即
P(Oλ)=IP(OI,λ)P(Iλ)=i1,i2,,iTπi1bi1(o1)ai1i2bi2(o2)aiT1iTbiT(oT)(10) P(O|\lambda) =\sum_IP(O|I,\lambda)P(I|\lambda) =\sum_{i_1,i_2,\cdots,i_T}\pi_{i_1}b_{i_1}(o_1)a_{i_1i_2}b_{i_2}(o_2)\cdots a_{i_{T-1}i_T}b_{i_T}(o_T)\tag{10}
  按照第2小节所介绍的,所有状态的集合为QQ,集合内的元素个数为NN。那么对于长度为TT的状态序列II,其对应的任意时刻都有NN种选择,因此对于状态序列II就有NTN^T种选择。这样不难看出,公式(10)计算量很大,时间复杂度是O(TNT)O(TN^T),这种算法基本不可行。
2、前向算法
  定义(前向概率) 给定隐马尔可夫模型λ\lambda,定义到时刻tt部分观测序列为o1,o2,,oto_1,o_2,\cdots,o_t且状态为qiq_i的概率为前向概率,记作
αt(i)=P(o1,o2,,ot,it=qiλ)(11)\alpha_t(i) = P(o_1,o_2,\cdots,o_t,i_t=q_i|\lambda)\tag{11}
  算法(观测序列概率的前向算法)
  输入:隐马尔可夫模型λ\lambda,观测序列OO
  输出:观测序列概率P(Oλ)P(O|\lambda)
(1)初值
α1(i)=πibi(o1),     i=1,2,,N(12)\alpha_1(i)=\pi_ib_i(o_1),\ \ \ \ \ i=1,2,\cdots,N\tag{12}
(2)递推   对t=1,2,,T1,t=1,2,\cdots,T-1,
αt+1(i)=[j=1Nαt(j)aji]bi(ot+1)(13)\alpha_{t+1}(i)=\Bigg[\sum_{j=1}^N\alpha_t(j)a_{ji}\Bigg]b_i(o_{t+1})\tag{13}
(3)终止
P(Oλ)=i=1NαT(i)(14)P(O|\lambda)=\sum_{i=1}^N \alpha_T(i)\tag{14}
  前向算法,步骤(1)初始化前向概率,是初始时刻的状态i1=qii_1=q_i和观测o1o_1的联合概率。步骤(2)是前向概率的递推公式,计算时刻t+1t+1部分观测序列为o1,o2,,ot,ot+1o_1,o_2,\cdots,o_t,o_{t+1}且在时刻t+1t+1处于状态qiq_i的前向概率,如图1所示。在公式(13)的方括号里,既然αt(j)\alpha_t(j)是到时刻tt观测到o1,o2,,oto_1,o_2,\cdots,o_t并在时刻tt处于状态qjq_j的前向概率,那么乘积αt(j)aji\alpha_t(j)a_{ji}就是到时刻tt观测到o1,o2,,oto_1,o_2,\cdots,o_t并在时刻tt处于状态qjq_j而在时刻t+1t+1到状态qiq_i的联合概率。对这个乘积在时刻tt的所有可能的NN个状态qjq_j求和,其结果就是到时刻tt观测为o1,o2,,oto_1,o_2,\cdots,o_t并在时刻t+1t+1处于状态qiq_i的联合概率。方括号里面的观测概率bi(ot+1)b_i(o_{t+1})的乘积恰好是到时刻t+1t+1观测到o1,o2,,ot,ot+1o_1,o_2,\cdots,o_t,o_{t+1}并在时刻t+1t+1处于状态qiq_i的前向概率αt+1(i)\alpha_{t+1}(i)。步骤(3)给出P(Oλ)P(O|\lambda)的计算公式。因为
αT(i)=P(o1,o2,,oT,iT=qiλ)\alpha_T(i)=P(o_1,o_2,\cdots,o_T,i_T=q_i|\lambda)
所以
P(Oλ)=i=1NαT(i)P(O|\lambda)=\sum_{i=1}^N\alpha_T(i)

图 1 前向概率的递推公式

  如图2所示,前向算法实际是基于“状态序列的路径结构”递归计算P(Oλ)P(O|\lambda)的算法。前向算法高效的关键是其局部计算前向概率,然后利用路径结构将前向概率“递归”到全局,得到P(Oλ)P(O|\lambda)。具体地,在时刻t=1t=1,计算α1(i)\alpha_1(i)NN个值(i=1,2,,N);(i=1,2,\cdots,N);在各个时刻t=12,T1t=1,2,\cdots,T-1,计算αt+1\alpha_{t+1}NN个值(i=1,2,,N)(i=1,2,\cdots,N),而且每个αt+1\alpha_{t+1}的计算利用前一时刻NNαt(j)\alpha_t(j)。减少计算量的原因在于每一次计算直接引用前一个时刻的计算结果,避免重复计算。这样,利用前向概率计算P(Oλ)P(O|\lambda)的计算量是O(N2T)O(N^2T)阶的。
在这里插入图片描述

图 2 观测序列路径结构

前向递推公式证明:
已知联合概率公式如下:
P(ABC)=P(ABC)P(AB)P(B)P(ABC) = P(AB|C)P(A|B)P(B)
基于上面公式证明如下:
   αt(j)aji=P(o1,,ot,it=qjλ)P(it+1=qiit=qj,λ)=P(o1,,otit=qj,λ)P(it=qjλ)P(it+1=qiit=qj,λ)=P(o1,,otit=qj,λ)P(it=qj,it+1=qiλ)=P(o1,,otit=qj,it+1=qi,λ)P(it=qj,it+1=qiλ)=P(o1,,ot,it=qj,it+1=qiλ) \begin{aligned} \because \ \ \ \alpha_t(j) a_{ji} &= P(o_1,\cdots,o_t,i_t=q_j|\lambda)P(i_{t+1}=q_i|i_t=q_j,\lambda)\\ &=P(o_1,\cdots,o_t|i_t=q_j,\lambda)P(i_t=q_j|\lambda)P(i_{t+1}=q_i|i_t=q_j,\lambda)\\ &=P(o_1,\cdots,o_t|i_t=q_j,\lambda)P(i_t=q_j,i_{t+1}=q_i|\lambda)\\ &=P(o_1,\cdots,o_t|i_t=q_j, i_{t+1}=q_i ,\lambda)P(i_t=q_j,i_{t+1}=q_i|\lambda)\\ &=P(o_1,\cdots,o_t,i_t=q_j,i_{t+1}=q_i|\lambda) \end{aligned}

  [j=1Nαt(j)aji]bt+1(i)=j=1N[P(o1,,ot,it=qj,it+1=qiλ)]P(ot+1it+1=qi,λ)=P(o1,,ot,it+1=qiλ)P(ot+1it+1=qi,λ)=P(o1,,otit+1=qi,λ)P(it+1=qiλ)P(ot+1it+1=qi,λ)=P(o1,,otit+1=qi,λ)P(ot+1,it+1=qiλ)=P(o1,,otot+1,it+1=qi,λ)P(ot+1,it+1=qiλ)=P(o1,,ot,ot+1,it+1=qiλ)=αt+1(i) \begin{aligned} \therefore \ \ \Bigg[\sum_{j=1}^N \alpha_t(j)a_{ji} \Bigg] b_{t+1}(i)&=\sum_{j=1}^N\bigg[P(o_1,\cdots,o_t,i_t=q_j,i_{t+1}=q_i|\lambda)\bigg]P(o_{t+1}|i_{t+1}=q_i,\lambda)\\ &=P(o_1,\cdots,o_t,i_{t+1}=q_i|\lambda)P(o_{t+1}|i_{t+1}=q_i,\lambda)\\ &=P(o_1,\cdots,o_t|i_{t+1}=q_i,\lambda)P(i_{t+1}=q_i|\lambda)P(o_{t+1}|i_{t+1}=q_i,\lambda)\\ &=P(o_1,\cdots,o_t|i_{t+1}=q_i,\lambda)P(o_{t+1},i_{t+1}=q_i|\lambda)\\ &=P(o_1,\cdots,o_t|o_{t+1},i_{t+1}=q_i,\lambda)P(o_{t+1},i_{t+1}=q_i|\lambda)\\ &=P(o_1,\cdots,o_t,o_{t+1},i_{t+1}=q_i|\lambda)\\ &=\alpha_{t+1}(i) \end{aligned}

3、后向算法
  定义(后向概率) 给定隐马尔可夫模型λ\lambda,定义在时刻tt状态为qiq_i的条件下,从t+1t+1TT的部分观测序列为ot+1,ot+2,,oTo_{t+1},o_{t+2},\cdots,o_T的概率为后向概率,记作
βt(i)=P(ot+1,ot+2,,oTit=qi,λ)(15)\beta_t(i)=P(o_{t+1},o_{t+2},\cdots,o_T|i_t=q_i,\lambda)\tag{15}
  算法(观测序列概率的后向算法)
输入:隐马尔可夫模型λ\lambda,观测序列OO
输出:观测序列概率P(Oλ)P(O|\lambda)
(1)初值
βT(i)=1,      i=1,2,,N\beta_T(i) = 1, \ \ \ \ \ \ i=1,2,\cdots,N
代表t=Tt=T时刻,任意状态的后向概率均为1。
(2)递推    对t=T1,T2,,1t=T-1,T-2,\cdots,1
βt(i)=j=1Naijbj(ot+1)βt+1(j),     i=1,2,,N(16)\beta_t(i)=\sum_{j=1}^Na_{ij}b_j(o_{t+1})\beta_{t+1}(j),\ \ \ \ \ i =1,2,\cdots,N\tag{16}
(3)终止
P(Oλ)=i=1Nπibi(o1)β1(i)(17)P(O|\lambda)=\sum_{i=1}^N\pi_ib_i(o_1)\beta_1(i)\tag{17}
  步骤(1)初始化后向概率,对最终时刻的所有状态qiq_i规定βT(i)=1\beta_T(i)=1。步骤(2)是后向概率的递推公式。如图3所示,为了计算在时刻tt状态为qiq_i条件下时刻t+1t+1之后的观测序列为Ot+1,ot+2,,oTO_{t+1},o{t+2},\cdots,o_T的后向概率βt(i)\beta_t(i),只需考虑在时刻t+1t+1所有可能的NN个状态qjq_j的转移概率(即aija_{ij}),以及在此状态下的观测ot+1o_{t+1}的观测概率(即bj(ot+1)b_j(o_{t+1})项),然后考虑状态qjq_j之后的观测序列的后向概率(即βt+1(j)\beta_{t+1}(j)项)。步骤(3)求P(Oλ)P(O|\lambda)的思路与步骤(2)一致,只是初始概率πi\pi_i代替转移概率。
在这里插入图片描述

图 3 后向概率递推公式

后向递推公式证明:
j=1Naijbj(ot+1)βt+1(j)=j=1NP(it+1=qjit=qi,λ)P(ot+1it+1=qj,λ)P(ot+2,,oTit+1=qj,λ)=j=1NP(it+1=qjit=qi,λ)P(ot+1it+1=qj,λ)P(ot+2,,oTot+1,it+1=qj,λ)=j=1NP(it+1=qjit=qi,λ)P(ot+1,ot+2,,oTit+1=qj,λ)=j=1NP(it+1=qjit=qi,λ)P(ot+1,ot+2,,oTit=qi,it+1=qj,λ)=j=1NP(ot+1,ot+2,,oT,it+1=qjit=qi,λ)=P(ot+1,ot+2,,oTit=qi,λ)=βt(i) \begin{aligned} \sum_{j=1}^N a_{ij}b_j(o_{t+1})\beta_{t+1}(j)&=\sum_{j=1}^NP(i_{t+1}=q_j|i_t=q_i,\lambda)P(o_{t+1}|i_{t+1}=q_j,\lambda)P(o_{t+2},\cdots,o_T|i_{t+1}=q_j,\lambda)\\ &=\sum_{j=1}^NP(i_{t+1}=q_j|i_t=q_i,\lambda)P(o_{t+1}|i_{t+1}=q_j,\lambda)P(o_{t+2},\cdots,o_T|o_{t+1},i_{t+1}=q_j,\lambda)\\ &=\sum_{j=1}^NP(i_{t+1}=q_j|i_t=q_i,\lambda)P(o_{t+1},o_{t+2},\cdots,o_T|i_{t+1}=q_j,\lambda)\\ &=\sum_{j=1}^NP(i_{t+1}=q_j|i_t=q_i,\lambda)P(o_{t+1},o_{t+2},\cdots,o_T|i_t = q_i,i_{t+1}=q_j,\lambda)\\ &=\sum_{j=1}^N P(o_{t+1},o_{t+2},\cdots,o_T, i_{t+1}=q_j|i_t=q_i,\lambda)\\ &=P(o_{t+1},o_{t+2},\cdots,o_T|i_t=q_i,\lambda)\\ &=\beta_t(i) \end{aligned}

  利用前向概率和后向概率的定义可以将观测序列概率P(Oλ)P(O|\lambda)统一写成
P(Oλ)=i=1Nj=1Nαt(i)aijbj(ot+1)βt+1(j)(18)P(O|\lambda)=\sum_{i=1}^N\sum_{j=1}^N\alpha_t(i)a_{ij}b_j(o_{t+1})\beta_{t+1}(j)\tag{18}
4、一些概率与期望值的计算
  利用前向概率和后向概率,可以得到关於单个状态和两个状态概率的计算公式。

  • 定义模型λ\lambda和观测OO,在时刻tt处于状态qiq_i的概率。记
    γt(i)=P(it=qiO,λ)=P(it=qi,Oλ)P(Oλ)=αt(i)βt(i)j=1Nαt(j)βt(j)(19)\gamma_t(i)=P(i_t=q_i|O,\lambda)=\cfrac{P(i_t=q_i,O|\lambda)}{P(O|\lambda)}=\cfrac{\alpha_t(i)\beta_t(i)}{\sum_{j=1}^N\alpha_t(j)\beta_t(j)}\tag{19}
  • 给定模型λ\lambda和观测OO,在时刻tt处于状态qiq_i且在时刻t+1t+1处于qjq_j的概率。记
    ξt(i,j)=P(it=qi,it+1=qjO,λ)=αt(i)aijbj(ot+1)βt+1(j)i=1Nj=1Nαt(i)aijbj(ot+1)βt+1(j)(20) \begin{aligned} \xi_t(i,j) &=P(i_t=q_i,i_{t+1}=q_j|O,\lambda)\\ &=\cfrac{\alpha_t(i)a_{ij}b_j(o_{t+1})\beta_{t+1}(j)}{\sum_{i=1}^N\sum_{j=1}^N\alpha_t(i)a_{ij}b_j(o_{t+1})\beta_{t+1}(j)}\tag{20} \end{aligned}
  • γt(i)\gamma_t(i)ξt(i,j)\xi_t(i,j)对各个时刻tt求和,可以得到一些有用的期望值。
    (1)在观测OO下状态ii出现的期望值:
    t=1Tγt(i)(21)\sum_{t=1}^T\gamma_t(i)\tag{21}
    (2)在观测OO下由状态ii转移的期望值:
    t=1T1γt(i)(22)\sum_{t=1}^{T-1}\gamma_t(i)\tag{22}
    (3)在观测OO下由状态ii转移到状态jj的期望值:
    t=1T1ξt(i,j)(23)\sum_{t=1}^{T-1}\xi_t(i,j)\tag{23}

3.2、学习问题

  隐马尔可夫模型的学习,根据训练数据是包括观测序列和对应的状态序列还是只有观测序列,可以分别由监督学习与无监督学习实现。

  • 监督学习方法
      已知观测序列O=(o1,o2,,oT)O=(o_1,o_2,\cdots,o_T),估计模型λ=(A,B,π)\lambda=(A,B,\pi)参数,使得在该模型下观测概率P(Oλ)P(O|\lambda)最大。即用极大似然估计的方法估计参数。
    1、转移概率aija_{ij}的估计
      设样本中时刻tt处于状态ii时刻t+1t+1转移到状态jj的频数为AijA_{ij},那么状态转移概率为
    aij=Aijj=1NAij      i=1,2,,N;    j=1,2,,N(24)a_{ij}=\cfrac{A_{ij}}{\sum_{j=1}^NA_{ij}}\ \ \ \ \ \ i=1,2,\cdots,N;\ \ \ \ j=1,2,\cdots,N \tag{24}
    2、观测概率bj(k)b_j(k)的估计
      设样本中状态为jj并观测为kk的频数是BjkB_{jk},那么状态jj观测为kk的概率估计是:
    bj(k)=Bjkk=1MBjk      j=1,2,,N;    k=1,2,,M(25)b_j(k)=\cfrac{B_{jk}}{\sum_{k=1}^MB_{}jk}\ \ \ \ \ \ j=1,2,\cdots,N;\ \ \ \ k=1,2,\cdots,M\tag{25}
    3、初始状态概率πi\pi_i的估计为SS个样本中初始状态为qiq_i的频率。
  • 无监督学习方法
      暂时略过

3.3、预测问题(解码问题)

  已知模型λ=(A,B,π)\lambda=(A,B,\pi)和观测序列O=(o1,o2,,oT)O=(o_1,o_2,\cdots,o_T),求对给定观测序列条件概率P(Iλ)P(I|\lambda)最大的状态序列I=(i1,i2,,iT)I=(i_1,i_2,\cdots,iT)。即给定观测序列,求最有可能的对应的状态序列。

  • 近似算法
      近似算法的想法是,在每个时刻tt选择在该时刻最有可能出现的状态iti_t^*,从而得到一个状态序列I(i1,i2,,iT)I^*(i_1^*,i_2^*,\cdots,i_T^*),将它作为预测的结果。
      给定隐马尔可夫模型λ\lambda和观测序列OO,在时刻tt处于状态qiq_i的概率γt(i)\gamma_t(i)
    γt(i)=αt(i)βt(i)j=1Nαt(j)βt(j)\gamma_t(i)=\cfrac{\alpha_t(i)\beta_t(i)}{\sum_{j=1}^N\alpha_t(j)\beta_t(j)}
    在每一个时刻tt最有可能的状态iti_t^*
    it=argmax1iN[γt(i)],     t=1,2,,T(26)i_t^*=arg\max_{1\leq i \leq N}\big[\gamma_t(i)\big], \ \ \ \ \ t=1,2,\cdots,T\tag{26}
    从而得到状态序列I(i1,i2,,iT)I^*(i_1^*,i_2^*,\cdots,i_T^*)
      近似算法的优点就是计算简单,其缺点是不能保证预测的状态序列整体是最有可能的状态序列,因为预测的状态序列可能有实际不发生的部分。事实上,上述方法得到的状态序列中有可能存在转移概率为0的相邻状态,即对于某些i,j,aij=0i,j,a_{ij}=0。尽管如此,近似算法仍然是有用的。
  • 维特比算法
      维特比算法实际是用动态规划解隐马尔可夫模型预测问题,即用动态规划求概率最大路径(最优路径)。这时一条路径对应着一个状态序列。

4、模型应用

5、模型的偏执问题

  以词性标注的例子来描述偏执问题。词性标注是指给一段文字,标注出这段文字所对应的词性序列。
例如:
原文:延安供水工程建成通水。
正确标注结果:延安\ns 供水\vn 工程\n 建成\v 通水\v。
延安 ---------地名
供水 ---------名动词
工程 ---------名词
建成 ---------动词
通水 ---------动词
  预测过程中,需要尝试各种词性组合,最终通过HMM模型预测出概率最大的词性序列。因为有一些词性出现的频次非常低(比如rg 代词素),所以导致任何词性转移到rg的概率很低,但是有可能它的发射概率相对很高,最终导致预测的词性序列均为rg。注意:词性序列上每个词的词性由转移概率和发射概率共同决定。

实际中可能的预测情况:
(以下数据不具真实性,单纯用来举例)

词语 延安 供水 工程 建成 通水
正确的词性 \ns \vn \n \v \v
转移概率 5% 1.2% 1.5% 1.3% 1.1%
发射概率 2% 1% 2.3% 1.5% 1.6%
词语 延安 供水 工程 建成 通水
正确的词性 \rg \rg \rg \rg \rg
转移概率 0.01% 0.1% 0.1% 0.1% 0.1%
发射概率 10% 10% 10% 10% 10%

  对比以上两个表格不难发现,虽然rg的词性序列转移概率很小,但是发射概率相对较高,最终导致预测的结果为rg序列。这就是HMM模型处理过程中,如果选用的平滑处理方法不当,可能会出现的偏执问题。

6、预测结果数据分析

(1)为什么初始阶段随着训练样本的增加,模型的预测效率会越来越好?
答:第一、当样本规模较小,所训练出来的模型在进行预测时,未知错误所占的比重较大,因此导致准确率低。随着训练样本的增加,未知错误所占的比重降低,所以准确率提高。即所谓的“见多识广”。第二、因为样本有限,所以训练得到的模型对一些词性的预测很大概率是错误的,随着样本增加会逐渐纠正这些错误的概率。
(2)为什么后面阶段,随着训练样本的增加,预测效果趋于平缓?
答:因为很多词是存在多种词性即存在歧义,而如何判断这个词当前应该是什么词性就需要结合语境等因素,这就对模型提出很高的要求。二元HMM模型仅仅考虑前后词性之间的关系,这还不足以涵盖所有情况,因此无法解决所有歧义问题,所以最终模型会趋于平缓。
(3)为什么有些类型的预测错误,大语料的时候反而占比大于小语料的时候?
答:因为随着样本的增加,整体的错误率降低,但是有些类型的预测错误可能没有降低,所以在大语料时这种类型的预测错误占比反而提升。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章