本文重点
- 一个HMM模型是否可以处理任意长度的序列?
- HMM训练如何支持多序列?
为什么要有隐马尔科夫模型?
有了马尔科夫模型,为什么还要有隐马尔科夫模型? 二者都可以用三元组表示
(π,S,T)(π,S,T)
其中SS是状态集合, 是状态初始概率分布, TT是状态转移矩阵. 应用马尔科夫模型时,需要先构造出上述三个元素(一般不是通过ML,而是利用经验知识人为构造); 而隐马尔科夫模型涉及”观测”这个新的概念,状态是隐藏的,未知的.比如在语音翻译中, 每个音节可以看作观测值,一个语句包含很多音节,作为一次观测, 而音节对应的含义(文字)作为隐含状态,是未知的,HMM希望通过学习获知音节序列和文字序列的对应关系,达成语音翻译的目标. 实际应用中会赋予HMM隐含状态真实的物理意义.
HMM示意图
常见的HMM示意图有两个,个人觉得两个图的解释各有侧重点,都列举如下
图中是3个隐状态的HMM,是初始状态,EE是结束状态, 他们是两个虚构的状态,用来对齐.
第一个图更常见, 但它容易让人产生一个疑问:HMM是不是要求序列长度固定? 入上图的HMM是不是只能处理长度为2的序列? 回答是否定的. 上面第二幅图描述的同一个HMM, 其实HMM模型参数中是没有T的概念,自然可以处理任意长度序列. 第一幅图之所以如此流行,是因为用它描述HMM相关的算法更加直观,比如”前向,后向”的概念.
# 关于HMM的三个问题
介绍HMM的资料必定涉及”HMM三问题”,不过在介绍他们之前,需要先了解以下HMM和马尔科夫模型的一个区别:发射概率.
HMM引入”状态-观测”这组概念,发射概率就是描述某个状态下得到某个观测值的概率.
上面第一幅图适合公式推导,考虑给定一个观测序列O=o0,o1,...,oTO=o0,o1,...,oT时,MHM模型参数λ=(π,S,T)λ=(π,S,T)已知,则在时刻t处于状态StSt的概率.
Pt(Si)=Pt(ot|S)∑Nj=1Pt−1(Sj)P(Si|Sj)Pt(Si)=Pt(ot|S)∑j=1NPt−1(Sj)P(Si|Sj)
其含义时t−1t−1时刻处于状态SjSj,后以概率P(Si|Sj)P(Si|Sj)转移到状态SiSi,而且SiSi以概率P(Ot|Si)P(Ot|Si)发射出观测值otot
这是一个递推公式,其初始状态为
P0(Si)=πiP0(Si)=πi
这个Pt(Si)Pt(Si)很重要,HMM三个问题中,这个概率可以处理2.5个.
- 评估问题: HMM模型所有参数λλ已知,求一个已知序列O的期望概率E
E(O|λ)=∑i=1NPT(Si)E(O|λ)=∑i=1NPT(Si)
即最终时刻T,所有状态概率和 - 解码问题: HMM模型所有参数λλ已知,求一个已知观测O所经历的各个隐含状态序列 和评估问题类似,不过这里不是求和,而是从t=0t=0到t=Tt=T找到一个隐状态序列,使得PT(Si)=maxjPT(Sj)PT(Si)=maxjPT(Sj),从t=Tt=T逆向搜索到t=0t=0即可,这个过程称为Viterbi算法.
- 学习问题:已知一组序列OsOs,求出HMM的参数λλ
假设我们已经通过经验确定了隐含状态的个数N, 观测序列O有S个,每一个观测序列的长度可以不一致.前面的Pt(Si)Pt(Si)定义为前向概率αt(i)αt(i), 然后我们考虑什么是后向概率
βt(i)=P(ot+1,ot+2,...,oT|λ,S(t)=Si)βt(i)=P(ot+1,ot+2,...,oT|λ,S(t)=Si)
后向概率的含义是: t时刻处于状态i,t时刻后观测和输入序列O一致 (ps:这个定义中状态和观测不是同一个时刻!!). 计算后向概率只是为了后面计算状态转移参数T
显然,已知λλ时,前向概率αt(i)αt(i)和βt(i)βt(i)可以用递推方式求解,下面我们看看通过前向/后向概率,有没有办法求解λλ.
初始概率
πi=∑t=1Tαt(i)πi=∑t=1Tαt(i)
发射概率
P(ok|Si)=∑Tt+11(ot=ok)αt(i)πiP(ok|Si)=∑t+1T1(ot=ok)αt(i)πi
其中1(ot=ok)1(ot=ok)是只序列O在时刻t的取值ot=okot=ok
转移概率
P(Si|Sj)=αt(j)βt+1(i)πjP(Si|Sj)=αt(j)βt+1(i)πj
这是一个”先有鸡还是先有蛋的问题”,EM很适合这种场景.
以上考虑的是只有一个观测序列O, 如果观测序列有多个呢? EM算法中间,每个序列计算出一组λλ,然后取平均,此处取平均有两个可能的途径 - 第s个序列,得到λsλs,则λ=1S∑Ss=1λsλ=1S∑s=1Sλs
- 依然是平均,不过稍微复杂一些
多序列初始概率
πi=1S∑s=1S∑t=1Tαst(i)πi=1S∑s=1S∑t=1Tαts(i)
多序列发射概率
P(ok|Si)=∑Ss=1∑Tt+11(ot=ok)αst(i)SπiP(ok|Si)=∑s=1S∑t+1T1(ot=ok)αts(i)Sπi
多序列转移概率
P(Si|Sj)=∑Ss=1αst(j)βst+1(i)SπjP(Si|Sj)=∑s=1Sαts(j)βt+1s(i)Sπj
实验
to be continue…