很高兴和你相遇
这里正在记录我的所思所学
订阅免费邮件通讯接收最新内容
首页 归档 想法 通讯 播客 工具 简历 关于

马尔科夫模型

马尔科夫是谁

马尔科夫是一位俄国的数学家,他最为人所知的是他在随机过程方面的研究。他早期研究的重点是数论而在 1900 年之后他所研究的重点转向了概率论。他研究的成果颇丰以至于在他 1905 年正式退休之后他仍然在教授课程直至去世。

在他的研究中,马尔科夫成功地拓展了大数定理以及中心极限定理,并将其应用于由独立随机变量组成的特定序列中,如今这也被称为马尔可夫链。

马尔可夫链被广泛的运用于物理学,经济学,统计学,生物学等方面。两个最著名的应用是布朗运动以及随机漫步。

什么是马尔科夫性质

一类随机过程:在给定当前状态的条件下,将来的状态独立于过去的状态。

假定我们用一枚正反面概率一样的硬币玩一个简单的抛硬币的游戏。抛去质疑,假设马尔科夫性质不是已知的,并且我们希望去预测在十次抛掷以后,第 11 次正面朝上的概率。在条件依赖的假设之下(硬币对于过去的状态有记忆特性并且未来的状态也依赖于过去状态的序列), 我们必须记录导致第 11 次结果的前十次结果的特定序列,并计算它们的联合概率。这个序列的联合概率就是0.510=0.00097656250.5^10 = 0.0009765625。在条件依赖下,第十一次抛掷正面朝上的概率就是0.00097656250.5=0.000488281250.0009765625 * 0.5 = 0.00048828125

这真的是第十一次抛掷正面朝上的概率吗?当然不是!

我们知道硬币抛掷这一事件并不依赖于先前抛掷的结果。这枚硬币并没有记忆特性。这个连续抛掷的过程并没有编码先前的结果。每个抛掷都是独立事件并且是正反面概率一致的,又叫做与过去状态的条件独立。这就是马尔科夫性质。

什么是马尔科夫模型?

马尔科夫链(模型)描述了一类随机过程,假定未来状态的概率仅仅依赖于当前状态,不依赖于先前的状态。

让我们以一个简单的例子开始。假设你的小狗处于三类状态之一,在给定当前状态的条件下,你想要模拟出未来状态的可能性。为此我们需要去指定状态空间,初始概率和转移概率。

想象一下你有一只非常懒的胖狗,所以我们定义了状态空间为:睡觉,吃饭,赖皮。我们设置对应的初始概率为 35%, 35%, 和 30% 。

下一步就是定义转移概率。在给定当前状态的条件下,他们就是保持相同状态的概率或者转移到不同状态的概率。

画图表示

如果你想从任意节点开始沿着某一条边,他会告诉你这条小狗从一个状态转化为另一个状态的概率。举个例子来说吧,如果这条狗正在睡觉,我们能够发现有 40%几率这条狗会继续睡觉,40%的几率狗会醒来并且耍赖皮,还有 20%的概率狗会醒过来吃饭。

定义

A Markov chain describes a discrete stochastic process at successive times. The transitionsfrom one state to any of all states, includingitself, are governed by a probabilitydistribution

  • 一组离散状态之间在不同时刻的转移关系
  • 转移关系可以由概率分布描述即可
  • 唯一的要求是 t 时刻状态的概率分布由此前有限个 m 状态决定,m 阶马尔科夫
  • 如果最简单,则是一阶,仅与前一个状态相关

齐次马尔科夫链

比对过程有三个状态,每个状态转移有一个概率,得到转移概率矩阵

可以根据乘法定理计算比对的概率值

通过引入马尔科夫链给出了比对的概率解释

隐马尔可夫

HMM 是一种用参数表示的用于描述随机过程统计特性的概率模型,是一个双重随机过程,由两个部分组成

  • 马尔可夫链:用来描述状态的转移,用转移概率描述
  • 一般随机过程:用来描述状态的转移,用转移概率描述

描述一个我们看不到系统状态,只能看到观测(但观测和状态之间有确定性的概率关系)的状态

如何理解隐马尔可夫模型

假设我们有三中筛子,6 面体,4 面体和 8 面体

初始状态概率( the initial state probabilities):假设我们开始掷骰子,我们先从三个骰子里挑一个,挑到每一个骰子的概率都是 1/3,就是所谓的初始状态概率

可见状态链:我们掷骰子,得到一个数字, 是 1,2, 3, 4, 5, 6, 7, 8 中的一个。不停的重复上述过程,我们会得到一串数字,每个数字都是 1, 2, 3, 4, 5, 6, 7, 8 中的一个。例如我们可能得到这么一串数字(掷骰子 10 次):1 6 3 5 2 7 3 5 2 4

隐含状态链:在隐马尔可夫模型中,我们不仅仅有这么一串可见状态链,还有一串隐含状态链。在这个例子里,这串隐含状态链就是你用的骰子的序列。比如,隐含状态链有可能是: D6 D8 D8 D6 D4 D8 D6 D6 D4 D8

转换概率(transition probability):在这个例子里, D6 的下一个状态是 D4, D6,D8 的概率都是 1/3。 D4, D8 的下一个状态是 D4, D6, D8 的转换概率也都一样是 1/3。这样设定是为了最开始容易说清楚,但是我们其实是可以随意设定转换概率的。比如,我们可以这样定义, D6 后面不能接 D4, D6 后面是 D6 的概率是 0.9,是 D8 的概率是 0.1。

输出概率( emission probability):尽管可见状态之间没有转换概率,但是隐含状态和可见状态之间有一个概率叫做输出概率( emission probability)。就例子来说,六面骰( D6)产生 1 的输出概率是 1/6。产生 2, 3, 4, 5, 6 的概率也都是 1/6。我们同样可以对输出概率进行其他定义。比如,我有一个被赌场动过手脚的六面骰子,掷出来是 1 的概率更大,是 1/2,掷出来是 2, 3, 4,5, 6 的概率是 1/10。

下图表示可见状态链和隐含状态连以及输出概率

形式化定义

模型三要素

模型难点

  • 如果提前知道所有隐含状态之间的转换概率和所有隐含状态到所有可见状态之间的输出概率,做模拟是相当容易的。但是应用 HMM 模型时往往是缺失了一部分信息的

  • 如上面那个故事中,有时候你知道骰子有几种,每种骰子是什么,但是不知道掷出来的骰子序列

  • 有时候你只是看到了很多次掷骰子的结果,剩下的什么都不知道

  • 如何应用算法去估计这些缺失的信息,就成了一个很重要的问题

解决的三个问题

评估问题 evaluation

  • 怀疑自己的六面骰被赌场动过手脚了,有可能被换成另一种六面骰,这种六面骰掷出来是 1 的概率更大,是 1/2,掷出来是 2, 3, 4, 5, 6 的概率是 1/10。你怎么办?

  • 算一算正常的三个骰子掷出一段序列的概率,再算一算不正常的六面骰和另外两个正常骰子掷出这段序列的概率

  • 前向算法

  • 后向算法

解码问题 decoding

  • 知道我有三个骰子, 分别是六面骰、四面骰、 八面骰。我也知道掷十次的结果( 1 6 3 5 2 7 3 5 2 4),我不知道每次用了哪种骰子,我想知道最有可能的骰子序列

  • Viterbi 算法(一种动态规划算法)

学习问题 learning

  • 对于 HMM 的参数选择和优化问题, 目前使用较广的处理方法是 Baum-Welch 算法(也就是 EM 算法)。

  • 该算法是一种迭代算法,初始时刻由用户给出各参数的经验估计值,通过不断迭代,使各个参数逐渐趋向更为合理的较优值

总结


本文作者:思考问题的熊

版权声明:本博客所有文章除特别声明外,均采用 知识共享署名-非商业性使用-禁止演绎 4.0 国际许可协议 (CC BY-NC-ND 4.0) 进行许可。

如果你对这篇文章感兴趣,欢迎通过邮箱或者微信订阅我的 「熊言熊语」会员通讯,我将第一时间与你分享肿瘤生物医药领域最新行业研究进展和我的所思所学所想点此链接即可进行免费订阅。


· 分享链接 https://kaopubear.top/blog/2017-08-16-longxing-bioinfo-markov/