隐马尔可夫模型是可用于标注问题的统计学习模型。该模型在语音识别、自然语言处理、生物信息、模式识别等领域有着广泛的应用。
隐马尔可夫模型是关于时序的概率模型,描述由一个隐藏的马尔可夫链随机生成不可观测的状态随机序列,再由各个状态生成一个观测而产生观测随机序列的过程。
Q是所有可能的状态的集合,V是所有可能的观测的集合.
Q={q1,...,qN},V=={v1,...,vM}
其中,N是可能的状态数,M是可能的观测数
I是长度为T的状态序列,O是对应的观测序列.
I=(i1,...,iT),O=(o1,...,oT)
A是状态转移矩阵:
A=[aij]N×N
其中, aij=P(it+1=qj|it=qi),i=1,...,N;j=1,...,N
是在时刻t处于状态 qi 的条件下在时刻t+1转移到状态 qj 的概率
B是观测概率矩阵:
B=[bj(k)]N×M
其中,
bj(k)=P(ot=vk|it=qj),k=1,...,M;j=1,...,N
是在时刻t处于状态q_j的条件下生成观测 vk 的概率.
π是初始状态概率向量:
π=(πi)
其中,
πi=P(i1=qi),i=1,...,N
是时刻t=1处于状态 qi 的概率.
λ=(A,B,π)
A,B,π 称为隐马尔可夫模型的三要素
从定义可知,隐马尔可夫模型作了两个基本假设:
1)齐次马尔可夫性假设,即假设隐藏的马尔科夫链在任意时刻t的状态只依赖于其前一时刻的状态,与其他时刻的状态及观测无关,也与时刻t无关.
P(it|it−1,ot−1,...,i1,o1)=P(it|it−1),t=1,...,T
2)观测独立性假设,即假设任意时刻的观测只依赖于该时刻的马尔可夫链的状态,与其他观测及状态无关.
P(ot|iT,oT,...,i1,o1)=P(ot|it)
算法(观测序列的生成过程):
输入:隐马尔可夫模型 λ=(A,B,π),观测序列长度T;
输出:观测序列O
1)按照初始状态分布π产生状态 i1
2)令t=1
3)按照状态 i1 的观测概率分布 bit(k)生成ot
4)按照状态 it 的状态转移概率分布 {ait,it+1} 产生状态 it+1,it+1=1,...,N
5)令t=t+1;如果t
1)概率计算问题,给定模型 λ 和观测序列O,计算在模型 lambda 下观测序列O出现的概率 P(O|λ)
2)学习问题,已知观测雪猎,估计模型 λ 参数,使得观测序列概率 P(O|λ) 最大,即用极大似然估计的方法估计参数。
3)预测问题,也成解码问题,已知模型参数和观测序列,求对给定观测序列条件概率 P(O|λ) 最大的状态序列I.即给定观测序列,求最有可能的对应的状态序列。
介绍计算观测序列概率 P(O|λ) 的前向与后向算法。先引入概念上可行但计算上不可行的直接计算法。
隐马尔可夫模型的学习,根据训练数据包括观测序列和对应的状态序列,还是只有观测序列,可以分别由监督学习与非监督学习实现.
假设已知训练数据包含S个长度相同的观测序列和对应的状态序列,O与I,那么可以利用极大似然估计法来估计隐马尔可夫模型的参数.
1.转移慨率 aij 的估计
设样本时刻t处于状态i时刻t+1转移到状态j的频数为 Aij ,那么
aij^=AijsumNj=1Aij,i=1,..,N;j=1,...,N
2.观测概率 bj(k) 的估计
同理, bj^(k)=BjksumMj=1Bjk,j=1,..,N;k=1,...,M
3.初始状态 πi 的估计
πi^ 即为S个样本中初始状态为 qi 的频率
由于监督学习需要使用训练数据,而人工标注训练数据汪汪代价很高,有时就会利用非监督学习的方法。
也就是EM算法—非监督学习算法
(Baum-Welch)算法:
输入:观测数据O
输出:隐马尔可夫模型参数
1)初始化
对n=0,选取 a(0)ij,bj(k)(0),π(0)j,得到模型λ(0)=(A(0),B(0)),π(0)
2)递推.对n=1,2,…..,
a(n+1)ij=∑T−1t=1εt(i,j)∑T−1t=1γt(i)
bj(k)(n+1)=∑Tt=1,ot=vkγt(j)∑Tt=1γt(j)
π(n+1)i=γ1(i)
右端各值按观测O和模型参数计算.式中 γt(i)和εt(i,j)前面给出计算公式
3)终止,得到模型参数 λ(n+1)=(A(n+1),B(n+1),π(n+1))
近似算法的想法是,在每个时刻t选择在该时刻最有可能出现的状态 i∗t,从而的带一个状态序列I,将它作为预测的结果
给定隐马尔可夫模型和观测序列,在时刻t处于状态 qi的概率γt(i)是
γt(i)=αt(i)βt(i)P(O|λ)=αt(i)βt(i)∑Nj=1αt(i)βt(i)
在每一时刻t最有可能的状态 i∗t是
i∗t=argmaxi⩽i⩽N[γt(i)],t=1,...,T
从而得到状态序列
近似算法的有点计算简单,其缺点是不能保证的状态序列整体是最有可能的状态序列,因为预测的状态序列可能有实际不发生的部分.事实上,上述放大得到的状态序列有可能存在转移概率为0的相邻状态,即对某些i,j, aij=0 时.尽管如此,近似算法仍然是有用的
维特比算法实际是用动态规划解隐马尔可夫模型预测问题。即用动态规划求概率最大路径(最优路径),这条路径对应一个状态序列。
根据动态规划原理,最优路径具有这样的特性:如果最优路径在时刻t通过节点 i∗t ,那么这一路径从节点 i∗t 到终点 i∗T 的部分路径,对于从 i∗t 到 i∗T 所有可能的部分路径来说,必须是最优的(贪心算法),我们只需从初始节点开始不断递推
导入两个变量 δ和Ψ .
定义在时刻t状态为i的所有单个路径 i1,...,it 中概率最大值为
δt(i)=maxi1,...,itP(it=i,it−1,...,i1),ot,..,o1|λ) ,i=1,2,..,N