HMM
隐马尔可夫模型(hidden Markov model, HMM)是可用于标注问题的统计学模型,是生成模型。html
本章节内容参考李航博士的《统计学习方法》
本章节添加了一些结论性结果的推导过程。python
1. 从一个天然语言处理的例子开始
例若有三个个句子:
句子一:我/名词 看见/动词 猫/名词
句子二:猫/名词 是/动词 可爱的/形容词
句子三:我/名词 是/动词 可爱的/形容词
通常只能观察到具体的词,因此像"我 看见 猫 …"是观测集合,而词性如"名词 动词 形容词 …"是状态序列web
设
Q是全部可能的状态集合,
V是全部可能的观测集合:算法
Q={q1,q2,...,qN},V={v1,v2,...,vM}编程
其中, N是可能的状态数,M是可能的观测数。app
例如:
Q={名词,动词,形容词},V={我,看见,猫,是,可爱的},N=3,M=5dom
I是长度为
T的状态序列,
O是对应的观测序列:svg
I={i1,i2,...,iT},O={o1,o2,...,oT}函数
例如:
I=(名词,动词,名词),O=(我,看见,猫)学习
A是状态转移矩阵:
A=[aij]N∗N(1)
其中,
aij=p(it+1=qj∣it=qi),i=1,2,...,N;j=1,2,...,N(2)
例如:
转态转移几率 |
名词 |
动词 |
形容词 |
名词 |
0 |
1 |
0 |
动词 |
1/3 |
0 |
2/3 |
形容词 |
1/3 |
1/3 |
1/3 |
B是观测几率矩阵,也就是发射矩阵:
B=[bj(k)]N∗M(3)
其中,
bj(k)=p(ot=vk∣it=qj),k=1,2,...,M;j=1,2,...,N(4)
例如:
观测矩阵几率 |
我 |
看见 |
猫 |
是 |
可爱的 |
名词 |
1 |
0 |
1 |
0 |
0 |
动词 |
0 |
1 |
0 |
1 |
0 |
形容词 |
0 |
0 |
0 |
0 |
1 |
π是初始状态几率向量:
π=(πi)(5)
其中,
πi=p(i1=qi),i=1,2,...,N(6)
A,B和
π是HMM的参数,用
λ表示:
λ=(A,B,π)(7)
例如:
隐马尔可夫的三个基本问题
1.几率计算问题。给定模型
λ=(A,B,π)和观测序列
O=(o1,o2,...,oT),计算在已知模型参数的状况下,观测序列的几率,即
p(O∣λ)。
2.学习问题。已知观测序列
O=(o1,o2,...,oT),估计模型参数
λ=(A,B,π),使
p(O∣λ)最大。
3.预测问题,也称解码问题。已知模型
λ=(A,B,π)和
O=(o1,o2,...,oT),求条件几率最大
p(I∣O)最大的状态序列
I=(i1,i2,...,iT)。
2. 几率预测问题
几率问题预测用直接计算法,计算复杂度高,能够采用动态规划形式的前向和后向算法下降计算复杂度。
为了表示方便,记:
(o1:t)=(o1,o2,...,on);(ot:T)=(ot,ot+1,...,oT)
2.1 前向算法
接下来就是解前向几率
p(it,o1:t∣λ):
p(it,o1:t∣λ)=it−1∑p(it−1,it,o1:t−1,ot∣λ)=it−1∑p(ot∣it−1,it,o1:t−1,λ)p(it∣it−1,o1:t−1,λ)p(it−1,o1:t−1∣λ)
由隐马尔科夫的条件独立性假设可得:
p(ot∣it−1,it,o1:t−1,λ)=p(ot∣it,λ)
p(it∣it−1,o1:t−1,λ)=p(it∣it−1,λ)
故
p(it,o1:t∣λ)=it−1∑p(ot∣it,λ)p(it∣it−1,λ)p(it−1,o1:t−1∣λ)=[it−1∑p(it−1,o1:t−1∣λ)p(it∣it−1,λ)]p(ot∣it,λ)
设:
αt+1(i)=p(o1:t+1,it+1=qi∣λ)(8)
且:
p(it+1=qi∣it=qj,λ)]=aji
p(ot+1∣it+1,λ)=bi(ot+1)
则:
αt+1(i)=[j=1∑Nαt(j)aji]bi(ot+1)(9)
因此前向算法就可迭代进行。
前向算法:
1.初值
α1(i)=πibi(o1)
2.递推
t=1,2,...,T−1
αt+1(i)=[j=1∑Nαt(j)aji]bi(ot+1)
3.终止
p(O∣λ)=i=1∑NαT(i)
2.2 后向算法
后向算法解决后向几率
p(ot+1:T∣it,λ):
p(ot+1:T∣it,λ)=it+1∑p(it+1,ot+1,ot+2:T∣it,λ)=it+1∑p(ot+2:T∣it+1,it,ot+1,λ)p(ot+1∣it+1,it,λ)p(it+1∣it,λ)
由隐马尔科夫的条件独立假设得:
p(ot+2:T∣it+1,it,ot+1,λ)=p(ot+2:T∣it+1,λ)
p(ot+1∣it+1,it,λ)=p(ot+1∣it+1,λ)
设:
βt(i)=p(ot+1:T∣it=qi,λ)(10)
又:
p(it+1=qj∣it=qi,λ)=aij
p(ot+1∣it+1=qj,λ)=bj(ot+1)
则:
βt(i)=j=1∑Naijbj(ot+1)βt+1(i)(11)
后向算法:
(1)
βT(i)=1
(2) 对t=T-1,T-2,…,1
βt(i)=j=1∑Naijbj(ot+1)βt+1(i)
(3)
p(O∣λ)=i=1∑Nπibi(o1)β1(i)
2.3 一些几率与指望值
这两个指望值都是后面EM算法用到的中间参量
1.计算
t时刻处于状态
qi的几率。
几率计算问题是计算
p(O∣λ),则有:
p(O∣λ)=it∑p(O,it∣λ)
依据隐马尔科夫的独立性假设:
p(ot+1:T∣it,o1:t,λ)=p(ot+1:T∣it,λ)
因此:
p(O∣λ)=it∑p(O,it∣λ)=it∑p(ot+1:T∣it,o1:t,λ)p(it,o1:t∣λ)=it∑p(ot+1:T∣it,λ)p(it,o1:t∣λ)
又有:
αt(i)=p(o1:t,it=qi∣λ)(12)
βt(i)=p(ot+1:T∣it=qi,λ)(13)
故:
p(O,it=qi∣λ)=p(ot+1:T∣it=qi,λ)p(it=qi,o1:t∣λ)=αt(i)βt(i)
p(O∣λ)=it∑αt(i)βt(i)
设:
γt(i)=p(it=qi∣O,λ)
因而能够获得:
γt(i)=p(it=qi∣O,λ)=p(O∣λ)p(it=qi,O∣λ)=∑j=1Nαt(j)βt(j)αt(i)βt(i)(14)
2.计算计算
t时刻处于状态
qi且计算
t+1时刻处于状态
qj的几率
p(O∣λ)=it∑it+1∑p(O,it,it+1∣λ)=it∑it+1∑p(o1:t,ot+1,ot+2:T,it,it+1∣λ)=it∑it+1∑p(ot+2:T∣o1:t,ot+1,it,it+1,λ)p(ot+1∣o1:t,it,it+1,λ)p(it+1∣it,o1:t,λ)p(it,o1:t∣λ)
由隐马尔科夫的独立性假设可得:
p(O∣λ)=it∑it+1∑p(ot+2:T∣it+1,λ)p(ot+1∣it+1,λ)p(it+1∣it,λ)p(it,o1:t∣λ)
设:
ξt(i,j)=p(it=qi,it+1=qj∣O,λ)
又有公式(2)(4)(12)(13)
得:
ξt(i,j)=p(O∣λ)p(it=qi,it+1=qj∣O,λ)=∑i=1N∑j=1Nαt(i)aijbj(ot+1)βt+1(j)αt(i)aijbj(ot+1)βt+1(j)(15)
3. 学习问题
3.1 监督学习
若是有标记好状态序列的样本,那就太好办了,直接将接个矩阵统计的各个维度定义后进行统计就能够了。统计过程当中注意几率之和为一的约束。
3.2 无监督学习
若是没有标记状态序列的样本,能够用Baum-Welch算法(EM算法)实现。
已知:包含
S个长度为
T的观测序列的观测序列
{O1,O2,...,OS}
目标:学习隐马尔可夫模型的参数
λ=(A,B,π)
记观测数据
O,隐数据
I,那么隐马尔可夫模型能够表示为:
p(O∣λ)=I∑p(O∣I,λ)p(I∣λ)
E步:
由于对
λ而言,
1/p(O∣λ)是常数项,因此
Q(λ,λ)=EI[logp(O,I∣λ)∣O,λ]=I∑logp(O,I∣λ)p(I∣O,λ)=I∑logp(O,I∣λ)p(O∣λ)p(I,O∣λ)=I∑logp(O,I∣λ)p(I,O∣λ)
将几率计算问题2.1小姐中前向算法的递归公式展开就能够获得:
p(O,I∣λ)=πi1bi1(o1)ai1i2bi2(o2)...aiT−1iTbiT(oT)=πi1[t=1∏T−1aitit+1][t=1∏Tbit(ot)]
因而:
Q(λ,λ)=I∑logπi1p(O,I∣λ)+I∑(t=1∑T−1aitit+1)p(O,I∣λ)+I∑(t=1∑Tbit(ot))p(O,I∣λ)(16)
特此说明隐变量
隐马尔可夫模型的隐变量就是观测序列对应的状态序列,因此隐变量能够用(14)式的变量表示
后面在M步中更新模型参数的时候也用到了(15)式,是否是就说明隐变量是两个,其实不是的,这儿只是为了表示的方便和算法的方便。
也就是在E步中,用
γ和
ξ表示隐变量,只是为了编程和表示的便利,这两个变量在E步中信息是重复的。
M步:
1.求解
πi
由(15)式可得:
L(πi1)=I∑logπi1p(O,I∣λ)=i∑Nlogπi1p(O,i1=i∣λ)
又由于
πi知足约束条件
∑i=1Nπi1=1,利用拉格朗日乘子法,写出拉格朗日函数:
i=1∑Nlogπip(O,i1=i∣λ)+γ(i=1∑Nπi−1)
对其求偏导而且令其结果为0得:
∂πi∂[i=1∑Nlogπip(O,i=i∣λ)+γ(i1=1∑Nπi−1)]=0(17)
得:
p(O,i1=i∣λ)+γπi=0
获得:
πi=−λp(O,i1=i∣λ)
带入
∑i=1Nπi1=1的:
−λ=i=1∑Np(O,i1=i∣λ)=p(o∣λ)
求得并有公式(14):
πi=p(o∣λ)p(O,i1=i∣λ)=γ1(i)(18)
2.求解
aij:
L(aij)=I∑(t=1∑T−1aitit+1)p(O,I∣λ)=i=1∑N(t=1∑T−1aitit+1)(j=1∑Np(O,it=i,it+1=j∣λ))=i=1∑Nj=1∑Nt=1∑T−1aijp(O,it=i,it+1=j∣λ)
应用约束条件
∑j=1Naij=1,用拉格朗日乘子法能够求出:
i=1∑Nj=1∑Nt=1∑T−1aijp(O,it=i,it+1=j∣λ)+λ(j=1∑Naij−1)
对上式求骗到并等于0获得:
∂aij∂[i=1∑Nj=1∑Nt=1∑T−1aijp(O,it=i,it+1=j∣λ)+λ(j=1∑Naij−1)]=0
获得:
t=1∑T−1p(O,it=i,it+1=j∣λ)+λaij=0
因此:
aij=−λ∑t=1T−1p(O,it=i,it+1=j∣λ)
将上式带入
∑j=1Naij=1:
−λ=j=1∑Nt=1∑T−1p(O,it=i,it+1=j∣λ)=t=1∑T−1p(O,it=i∣λ)
故得:
aij=∑t=1T−1p(O,it=i∣λ)∑t=1T−1p(O,it=i,it+1=j∣λ)=∑t=1T−1p(O,it=i∣λ)/p(o∣λ)∑t=1T−1p(O,it=i,it+1=j∣λ)/p(o∣λ)
将(14)和(15)带入的:
aij=∑t=1T−1γt(i)∑t=1T−1ξt(i,j)(19)
3.求解
bjk:
L(bjk)=I∑(t=1∑Tbit(ot))p(O,I∣λ)=j=1∑Nt=1∑Tbj(ot)p(O,it=j∣λ)
在约束条件
∑k=1Mbj(k)=1的拉格朗日乘子法:
j=1∑Nt=1∑Tbj(ot)p(O,it=j∣λ)+λ(k=1∑Mbj(k)−1)
对其求偏导得:
∂bj(k)∂[j=1∑Nt=1∑Tbj(ot)p(O,it=j∣λ)+λ(k=1∑Mbj(k)−1)]=0
由于只有在
ot=vk时偏导才不会等于0,以
I(ot=vk)表示,则:
t=1∑Tp(O,it=j∣λ)I(ot=vk)+λbj(ot)I(ot=vk)=0
bj(ot)I(ot=vk)能够写做
bj(k),故:
bj(k)=−λ∑t=1Tp(O,it=j∣λ)I(ot=vk)
将上式带入
∑k=1Mbj(k)=1得:
−λ=k=1∑Mt=1∑Tp(O,it=j∣λ)I(ot=vk)=t=1∑Tp(O,it=j∣λ)
获得:
bj(k)=∑t=1Tp(O,it=j∣λ)∑t=1Tp(O,it=j∣λ)I(ot=vk)
又有(14)式可得:
bj(k)=∑t=1Tγt(j)∑t=1,ot=vkTγt(j)(20)
EM算法总结:
E步:
γt(i)=p(it=qi∣O,λ)=p(O∣λ)p(it=qi,O∣λ)=∑j=1Nαt(j)βt(j)αt(i)βt(i)
ξt(i,j)=p(O∣λ)p(it=qi,it+1=qj∣O,λ)=∑i=1N∑j=1Nαt(i)aijbj(ot+1)βt+1(j)αt(i)aijbj(ot+1)βt+1(j)
M步:
πi=p(o∣λ)p(O,i1=i∣λ)=γ1(i)
aij=∑t=1T−1γt(i)∑t=1T−1ξt(i,j)
bj(k)=∑t=1Tγt(j)∑t=1,ot=vkTγt(j)
4. 预测问题(解码问题)
用维特比算法进行求解:
已知:模型
λ=(A,B,π)和
O=(o1,o2,...,oT)
求:条件几率最大
p(I∣O,λ)最大的状态序列
I=(i1,i2,...,iT)
由于
p(O)是一个定值,因此:
Imaxp(I∣O,λ)=Imaxp(I,O∣λ)/p(O∣λ)=Imaxp(I,O∣λ)
定义在时刻
t状态为
i的全部单个路径
(i1,i2,...,it)中几率最大值为:
δt(i)=i1,i2,...,it−1maxp(it=i,it−1:i1,ot:1∣λ)
递推推导:
p(it+1=i,it:1,ot+1:1∣λ)=p(it+1=i,it,it−1:1,ot+1,ot:1∣λ)=p(ot+1∣it+1=i,it,ot:1,λ)p(it+1=i∣it,it−1:1,ot:1,λ)p(it,it−1:1,ot:1∣λ)=p(ot+1∣it+1=i,λ)p(it+1=i∣it,λ)p(it,it−1:1,ot:1∣λ)
故:
δt+1(i)=i1,i2,...,it−1maxp(it+1=i,it:1,ot+1:1∣λ)=1≤j≤Nmax[δt(j)aji]bi(ot+1)(21)
定义在时刻
t状态为
i的全部单个路径
(i1,i2,...,it−1)中几率最大的第
t−