隐马尔可夫模型
2021-08-20

隐马尔可夫模型

模型简介

隐马尔可夫模型(Hidden Markov Model,HMM)是关于时序的概率模型,描述由一个隐藏的马尔可夫链随机生成不可观测的状态随机序列,再由各个状态生成一个观测而产生观测随机序列的过程。隐藏的马尔可夫链随机生成的状态的序列,称为状态序列;每个状态生成一个观测,由此产生的随机序列称为观测序列。序列的每一个位置又可以看作是一个时刻。

HMM

模型定义

模型定义如下:

  1. 状态集合Q,包含N种可能,Q={q1,q2,...,qN}

  2. 观测集合V,包含M种可能,V={v1,v2,...,vN}

  3. 状态序列I,长度为T,I={i1,i2,...,iN}

  4. 观测序列O,长度为T,O={o1,o2,...,oN}

  5. 状态转移概率矩阵AA=[aij]N×N,其中,aij=P(it+1=qjit=qi),i=1,2,,N;j=1,2,,N

  6. 观测概率矩阵BB=[bjk]N×M,其中,bjk=P(ot=vkit=qj),j=1,2,,N;k=1,2,,M

  7. 初始状态概率向量ππ=(πi,π2,,πN),其中,πi=P(i1=qi),i=1,2,,N

隐马尔可夫模型由初始状态向量π、状态转移概率矩阵A和观测概率矩阵B决定。πA决定状态序列,B决定观测序列。因此,隐马尔可夫模型λ可以用三元符号表示,即:λ=(A,B,π)

 

两个基本假设

  1. 齐次马尔可夫性假设

    假设隐藏的马尔可夫链在任意时刻t的状态只依赖于其前一时刻的状态,与其它时刻的状态及观测无关,也与时刻t无关:

    (1)P(itit1,ot1,,i1,o1)=P(itit1)

    齐次马尔可夫性假设

  2. 观测独立性假设

    假设任意时刻的观测只依赖于该时刻马尔可夫链的状态,与其它观测及状态无关:

    (2)P(otiT,oT,iT1,oT1,,it,it1,ot1,,i1,o1)=P(otit)

观测独立性假设

三个基本问题

  1. 概率计算问题

    给定模型λ=(A,B,π)和观测序列O=(o1,o2,,oT),计算在模型λ下观测序列O出现的概率P(Oλ)

  2. 学习问题

    已知观测序列O=(o1,o2,,oT)估计模型的λ=(A,B,π)参数,使得在该模型下观测序列概率P(Oλ)最大。

  3. 预测问题

    已知模型参数λ=(A,B,π)和观测序列O=(o1,o2,,oT)求最有可能的状态序列 I=(i1,i2,,iT),即使得P(IO,λ)最大。

概率计算问题

直接计算

(3)P(Oλ)=IP(O,Iλ)=IP(OI,λ)P(Iλ)

其中,P(Iλ)表示给定模型参数时,产生状态序列I=(i1,i2,,iT)的概率:

(4)P(Iλ)=πi1ai1i2ai2i3aiT1iT

P(OI,λ)表示给定模型参数λ且状态序列为I=(i1,i2,,iT),产生观测序列O=(o1,o2,,oT)的概率:

(5)P(OI,λ)=bi1o1bi2o2biToT

因此:

(6)P(Oλ)=IP(O,Iλ)=IP(OI,λ)P(Iλ)=i1,i2,,iTπi1bi1o1ai1i2bi2o2aiT1iTbiToT

接下来,对该式进行算法复杂度分析:

  1. i1,i2,,iT共有NT种可能,故时间复杂度为O(NT)

  2. πi1bi1o1ai1i2bi2o2aiT1iTbiToT时间复杂度为O(T)

    由上述分析,该式总的时间复杂度为O(TNT),指数级复杂度,实际中不可行。

前向计算

首先定义前向概率:给定隐马尔可夫模型λ,定义到时刻t时部分观测序列为(o1,o2,,ot)且状态为qi的概率为前向概率,记作:

(7)αt(i)=P(o1,o2,,ot,it=qiλ)

前向概率

对前向概率推导得:

(8)αt(i)=P(o1,o2,,ot,it=qiλ)=P(it=qi,o1t)=j=1NP(it1=qj,it=qi,o1t1,ot)=j=1NP(it=qi,otit1=qj,o1t1)P(it1=qj,o1t1)=j=1NP(it=qi,otit1=qj)αt1(j)=j=1NP(otit=qi,it1=qj)P(it=qiit1=qj)αt1(j)=j=1NP(otit=qi)P(it=qiit1=qj)αt1(j)=j=1Nbiotajiαt1(j)=j=1N[ajiαt1(j)]bioti=(1,2,,N),t=(2,3,,T)

