HMM定义
1、马尔可夫链
马尔可夫链是满足马尔可夫性质的随机过程。马尔可夫性质是无记忆性,也就是说,这一时刻的状态,受且只受前一时刻的影响,而不受更往前时刻的状态的影响。我们下面说的隐藏状态序列就马尔可夫链。
2、隐马尔可夫模型
隐马尔科夫模型(HMM, Hidden Markov Model)可用标注问题,在语音识别、NLP、生物信息、模式识别等领域被实践证明是有效的算法。
HMM是关于时序的概率模型,描述由一个隐藏的马尔科夫链生成不可观测的状态随机序列,再由各个状态生成观测随机序列的过程。
隐马尔科夫模型随机生成的状态随机序列,称为状态序列。每个状态生成一个观测,由此产生的观测随机序列,称为观测序列。
隐马尔科夫模型有初始概率分布、状态转移概率分布以及观测概率分布确定,其形式化定义如下:
设是所有可能状态集合,是所有可能的观测的集合
其中是可能的状态数,是可能的观测数。
是长度为的状态序列,是对应的观测序列
A是状态转移矩阵
其中
表示的是时刻处于的条件下在时刻状态转移到的概率。
B是观测概率矩阵
其中
是在时刻t处于状态的条件下生成观测的概率。
是初始状态概率向量
其中
所以隐马尔科夫模型可以用三元符号表示,即
隐马尔科夫模型的两个性质
1、齐次马尔科夫性假设
即设隐藏的马尔科夫链在任意时刻的状态只依赖于前一时刻的状态,与其他时刻的状态以及观测无关。
2、观测独立性假设
即假设任意时刻的观测只依赖该时刻的马尔科夫链的状态,与其他观测和状态无关。
HMM的三个基本问题
1、概率计算问题
给定模型和观测序列计算在模型下观测序列为的概率。
2、学习问题
已知观测序列,估计模型的参数,使得在该模型下观测序列概率最大。
3、预测问题
也成为解码问题。已知模型和观测序列,求对给定的观测序列概率P的最大值。即给定观测序列,求最有可能的对应状态序列。
概率计算问题
直接计算法
按照概率公式,列举所有可能的长度为的状态序列求各个状态序列与观测序列的联合概率,然后对所有可能的状态序列求和,从而得到。
状态序列的概率是:
对固定的状态序列,观测序列的概率是:
和同时出现的联合概率是:
对所有可能的状态序列求和,得到观测序列的概率:
最终式:
前向算法
给定,定义到时刻部分观测序列为且状态为的概率称为前向概率,记做:
可以递推计算前向概率及观测序列概率。
初值:
递推:
最终:
后向算法
给定,定义到时刻状态为的前提下,从到的部分观测序列为的概率为后向概率,记做:
可以递推计算后向概率及观测序列概率。
初值:
递推:
最终:
说明:
为了计算在时刻状态为条件下时刻之后的观测序列为的后向概率,只需要考虑在时刻所有可能的个状态的转移概率,以及在此状态下的观测的观测概率 ,然后考虑状态之后的观测序列的后向概率。
Baum-Welch算法
若训练数据只有观测序列,则HMM的学习需要使用EM算法,是非监督学习。
EM算法整体框架:
所有观测数据写成,所有隐数据写成,完全数据是完全数据的对数似然函数是。
假设是HMM参数的当前估计值,入为待求的参数。
EM过程
根据:
函数可写成:
极大化
极大化,求得参数,由于该三个参数分别位于三个项中,可分别极大化:
注意满足加和为1,利用拉格朗日乘子法得到:
初始状态概率
对上式相对于求偏导得到:
对求和得到:
从而得到初始状态概率:
转移概率和观测概率
第二项可写成:
仍然使用拉格朗日乘子法,得到:
同理,得到:
预测算法
近似算法
在每个时刻选择在该时刻最有可能出现的状态,从而得到一个状态序列,将它作为预测的结果。
给定模型和观测序列,时刻处于状态的概为:
Viterbi算法
Viterbi算法实际是用动态规划解HMM预测问题,用DP求概率最大的路径(最优路径),这是一条路径对应一个状态序列。
定义变量:在时刻状态为的所有路径中,概率的最大值。
定义:
递推:
终止: