- 隐马尔科夫模型(Hidden Markov Model, HMM)是可用于标注问题的统计学模型
- 描述由隐藏的马尔科夫链随机生成观测序列的过程,属于生成模型。
隐马尔可夫模型基本概念
定义
- 隐马尔科夫模型是关于时序的概率模型,描述由一个隐藏的马尔科夫链随机生成不可观测的状态随机序列,再由各个状态生成一个观测而产生观测随机序列的过程。
- 隐藏的马尔科夫链随机生成的状态的序列,称为状态序列 (state sequence)
- 每个状态生成一个观测,而由此产生的观测的随机序列,称为观测序列 (observation sequence)
- 序列的每个位置又可以看作是一个时刻
- 隐马尔科夫模型由 初始概率分布、状态转移概率分布 以及 观测概率分布 确定。
- 形式定义如下:
- 设 Q 是所有可能的状态的集合,V 是所有可能的观测的集合
Q={q1,q2,⋯,qN},V={v1,v2,⋯,vM}
其中, N是可能的状态数, M是可能的观测数 - I 是长度为 T 的状态序列, O 是对应的观测序列
I=(i1,i2,⋯,iT),O=(o1,o2,⋯,oT)
- A 是状态转移概率矩阵:
A=[aij]N×N
其中, aij=P(it+1=qj|it=qi),i=1,2,⋯,N;j=1,2,⋯,N 是在时刻 t 处于状态 qi 的条件下在时刻 t+1 转移到状态 qj 的概率 - B 是观测概率矩阵:
B=[bj(k)]N×M
其中, bj(k)=P(ot=vk|it=qj),k=1,2,⋯,M;j=1,2,⋯,N 是在时刻 t 处于状态 qj 条件下生成观测 vk 的概率 -
π
是初始状态概率向量:
π=(πi)其中, πi=P(i1=qi),i=1,2⋯,N 是时刻 t=1 处于状态 qi 的概率
- 设 Q 是所有可能的状态的集合,V 是所有可能的观测的集合
- 隐马尔科夫模型由初始状态概率向量
π
、状态转移概率矩阵
A
和观测概率矩阵
B 决定,这三者成为隐马尔科夫模型的三要素。 π 和 A 决定状态序列,B 决定观测序列。隐马尔科夫模型 λ 可以用三元符号表示:λ=(A,B,π)
- 状态转移概率矩阵
A
与 初始状态概率向量
π 确定了隐藏的马尔科夫链,生成不可观测的状态序列。 - 观测概率矩阵 B 确定了如何从状态生成观测,与状态序列综合确定了如何产生观测序列
- 状态转移概率矩阵
A
与 初始状态概率向量
- 从定义可知,隐马尔科夫模型有两个基本假设:
- 齐次马尔可夫性假设,即 假设隐藏的马尔科夫链在任意时刻 t 的状态只依赖于其前一时刻的状态,与其他时刻的状态及观测无关,也与时刻 t 无关:
P(it|ii−1,oi−1,⋯,i1,o1),t=1,2,⋯,T - 观测独立性假设,即 假设任意时刻的观测只依赖于该时刻的马尔科夫链的状态,与其他状态及观测无关:
P(ot|ir,or,ir−1,or−1,⋯,it+1,ot+1,it,it−1,ot−1,⋯,i1,o1)=P(ot|it)
- 齐次马尔可夫性假设,即 假设隐藏的马尔科夫链在任意时刻 t 的状态只依赖于其前一时刻的状态,与其他时刻的状态及观测无关,也与时刻 t 无关:
观测序列的生成过程
- 根据隐马尔可夫模型定义,可以将一个长度为 T 的观测序列
O=(o1,o2,⋯,or)
的生成过程描述如下:
- 输入: 隐马尔可夫模型 λ=(A,B,π) , 观测序列长度 T
- 输出:观测序列
O=(o1,o2,⋯,or) - (1) 按照初始状态分布 π 产生状态 i1
- (2) 令 t=1
- (3) 按照状态 it 的观测概率分布 bit(k) 生成 ot
- (4) 按照状态 it 的状态转移概率分布 {aitit+1} 产生状态 it+1,it+1=1,2,⋯,N
- (5) 令 t=t+1 , 如果 t<T ,转步(3),否则终止
隐马尔可夫模型的3个基本问题
- 概率计算问题:给定模型 λ=(A,B,π) 和观测序列 O=(o1,o2,⋯,oT) ,计算在模型 λ 下观测序列 O 出现的概率 P(O|λ)
- 学习问题:已知观测序列 O=(o1,o2,⋯,oT) , 估计模型 λ=(A,B,π) 参数,使得在该模型下观测序列概率 P(O|λ) 最大,即用极大似然估计的方法估计参数
- 预测问题:也成解码问题,已知模型 λ=(A,B,π) 和观测序列 O=(o1,o2,⋯,oT) ,求对给定观测序列条件概率 P(I|O) 最大的状态序列 I=(i1,i2,⋯,iT) 。即给定观测序列,求最有可能的对应的状态序列
概率计算方法
直接计算法
- 首先,要计算的是:给定模型 λ=(A,B,π) 和观测序列 O=(o1,o2,⋯,oT) ,计算观测序列 O 出现的概率 P(O|λ)
- 最直接的方式是按概率公式直接计算:通过列举所有可能的长度为 T 的状态序列 I=(i1,i2,⋯,iT) ,求各个状态序列 I 与观测序列 O=(o1,o2,⋯,oT) 的联合概率分布 P(O,I|λ) ,然后对所有可能的状态序列求和,得到 P(O|λ)
- 状态序列
I=(i1,i2,⋯,iT)
的概率是
P(I|λ)=πi1ai1i2ai2i3⋯aT1T
- 对固定的状态序列
I=(i1,i2,⋯,iT)
,观测序列
O=(o1,o2,⋯,oT)
的概率是
P(O|I,λ)
,
P(O|I,λ)=bi1(o1)bi2(o2)⋯biT(oT)
- O 和 T 同时出现的联合概率为
P(O,I|λ)=P(O|I,λ)P(I|λ)=πi1bi1(o1)ai1i2bi2(o2)⋯aiT−1iTbiT(oT)
- 然后对所有可能的状态序列 I 求和,得到观测序列 O 的概率 P(O|λ) : P(O|λ)=∑IP(O|I,λ)P(I|λ)
- 但是这种方法计算量太大,是 O(TNT) 阶的,所以我们需要用前向或后向算法
前向计算法
- 定义前向概率:给定马尔可夫模型
λ
,定义到时刻 t 部分观测序列为
o1,o2,⋯,ot
且状态为
qi
的概率为前向概率,记作
αt(i)=P(o1,o2,⋯,ot,it=qi|λ)
可以递推地求得前向概率 αt(i) 及观测序列概率 P(O|λ) - 算法:
- 输入:隐马尔可夫模型 λ , 观测序列 O
- 输出:观测序列概率
P(O|λ) - (1) 初值:
α1(i)=πibi(o1),i=1,2,⋯,N
- (2) 递推:对
t=1,2,⋯,T−1
αt+1(i)=[∑j=1Nαt(j)aji]bi(ot+1),i=1,2,⋯,N
- (3) 终止
P(O|λ)=∑i=1NαT(i)
后向计算法
- 定义后向概率:给定隐马尔可夫模型
λ
,定义到时刻 t 状态为
qi
的条件下,从 t+1 到 T 的部分观测序列为
ot+1,ot+2,⋯,oT
的概率为后向概率,记作
βt(i)=P(ot+1,ot+2,⋯,oT|it=qi,λ)
可以递推地求得后向概率 βt(i) 及观测序列概率 P(O|λ) - 算法:
- 输入:隐马尔可夫模型 λ , 观测序列 O
- 输出:观测序列概率
P(O|λ) - (1)
βT(i)=1,i=1,2,⋯,N
- (2) 对
t=T−1,T−2,⋯,1
βt(i)=∑j=1Naijbj(ot+1)βt+1(j),i=1,2,⋯,N
- (3)
P(O|λ)=∑i=1Nπibi(o1)β1(i)