机器学习 | 隐马尔可夫模型
隐马尔可夫模型 (Hidden Markov Model): 一种统计模型,用来描述一个含有隐含未知参数的马尔可夫过程。
1 模型实例
首先用一个具体的实例来初步了解隐马尔可夫模型。
有
桶 | R 数量 | G 数量 | B 数量 |
---|---|---|---|
#1 | 3 | 3 | 3 |
#2 | 1 | 2 | 3 |
#3 | 3 | 5 | 2 |
第一步:选取初始桶
我们有一个初始概率分布,随机从
桶 1 | 桶 2 | 桶 3 |
---|---|---|
30% | 20% | 50% |
第二步:根据目前选取的桶,随机在其中抽取一个球
由于每个桶内球的数量不同,因此抽出球的颜色的概率不同。如果目前在
R | G | B |
---|---|---|
30% | 50% | 20% |
第三步:根据目前选取的桶,随机转移到另一个桶
我们有一个转移概率矩阵,根据矩阵进行桶的转移:
转移到 1 | 转移到 2 | 转移到 3 | |
---|---|---|---|
原来在 1 | 10% | 30% | 60% |
原来在 2 | 20% | 50% | 30% |
原来在 3 | 40% | 20% | 40% |
例如,如果目前在桶
第四步:回到第二步,循环重复这个过程。
以上,便是隐马尔可夫模型的一个具体实例。具体来说,便是:
- 状态空间
- 观测变量
- 初始状态概率
- 状态转移概率
- 输出观测概率
2 数学定义
隐马尔可夫模型有两个空间:
- 系统状态空间
- 观测变量空间
隐马尔可夫模型有两组变量:
- 状态变量(隐变量)
: 是系统在 时刻的状态 - 观测变量
。: 是系统在 时刻的观测值
隐马尔可夫模型有两个假设:
- 齐次性假设:
时刻状态 仅依赖于 时刻的状态 . - 观测独立性假设:观测变量的取值仅依赖于状态变量,与其他状态变量与观测变量无关,即
仅由 确定。
除了上述结构,隐马尔可夫模型还包含三个参数,含义不再解释:
- 初始状态概率
: - 状态转移概率
: - 输出观测概率
:
综上,一个隐马尔可夫模型可以由一个三元组表示:
它按以下过程产生观测序列
- 设置
,根据初始状态概率 选择初始状态 - 根据状态
和输出观测概率 产生观测变量 - 根据状态
和状态转移概率 转移模型状态到 - 若
则令 并跳到第 步,否则停止
可视化如下:
3 基本问题
我们通常关注隐马尔可夫模型的三个基本问题:
- 评估匹配程度:给定模型
,如何计算观测序列 的概率 . - 推断隐藏状态:给定模型
和观测序列 ,计算最匹配的隐藏状态 . - 训练模型参数:给定观测序列
,训练模型参数 使得 最大。
回到第一节模型实例的具体例子,这三个问题便是:
- 我们知道每个桶内球的具体数量,桶的转移概率,初始桶的概率,要求:产生某种观测序列的概率。
- 我们知道每个桶内球的具体数量,桶的转移概率,初始桶的概率,要求:某种观测序列对应的隐藏状态序列。
- 我们知道一个观测序列,要求:每个桶内球的具体数量,桶的转移概率,初始桶的概率。
4 概率计算(问题一)
4.1 基本方法
首先,对于给定隐藏状态
对于给定隐藏状态
然后求边缘概率,即可得到结果:
接下来分析一下计算复杂度,对于长
因此计算复杂度为:
4.2 前向算法
前向算法就是一种动态规划算法,通过动态规划算法,我们不再关心每一种状态序列具体的概率,而是关注每一步的概率。这样相当于将许多情况合并到一起,大幅减少了计算复杂度。
给定隐马尔可夫模型
状态转移方式:
对于每一步,我们需要计算
当然,动态规划的初始值也非常重要。在本问题中初始值为
当我们递推到序列结尾
接下来分析一下计算复杂度,每次递推需要计算
例题:
求观察序列
答案:
A | B | A | B |
---|---|---|---|
4.3 后向算法
后向算法实际上就是前向算法反着来求,前后向算法实际上是等价的。
给定隐马尔可夫模型
- 初始化:
- 状态转移:
- 结果:
5 状态预测(问题二)
5.1 近似算法
近似算法就是朴素的贪心算法,即在每个时刻
给定模型
那么,对于每一时刻选取最有可能出现的状态:
即可得到预测的状态序列:
容易发现,因为该算法完全忽略了相邻状态的限制,该算法求到的序列有可能是实际中不可能存在的非法序列。
即可能会发生,对于相邻状态
5.2 维特比 (Viterbi) 算法
维特比算法是一种动态规划算法,它的核心思路是:如果最优路径在时刻
定义在时刻
那么,变量
另外再记在时刻
通俗来说
那么接下来,维特比算法的步骤为:
- 初始化:
. - 递推:根据上文转移公式,通过
计算出 和 . - 结果:
- 反向回溯:
例题:
HMM 模型参数和上一个例题一致,区别是本题求的是最可能的状态序列
答案:
A | B | A | B |
---|---|---|---|
6 参数学习(问题三)
6.1 极大似然估计(有监督)
如果我们同时拥有观测序列和其对应的状态序列,那么就可以用监督学习的方法进行参数学习。
假设训练数据包含
估计
设训练数据中,从状态
估计
设训练数据中,状态为
估计
设
6.2 Baum-Welch 算法(无监督)
如果我们只拥有观测序列,那么就只能用无监督的方式学习。
本方法基于 EM 算法:https://io.zouht.com/113.html 具体推导省略
本文采用 CC BY-SA 4.0 许可,本文 Markdown 源码:Haotian-BiJi