包罗万有数学教育公众理解科学

隐性马尔科夫模型简介,只聊原理, (保证没有数学)

2020-01-05  本文已影响0人  科学俱乐会

HMM 隐性马尔科夫模型

隐马尔科夫模型(Hidden Markov Model,HMM)通常用于处理时间序列数据,即样本之间有时间序列关系的数据。学生的作答信息是天然的、有时间属性的序列,非常适合用HMM进行建模。其他的场景还有股票时长,天气,等等

马尔科夫模型

为了更好地理解HMM,我们可以先从"一阶马尔科夫模型"说起 [1] 一阶马尔科夫模型的基本思想是,一系列事件会相继发生,后一个事件发生的概率仅仅取决于前一个事件的状态。这一系列事件就像串起来的珠子。下图表示一个简单的马尔科夫模型,x1 是第一个事件,第二个事件x2 是否发生,以及如何发生,都依赖于x1。依次类推,x3的情况仅仅依赖于x2,x4的情况仅仅依赖于x3 ... ...

马尔科夫模型

高阶马尔科夫模型

然而很多实际问题的依赖关系往往没有这么简单,x4的情况可能不仅依赖于x3,还与x2有关。为了表达当前状态与更早的状态之间的关系(例如 x4 和 x2),可以引入高阶马尔科夫。概括来说,M阶马尔科夫性是指当前状态取决于之相邻的前M个状态,但是与更早的状态无关。高阶马尔科夫性虽然达到了关联当前状态与更早的状态的目的,但是因为模型参数呈指数性爆炸,计算复杂度大大增加。

隐性马尔科夫模型

那么,有没有一种方法即能将当前状态与更早的状态关联起来,又不需要那么多参数呢?当然,这里有一种非常强大的手段,即引入隐变量。这里如果假设隐变量构成一阶马尔科夫模型 (z1, z2, z3, z4, ... ),而在每一个时间点上我们所观测到的情况仅仅和当前的隐变量有关 (x1 和 z1 相关,x2 和 z2 相关 .... )。这个就是HMM模型。这里隐变量 (z)就是我们无法观测的,比如学生对知识点的掌握情况: 不会,不熟练 等等。 而可见变量(x)就是我们从学生作答中看到的,比如 作答正确,选择错误选项B,选择错误答案C,等等。

隐马尔科夫模型

HMM模型有三个非常重要的参数:初始概率分布(start probability)、转移概率模型(transition matrix)和发射概率矩阵(emission matrix)。对状态空间模型建模实际就是对这三者进行建模。而且此时观测变量(x)之间不再具有任何马尔科夫性。

parameter introduction
初始概率分布 表示隐藏状态Z1 的概率分布
转移概率模型 隐藏状态之间的转换概率。 eg: z1 --> z2, z2 --> z3
发射概率矩阵 表示在隐藏状态下,观测到某一情况的概率。 eg: z1 --> x1, z2--> x2

案例分析

我有两个色子,一个是正常的包含1,2,3,4,5,6 这六个个点 (A),一个是特殊的,有1,2,3,4,四个点(B),下图展示了各种色子:

市面上各种各样的色子
parameter introduction illustration
初始概率分布 表示隐藏状态Z1 的概率分布 初始选择 A还是B的概率 P_A P_B
转移概率模型 隐藏状态之间的转换概率。 eg: z1 --> z2, z2 --> z3 下一次选择哪个色子的概率
发射概率矩阵 表示在隐藏状态下,观测到某一情况的概率。 eg: z1 --> x1, z2--> x2 A,B 色子 体现出点数的概率

一个完整的可用的HMM模型就是需要知道上边的三个参数比如: 
初始概率分布: 初始选择A色子的概率是 0.45 ,那么选择B色子的概率是0.55 即 P_A = 0.45 , P_B = 0.55 需要满足 P_A + P_B = 1
转移概率: 如果前一个是A色子,那么接下来 40%的概率还是A 60% 的概率是B, 如果前一个是B色子,50% 的概率是A,50% 的概率是B,这个是一个矩阵 \begin{pmatrix} P_{A2A} & P_{A2B} \\ P_{B2A} & P_{B2B} \end{pmatrix}
结合上边的数字就是:
\begin{pmatrix}0.4 & 0.6\\\ 0.5 & 0.5\end{pmatrix}

发射概率矩阵: 也是一个矩阵,表示从色子的类别,到观察到的点数的概率,针对我们这个情况,他的形式如下
\begin{pmatrix} P_{A1} & P_{A2}& P_{A3}& P_{A4}& P_{A5}& P_{A6} \\ P_{B1} & P_{B2}& P_{B3}& P_{B4}& P_{B5}& P_{B6}\end{pmatrix}
因为色子是均匀的,我们可以得到
\begin{pmatrix} 1/6 & 1/6 & 1/6 & 1/6 & 1/6 & 1/6 \\ 1/4 & 1/4 & 1/4 & 1/4 & 0 & 0 \end{pmatrix}

那么模型的完整工作流程是下边这样的:

隐性马尔科夫模型

关于HMM有两个主要问题:

已知上述三个参数,和当前观测序列,求解隐藏状态的变化
所有参数未知,只有数据,如何获得三个参数
python 提供了hmmlearn包,可以非常方便的实现以上两个问题,我们会在下一个文章中介绍如何实现
上述案例的实现,具体看这个文章
https://www.jianshu.com/p/deb71e926ccc

[1] . farewell (2018.4.22), 隐马尔科夫模型, 知乎 [blog post]. Retrieved from https://zhuanlan.zhihu.com/p/27907806

上一篇下一篇

猜你喜欢

热点阅读