机器学习-隐马尔科夫模型
隐马尔科夫模型
1 基本概念
状态序列(state sequence):隐藏的马尔可夫随机链生成的状态序列,不可观测
观测序列(observation sequence):每个状态生成一个观测,由此产生观测的随机序列
隐马尔科夫模型的三要素:
- 状态转移概率矩阵:,为所有可能的状态数
- 观测概率矩阵:,为所有的观测的集合
- 初始状态概率向量:,其中,
隐马尔可夫模型的表示:
隐马尔科夫模型的两个基本假设:
- 齐次马尔可夫假设:
假设隐藏的马尔可夫链在任意时刻的状态
只依赖于其前一时刻的状态
与其他时刻的状态
及观测无关
也与时刻无关 - 观测独立性假设:
假设任意时刻的观测
只依赖于该时刻的马尔可夫链的状态
与其他观测
及状态无关
隐马尔科夫模型的三个基本问题:
- 概率计算问题:在模型下观测序列出现的概率
输入:模型,观测序列 输出: - 学习问题:已知观测序列,估计模型的参数,使观测序列概率最大,用极大似然法估计
输入:观测序列 输出:输出 - 预测问题,也称为解码问题(Decoding)
输入:模型,观测序列 输出:状态序列
标注问题,给定观测的序列预测对应的标记序列。状态对应着标记。
2 概率计算问题
2.1 直接计算法
列举所有的可能状态序列,长度为
计算:
计算量:阶的,故不可行
2.2 前向算法
前向概率:给定马尔可夫模型,定义到时刻部分观测序列为,且状态的概率
记作:
观测序列概率的前向算法:
输入:
输出:
- 初值:,式中观测值为,的含义是对应状态
- 递推:
式中,为时刻所处的状态,为时刻所处的状态,从中可以看出的含义
转移矩阵维度, 观测矩阵维度,具体的观测值可以表示成one-hot形式,维度
所以的维度: - 终止:
计算量:阶的,故可行
前向算法高效的关键:局部计算前向概率,然后利用路径结构将前向的概率“递推”到全局,得到,每一次计算直接引用前一时刻的计算结果,避免重复计算
2.3 后向算法
后向概率:给定马尔可夫模型,定义到时刻状态为的条件下,从到的部分观测序列为的概率
记作:
观测序列概率的后向算法:
输入: 输出:
- 终值:,在时刻, 观测序列已经确定
- 从后往前递推:
计算:到时刻状态为的条件下,从之后的观测序列为的后向概率,需要考虑三项: - :在时刻所有可能的个状态的转移概率
- :在此状态下的观测的观测概率
- :考虑状态之后的观测序列的后向概率
2.4 概率与期望
- 输入模型与观测,输出在时刻处于状态的概率:
- 输入模型与观测,输出在时刻处于状态且在时刻处于状态的概率:
- 在观测下状态出现的期望值:
- 在观测下状态转移的期望值:
- 在观测下状态转移到状态的期望值:
3 学习问题
3.1 监督学习算法
提供训练数据包括观测序列和对应的状态序列,利用极大似然估计法来估计隐马尔可夫模型的参数
人工标注训练数据成本很高
3.2 Baum-Welch算法
Baum-Welch算法是EM算法在隐马尔可夫模型学习中的具体实现,由Baum和Welch提出
马尔可夫模型实际上是一个含有隐变量的概率模型:
Baum-Welch算法:
输入: 观测数据
输出: 隐马尔可夫模型参数
- 初始化:对,选取,得到模型参数
- 递推:对,
3. 终止:得到模型参数
4 预测算法
4.1 近似算法
每个时刻最有可能的状态是:
得到序列,作为预测的结果
特点:计算简单,不能保证预测的状态序列整体是最有可能的状态序列,有可能存在转移概率为0的相邻状态
即对某些
4.2 维特比算法
维特比算法:使用动态规划解隐马尔科夫模型,求概率最大路径,这条路径对应一个状态序列
输入: 模型和观测
输出: 最优路径
- 初始化
- 递推
- 终止
- 最优路径回溯
未完,待续。
参考
- 李航-统计学习方法
- 李航-统计学习方法笔记:https://github.com/SmirkCao/Lihang