隐马尔科夫模型:可用于标注问题,在语音识别、NLP、生物信息、模式识别等领域被实践证明是有效的算法。
HMM是关于时序的概率模型,描述由一个隐藏的马尔科夫链生成不可观测的状态随机序列,再由各个状态生成观测随机序列的过程。(生成模型)
隐马尔科夫模型随机生成的状态随机序列,称为状态序列;每个状态生成一个观测,由此产生的观测随机序列,称为观测序列。
是主题,我们需要通过词来确定的对象。
是词,我们所观察的对象。
在不可观察的前提下,独立。如下图,将右侧部分看作一个整体,作为X’。因此就可以当作贝叶斯网络。当不可观察时,相互独立。
HMM由初始概率分布、状态转移概率分布A以及观测概率分布B确定。
Q是所有可能的状态的集合;N是可能的状态数
V是所有可能的观测的集合;M是可能的观测数
参数分析:
,
其中是在时刻t处于状态的条件下时刻t+1转移到状态的概率。
ps: 隐状态必须是离散的。
可观测序列,值是连续或者离散的都可以。
n——隐状态的个数 m——可观测的个数
是在时刻t处于状态的条件下生成观测的概率。
是时刻t=1处于状态的概率。
(1)齐次假设:
(2)观测独立性假设:
问题:求解最终得到{红、白、红}的概率?
设置各个参数如下:
状态集合:Q={盒子1,盒子2,盒子3}
观测集合:V={红,白}
状态序列和观测序列的长度为:T=3+2=5
初始概率分布:
状态转移概率分布:
观测概率分布:
求解:见1.6
给定模型和观测序列,计算模型下观测序列O出现的概率。
已知观测序列,估计模型的参数,使得在该模型下观测序列最大。
解码问题:已知模型和观测序列,求给定观测序列条件概率最大的状态序列。
按照概率公式,列举所有可能的长度为T的状态序列,\,求各个状态序列I和观测序列的联合概率,然后对所有可能的状态序列求和,从而得到。
前向算法的定义:给定,定义到时刻t部分观测序列为,且状态为的概率称为前向概率,记作:
计算观测序列概率:
(1)初值:
(2)递推:对于,
(3)最终:
时间复杂度是
1.4实例可以通过前向算法求解:
(1)计算初值
(2)递推
同理:
(3)最终
给定,定义到时刻t状态为qi的前提下,从t+1到T的部分观测时序为的概率为后向概率,记作:
计算观测序列概率:
(1) 初值
(2)递推,对于t=T-1,T-2,...,1,
(4)最终:
求给定模型和观测,在时刻t处于状态qi的概率:
记作:
的意义为:在每个时刻t选择在该时刻最有可能出现的状态,从而得到一个状态序列
将它作为预测的结果。
例如:对于一句话“今天我吃了一个火龙果”,划分词是可能出现的状态有(begin,mid,end,single)
若这么划分词:今天|我|吃|了|一个|火龙果。
则:
begin:“今”,“一”、“火”
mid:“龙”
end:“天”、“个”
single:“我”、“吃”、“了”
期望:在观测O下状态i出现的期望:
求给定模型和观测,在时刻t处于状态qi的概率并且时刻t+1处于状态qi的概率:
其中:
期望:在观测O下状态i转移到状态j的期望:
若训练数据包括观测序列和状态序列,则HMM的学习非常简单,是监督学习;
若训练数据只有观测序列,则HMM的学习需要使用EM算法,是非监督学习。
(1)监督学习
假设已经给定训练数据包括S个长度相同的观测序列和对应的状态序列,那么可以直接利用Bernoulli大数定理的结论“频率的极限是概率”,给定HMM的参数估计。
初始概率
转移概率
观测概率
(2)非监督学习
Baum-Welch算法:
所有观测数据为,所有隐数据为,完全数据是,完全数据的对数似然函数为。
假设是HMM参数的当前估计值,为待求的参数。
EM过程:
因为
所以
拉格朗日乘子法:
,其中
先对求偏导:
∴
∴
∴初始状态概率为
转移概率和观测概率:
Viterbi算法实际是用动态规划解HMM预测问题,用DP求概率最大的路径(最优路径),这是一条路径对应一个状态序列。
定义变量:在时刻t状态为i的所有路径中,概率的最大值。
递推:
终止: