HMM简介
AI摘要: 本文介绍了隐马尔可夫模型(HMM)的基本原理、前提假设以及三个核心问题:评估问题、预测问题和学习问题的解决方法。详细阐述了HMM的联合概率函数建模,包括初始状态概率分布π、状态转移概率矩阵A和发射概率矩阵B。针对评估问题,提到了前向算法;对于预测问题,讨论了贪心算法和维特比算法;在学习问题上,区分了有监督学习和无监督学习场景,并指出无监督学习中常用EM算法来估计模型参数。
HMM的前提假设
+------+ +------+ +------+ +------+
Start-> | S₁ | --> | S₂ | --> | S₃ | --> | Sₙ |
+------+ +------+ +------+ +------+
| | | |
v v v v
+------+ +------+ +------+ +------+
| O₁ | | O₂ | | O₃ | | Oₙ |
+------+ +------+ +------+ +------+
- 马尔科夫性:t时刻状态,只和t-1时刻状态有关,和更前的无关
- 观测独立性:t时刻观测值只依赖该时刻的状态,和其他任何时刻的观测值以及状态无关
HMM中拿到数据集之后,我们建模他们的联合概率函数:
因此,联合概率只依赖:
- : 初始状态概率分布,不妨记作
- :状态转移概率矩阵,不妨记作
- :给定状态时候,观测值的概率分布,也叫做发射概率,不妨记作
HMM的所有计算和预测,都围绕如何从数据集中计算得到
- 评估问题:已知 和观测序列, 需要计算这个观测序列的出现概率, 一般解法为前向算法或者后向算法
- 预测问题:已知 和观测序列, 预测最有可能的状态序列,一般用贪心算法或者维特比算法
- 学习问题:模型参数 未知,需要学习推断,分为两种场景:
- 已知诸多观测序列和状态序列的监督学习,直接根据数据集统计出矩阵和矩阵
- 只知道观测序列,不知道背后状态情况的无监督学习,这个常常采用EM算法
关于评估问题:
由于状态序列的可能性是指数级增长的, 如果状态有种可能,那么状态序列有种可能,不可能穷尽, 于是改成采用动态规划的前向算法,具体算法过程没看。
关于预测问题
希望找到一个状态序列, 使得概率最大,那么贪心的解法就是令每个状态的出现概率最大,即每次选择概率最大的状态。
维特比算法没看。
关于学习问题
有监督场景
既然已经知道每个观测背后的状态是什么,那状态转移矩阵和发射矩阵很好直接统计出来:
- 将状态序列划分为二元组,就能直接得到一个状态到另外一个状态的频率,最后归一化为概率
- 直接统计一个状态到某种观测的次数,就能得到发射频率,最后归一化为发射概率
无监督场景
只能看到观测序列,不知道背后的状态是什么,反正就是学习出模型参数 , 使得最大 。
那就采用EM算法,但是这个HMM中用的的EM算法的E步骤有点奇怪,暂时解决不了