隐马尔科夫模型是关于时序的概率模型,通过隐藏状态→隐藏状态-观测的转移→观测,是生成模型
1. 两个基本假设
(1) 齐次马尔可夫性假设
假设任意时刻的状态只依赖于前一时刻的状态,与其他时刻的状
态无关,与时刻t无关
(2) 观测独立性假设
假设任意时刻的观测只依赖于该时刻的状态
2. 三组参数
初始状态概率矩阵π
状态转移概率矩阵A
输出观测概率矩阵B
3. 三个基本问题:
(1) 概率计算问题
给定模型λ=[π,A,B],如何计算P(x|λ),即如何计算 观测序列出现的概率?
解决:前向-后向算法
(2) 学习问题
给定观测序列x,如何使P(x|λ)最大,即如何调参 使得训练出的模型最好?
解决:EM算法(无监督)
(3) 预测问题
给定模型λ=[π,A,B]与观测序列x,如何求隐藏状态 y,即如何根据观测序列推测隐藏状态?
解决:维特比算法
4. 三类算法核心思路
(1) Forward/Backward算法
a.【观测概率的前向算法】
b.【观测概率的后向算法】
输入:隐马尔可夫模型λ,观测序列O;
输出:观测序列概率P(O|λ)
c.利用前向概率与后向概率的定义,观测序列概率P(O|λ)可写为
(2) Baum-Welch算法
参数学习由EM算法实现
1.确定完全数据的对数似然函数logP(O,I|λ)
2.EM算法的E步:求Q函数
其中T为序列长度
3.EM算法的M步:极大化Q函数,求模型参数A,B,π
要极大化的三个参数分别出现在Q函数三个单独的项中,也方便求导,对每项拆出来,考虑三个约束:
分别写拉格朗日函数,分别对对应参数A,B,π求偏导,使偏导为0求对应参数(即极大化后的参数)
(3) 维特比算法
维特比算法实际是用动态规划求最优路径(最大概率路径),一条路径对应一个状态序列
【维特比算法】
输入: 模型λ=(A,B,π)和观测序列O=(o1,o2,…,oT);
输出: 最优路径I*=(i1*,i2*,…,iT*)
思路: 求前一个状态j求argmax[π→Aji→B转化],记录最大概率的状态转化路径
步骤: 初始化→递推→终止→回溯最优路径