公式说明:因所有概率均在参数λ下计算,故从第二步开始,省略条件中的λ

因此,

(9)αT(i)=[j=1NαT1(j)aji]×bioT

基于前向概率,可得观测序列的概率为:

(10)P(Oλ)=P(o1,o2,,oTλ)=i=1NP(o1,o2,,oT,iT=qiλ)=i=1NαT(i)

根据上述推导,可得通过前向算法计算观测概率的算法如下:

 算法 1.0 (观测序列概率的前向算法) 

 输入:隐马尔可夫模型 λ,O

 输出:观测序列概率 P(Oλ)

时间复杂度分析:

  1. 根据递推公式,需要遍历i=1Nj=1N,所以时间复杂度为O(N2)

  2. 时间维度的计算,时间复杂度是O(T)

    由上述分析可以,总的时间复杂度为O(TN2),相比直接计算,有很大提升。

后向计算

首先定义后向概率:给定隐马尔可夫模型λ,定义在时刻t状态为qi的条件下,从t+1T时刻的观测序列为(ot+1,ot+2,,oT)的概率为后向概率,记作:

(11)βt(i)=P(ot+1,ot+2,,oTit=qi,λ)

后向概率

对后向概率推导得:

(12)βt(i)=P(ot+1,ot+2,,oTit=qi,λ)=j=1NP(ot+1,ot+2,,oT,it+1=qjit=qi,λ)=j=1NP(ot+2T,ot+1,it+1=qjit=qi,λ)=j=1NP(ot+2Tit=qi,λ,ot+1,it+1=qj)P(ot+1,it+1=qjit=qi,λ)=j=1NP(ot+2Tλ,it+1=qj)P(ot+1it+1=qj,it=qi,λ)P(it+1=qjit=qi,λ)=j=1Nβt+1(j)bjot+1aiji=(1,2,,N),t=(1,2,,T1)

为了确保递推公式的连贯性,令βT(i)=P(iT=qi,λ)=1

基于后向概率,可得观测序列的概率为:

(13)P(Oλ)=P(o1,o2,,oTλ)=i=1NP(o1,i1=qiλ)P(o2,o3,,oTi1=qi,λ)=i=1Nπibio1β1(i)

根据上述推导,可得通过后向算法计算观测概率的算法如下:

 算法 1.1 (观测序列概率的后向算法) 

 输入:隐马尔可夫模型 λ,O

 输出:观测序列概率 P(Oλ)

若干公式

  1. 前向概率 × 后向概率

    (14)αt(i)βt(i)=P(o1,o2,,ot,it=qiλ)P(ot+1,ot+2,,oTit=qi,λ)=P(o1t,it=qiλ)P(ot+1Tit=qi,λ)=P(o1tit=qi,λ)P(it=qiλ)P(ot+1Tit=qi,λ)=P(o1Tit=qi,λ)P(it=qiλ)=P(it=qi,Oλ)
  2. 给定λO,在时刻t处于状态qi的概率

    (15)γt(i)=P(it=qiO,λ)=P(it=qi,Oλ)P(Oλ)=P(it=qi,Oλ)j=1NP(it=qj,Oλ)=αt(i)βt(i)j=1Nαt(j)βt(j)
  3. 给定λO,在时刻t处于状态qi且在时刻t+1处于状态qj的概率

(16)ξt(i,j)=P(it=qi,it+1=qjO,λ)=P(it=qi,it+1=qj,Oλ)P(Oλ)=P(it=qi,it+1=qj,Oλ)i=1Nj=1NP(it=qi,it+1=qj,Oλ)

又因为:

(17)P(it=qi,it+1=qj,Oλ)=P(it=qi,it+1=qj,o1,o2,,oTλ)=P(it=qi,it+1=qj,o1t,ot+1Nλ)=P(it=qi,o1tλ)P(it+1=qj,ot+1Nλ,it=qi,o1t)=P(it=qi,o1tλ)P(it+1=qj,ot+1Nλ,it=qi)=P(it=qi,o1tλ)P(it+1=qj,ot+1,ot+2Nλ,it=qi)=P(it=qi,o1tλ)P(ot+2Nit+1=qj,ot+1,λ,it=qi)P(it+1=qj,ot+1λ,it=qi)=P(it=qi,o1tλ)P(it+1=qj,ot+1λ,it=qi)P(ot+2Nit+1=qj,λ)=αt(i)aijbjot+1βt+1(j)

所以:

(18)ξt(i,j)=αt(i)aijbjot+1βt+1(j)i=1Nj=1Nαt(i)aijbjot+1βt+1(j)

学习问题

状态已知,观测已知

假设已给出训练数据包含S个长度相同的观测序列和对应的状态序列{(O1,I1),(O2,I2)(OS,IS)},那么可以利用极大似然估计法来估计隐马尔可夫模型的参数,具体方法如下:

  1. 转移概率aij的估计

    (52)aij=Aijj=1NAij

    其中,Aij 为样本中时刻 t 处于状态 qi 而到时刻 t+1 转移到状态 qj 的 的频数。

  2. 观测概率bjk的估计

    (53)bjk=Bjkk=1MBjk

    其中,Bjk 为样本中状态为 qj, 对应观测为 vk 的 的频数。

  3. 初始状态概率πi的估计

    S个样本中初始状态为 qi 的频率。

状态未知,观测已知

问题定义

仅知道观测序列为O=(o1,o2,,oT),而不知道状态序列数据I=(i1,i2,,iT),那么隐马尔可夫模型就是一个含有隐变量的概率模型:

(19)P(Oλ)=IP(OI,λ)P(Iλ)

可使用EM算法对该问题进行参数求解,该算法亦称为Baum-Welch算法。

完全数据的对数似然

需要确定完全数据的对数似然函数。 观测数据为O=(o1,o2,,oT),未观测数据为I=(i1,i2,,iT),则完全数据为(O,I)=(o1,i1,o2,i2,,oT,iT),完全数据的对数似然函数为:

(20)lnP(O,Iλ)

其中,P(O,Iλ)=πi1bi1o1ai1i2bi2o2aiT1iTbiToT,所以可进一步得到:

(21)lnP(O,Iλ)=ln(πi1bi1o1ai1i2bi2O2aiT1iTbiToT)=lnπi1+t=1T1lnaitit+1+t=1Tlnbitot

E步:求Q函数

定义Q函数如下:

(22)Q(λ,λ¯)=IP(IO,λ¯)lnP(O,Iλ) 其中,λ¯是隐马尔可夫模型参数的当前估计值,λ

为了后续计算方便,对Q函数做如下恒等变形:

(23)Q(λ,λ¯)=IP(IO,λ¯)lnP(O,Iλ)=IP(O,Iλ¯)P(Oλ¯)lnP(O,Iλ)

由于接下来仅极大化λP(Oλ¯)作为常数项可以省略,所以Q函数可以进一步简化为:

(24)Q(λ,λ¯)=IP(O,Iλ¯)lnP(O,Iλ)=IP(O,Iλ¯)(lnπi1+t=1T1lnaitit+1+t=1Tlnbitot)=IP(O,Iλ¯)lnπi1+IP(O,Iλ¯)(t=1T1lnaitit+1)+IP(O,Iλ¯)(t=1Tlnbitot)

M步:极大化Q函数

由于要极大化的参数在上式中单独地出现在3个项中,所以只需对各项分别极大化。

  1. πi

    Q函数中的第1项可以写成:

    (25)IP(O,Iλ¯)lnπi1=i1,i2,,iTP(O,i1,i2,,iTλ¯)lnπi1=i=1N(i2,i3,,iTP(O,i1=qi,i2,i3,,iTλ¯)lnπi)=i=1N{lnπi(i2,i3,,iTP(O,i1=qi,i2,i3,,iTλ¯))}=i=1NlnπiP(O,i1=qiλ¯)

    由于π需要满足约束i=1Nπi=1,利用拉格朗日乘子法,写出拉格朗日函数:

    (26)i=1NlnπiP(O,i1=qiλ¯)+η(i=1Nπi1)

    对拉格朗日函数关于π求偏导并令结果为0:

    (27)πi[i=1NlnπiP(O,i1=qiλ¯)+η(i=1Nπi1)]=01πiP(O,i1=qiλ¯)+η=0P(O,i1=qiλ¯)+ηπi=0

    利用i=1Nπi=1,对上式两边关于i求和可得:

    (28)i=1N[P(O,i1=qiλ¯)+ηπi]=0i=1NP(O,i1=qiλ¯)+i=1Nηπi=0P(Oλ¯)+η1=0η=P(Oλ¯)

    将其带回P(O,i1=qiλ¯)+ηπi=0可得:

    (29)P(O,i1=qiλ¯)P(Oλ¯)πi=0
    (30)πi=P(O,i1=qiλ¯)P(Oλ¯)=P(i1=qiO,λ¯)=γ1(i)=α1(i)β1(i)j=1Nα1(j)β1(j)

    其中,γ1(i)=α1(i)β1(i)j=1Nα1(j)β1(j)表示给定模型参数λ¯和观测O,在时刻t处于状态qi的概率。

  2. aij

    Q函数中的第2项可以写成:

    (31)IP(O,Iλ¯)(t=1T1lnaii,it+1)=t=1T1(ii,i2,,iTP(O,i1,i2,,iTλ¯)lnaiii+1)=t=1T1{i=1Nj=1N(i1,i2,,it1,it+2,,iTP(O,i1,i2,,it=qi,it+1=qj,,iTλ¯)lnaij)}=t=1T1{i=1Nj=1N[lnaij(i1,i2,,it1,it+2,,iTP(O,i1,i2,,it=qi,it+1=qj,,iTλ¯))]}=t=1T1i=1Nj=1NlnaijP(O,it=qi,it+1=qjλ¯)

    由于aij需要满足j=1Naij=1的约束条件,同样需要利用拉格朗日乘子法,写出拉格朗日函数:

    (32)t=1T1i=1Nj=1NlnaijP(O,it=qi,it+1=qjλ¯)+η(j=1Naij1)

    对拉格朗日函数关于aij求偏导并令结果为0:

    (33)aij[t=1T1i=1Nj=1NlnaijP(O,it=qi,it+1=qjλ¯)+η(j=1Naij1)]=01aijt=1T1P(O,it=qi,it+1=qjλ¯)+η=0t=1T1P(O,it=qi,it+1=qjλ¯)+ηaij=0

    利用j=1Naij=1,对上式两边求和可得:

    (34)j=1Nt=1T1P(O,it=qi,it+1=qjλ¯)+j=1Nηaij=0t=1T1P(O,it=qiλ¯)+η1=0η=t=1T1P(O,it=qiλ¯)

    将其带回t=1T1P(O,it=qi,it+1=qjλ¯)+ηaij=0可得:

    (35)t=1T1P(O,it=qi,it+1=qjλ¯)t=1T1P(O,it=qiλ¯)aij=0aij=t=1T1P(O,it=qi,it+1=qjλ¯)t=1T1P(O,it=qiλ¯)

    分子分母同时除以P(Oλ¯)得:

    (36)aij=t=1T1P(O,it=qi,it+1=qjλ¯)P(Oλ)t=1T1P(O,it=qiλ¯)P(Oλ)=t=1T1P(it=qi,it+1=qjO,λ¯)t=1T1P(it=qiO,λ¯)=t=1T1ξt(i,j)t=1T1γt(i)

    ,ξt(i,j)=P(it=qi,it+1=qj,Oλ)i=1Nj=1NP(it=qi,it+1=qj,Oλ)λ¯Otqit+1qjγt(i)=αt(i)βt(i)j=1Nαt(j)βt(j)λ¯Otqi

  3. bjk

Q函数中的第3项可以写成:

(37)IP(O,Iλ¯)(t=1Tlnbi1ot)=t=1T(i1,i2,,iTP(O,i1,i2,,iTλ¯)lnbiiot)=t=1T{j=1N(i1,i2,,it1,it+1,,iTP(O,i1,i2,,it=qj,,iTλ¯)lnbjot)}=t=1T{j=1N[lnbjot(i1,i2,,it1,it+1,,iTP(O,i1,i2,,it=qj,,iTλ¯))]}=t=1Tj=1NlnbjotP(O,it=qjλ¯)

由于bjk需要满足约束k=1Mbjk=1,同样利用拉格朗日乘子法,写出拉格朗日函数:

(38)t=1Tj=1NlnbjotP(O,it=qjλ¯)+η(k=1Mbjk1)

对拉格朗日函数关于bjk求偏导并令结果为0:

(39)bjk[t=1Tj=1NlnbjotP(O,it=qjλ¯)+η(k=1Mbjk1)]=01bjkt=1TP(O,it=qjλ¯)I(ot=vk)+η=0 (其中, I(ot=vk) 为指示函数 )t=1TP(O,it=qjλ¯)I(ot=vk)+ηbjk=0

利用k=1Mbjk=1,对上式两边关于k求和可得:

(40)k=1Mt=1TP(O,it=qjλ¯)I(ot=vk)+k=1Mηbjk=0t=1TP(O,it=qjλ¯)+η1=0η=t=1TP(O,it=qjλ¯)

k=1Mt=1TP(O,it=qjλ¯)I(ot=vk)=t=1TP(O,it=qjλ¯)otvk(k=1,,M)vkotot=vk

将其带回t=1TP(O,it=qjλ¯)I(ot=vk)+ηbjk=0可得:

(41)t=1TP(O,it=qjλ¯)I(ot=vk)t=1TP(O,it=qjλ¯)bjk=0bjk=t=1TP(O,it=qjλ¯)I(ot=vk)t=1TP(O,it=qjλ¯)

分子分母同时除以P(Oλ¯)

(42)bjk=t=1TP(O,it=qjλ¯)I(ot=vk)P(Oλ¯)t=1TP(O,it=qjλ¯)P(Oλ¯)=t=1TP(it=qjO,λ¯)I(ot=vk)t=1TP(it=qjO,λ¯)=t=1,ot=vkTγt(j)t=1Tγt(j)

γt(i)=αt(i)βt(i)j=1Nαt(j)βt(j)λ¯Otqi

 

预测问题

贪心算法

在每个时刻t选择在该时刻最有可能出现的状态it,从而得到一个状态序列I=(i1,i2,,iT),将它作为预测的结果。具体算法那如下:

 算法 1.2 (贪心算法预测状态序列) 

 输入:隐马尔可夫模型 λ,O

 输出:状态序列 I=(i1,i2,,iT)

维特比算法

维特比算法:使用动态规划求解概率最大路径,每一条路径对应一个状态序列。具体算法如下:

 算法 1.3 (维特比算法预测状态序列) 

 输入:隐马尔可夫模型 λ,O

 输出:状态序列 I=(i1,i2,,iT)

 

例题:盒子和球模型

假设有3个盒子,每个盒子里面都装有红白两种颜色的球,盒子里的红白球数如下表所示:

(54) 盒子 123 红球数 547 白球数 563

按照如下规则抽球,从而产生一个球的颜色的观测序列:首先以0.2、0.4、0.4的概率从1、2、3号盒子中选取一 个盒子,从这个盒子里随机抽出1个球,记录其颜色后放回,然后按以下概率选取下一个盒子

(55) 盒子 123 1 0.50.20.3 2 0.30.50.2 3 0.20.30.5

确定了转移的盒子后,再从盒子里随机抽出1个球,记录其颜色后放回。

重复3次,最终得到的观测序列为O={红,白,红}。

记选取的盒子序列状态序列,试求最优状态序列,即最优路径I=(i1,i2,,iT)

 

:

该问题为典型的隐马尔可夫模型,由题意可得知模型的参数为:

(56)A=[0.50.20.30.30.50.20.20.30.5]B=[0.50.50.40.60.70.3]π=(0.2,0.4,0.4)T

O={}

按照维特比算法我们可以进行如下计算:

  1. t=1

    (57)δ1(1)=π1b1o1=0.2×0.5=0.1,ψ1(1)=0δ1(2)=π2b2o1=0.4×0.4=0.16,ψ1(2)=0δ1(3)=π3b3o1=0.4×0.7=0.28,ψ1(3)=0

    例1

  2. t=2

    (58)δ2(1)=max1j3[δ1(j)aj1]b1o2=max{0.1×0.5=0.050.16×0.3=0.0480.28×0.2=0.056}×0.5=0.028,ψ2(1)=argmax1j3[δ1(j)aj1]=3δ2(2)=max1j3[δ1(j)aj2]b2o2=max{0.1×0.2=0.020.16×0.5=0.080.28×0.3=0.084}×0.6=0.0504,ψ2(2)=argmax1j3[δ1(j)aj2]=3δ2(3)=max1j3[δ1(j)aj3]b3o2=max{0.1×0.3=0.030.16×0.2=0.0320.28×0.5=0.14}×0.3=0.042,ψ2(3)=argmax1j3[δ1(j)aj3]=3

    例2

  3. t=3

    (59)δ3(1)=max1j3[δ2(j)aj1]b1o3=max{0.028×0.5=0.0140.0504×0.3=0.015120.042×0.2=0.0084}×0.5=0.00756,ψ3(1)=argmax1j3[δ2(j)aj1]=2δ3(2)=max1j3[δ2(j)aj2]b2o3=max{0.028×0.2=0.00560.0504×0.5=0.02520.042×0.3=0.0126}×0.4=0.01008,ψ3(2)=argmax1j3[δ2(j)aj2]=2δ3(3)=max1j3[δ2(j)aj3]b3o3=max{0.028×0.3=0.00840.0504×0.2=0.010080.042×0.5=0.021}×0.7=0.0147,ψ3(3)=argmax1j3[δ2(j)aj3]=3

例3

 

所以,最优状态序列为:

(60)i3=argmaxi[δ3(i)]=3i2=ψ3(i3)=ψ3(3)=3i1=ψ2(i2)=ψ2(3)=3

 

参考文档

  1. 如何理解隐马尔科夫模型(HMM)后向算法初始值为1? - 知乎 (zhihu.com)