马尔可夫链

前言

马尔可夫链(Markov Chain)可以说是机器学习和人工智能的基石,在强化学习、自然语言处理、金融领域、天气预测、语音识别方面都有着极其广泛的应用

The future is independent of the past given the present
未来独立于过去,只基于当下。

这句人生哲理的话也代表了马尔科夫链的思想:过去所有的信息都已经被保存到了现在的状态,基于现在就可以预测未来。

虽然这么说可能有些极端,但是却可以大大简化模型的复杂度,因此马尔可夫链在很多时间序列模型中得到广泛的应用,比如循环神经网络 RNN,隐式马尔可夫模型 HMM 等,当然 MCMC 也需要它。

随机过程

马尔可夫链是随机过程 这门课程中的一部分,先来简单了解一下。

简单来说,随机过程就是使用统计模型一些事物的过程进行预测和处理 ,比如股价预测通过今天股票的涨跌,却预测明天后天股票的涨跌;天气预报通过今天是否下雨,预测明天后天是否下雨。这些过程都是可以通过数学公式进行量化计算的。通过下雨、股票涨跌的概率,用公式就可以推导出来 N 天后的状况。

马尔科夫链

简介

俄国数学家 Andrey Andreyevich Markov 研究并提出一个用数学方法就能解释自然变化的一般规律模型,被命名为马尔科夫链(Markov Chain)。马尔科夫链为状态空间中经过从一个状态到另一个状态的转换的随机过程,该过程要求具备“无记忆性 ”,即下一状态的概率分布只能由当前状态决定,在时间序列中它前面的事件均与之无关。这种特定类型的“无记忆性 ”称作马尔可夫性质。

马尔科夫链认为过去所有的信息都被保存在了现在的状态下了 。比如这样一串数列 1 - 2 - 3 - 4 - 5 - 6,在马尔科夫链看来,6 的状态只与 5 有关,与前面的其它过程无关。

数学定义

则假设我们的序列状态是....Xt−2,Xt−1,Xt,Xt+1.......X_{t-2},X_{t-1},X_{t},X_{t+1}.......Xt−2​,Xt−1​,Xt​,Xt+1​...,那么在Xt+1X_{t+1}Xt+1​时刻的状态的条件概率仅依赖于前一刻的状态XtX_{t}Xt​,即:

P(Xt+1∣…Xt−2,Xt−1,Xt)=P(Xt+1∣Xt)P\left(X_{t+1} \mid \ldots X_{t-2}, X_{t-1}, X_{t}\right)=P\left(X_{t+1} \mid X_{t}\right) P(Xt+1​∣…Xt−2​,Xt−1​,Xt​)=P(Xt+1​∣Xt​)

既然某一时刻状态转移的概率只依赖于它的前一个状态 ,那么我们只要能求出系统中任意两个状态之间的转换概率,这个马尔科夫链的模型就定了。

转移概率矩阵

通过马尔科夫链的模型转换,我们可以将事件的状态转换成概率矩阵 (又称状态分布矩阵 ),如下例:

上图中有 A 和 B 两个状态,A 到 A 的概率是 0.3,A 到 B 的概率是 0.7;B 到 B 的概率是 0.1,B 到 A 的概率是 0.9。

  • 初始状态在 A,如果我们求 2 次运动后状态还在 A 的概率是多少?非常简单:
    P=A→A→A+A→B→A=0.3∗0.3+0.7∗0.9=0.72P = A→A→A + A→B→A = 0.3 * 0.3 + 0.7 * 0.9 = 0.72P=A→A→A+A→B→A=0.3∗0.3+0.7∗0.9=0.72
  • 如果求 2 次运动后的状态概率分别是多少?初始状态和终止状态未知时怎么办呢?这是就要引入转移概率矩阵 ,可以非常直观的描述所有的概率。

    有了状态矩阵,我们可以轻松得出以下结论:

    • 初始状态 A,2 次运动后状态为 A 的概率是 0.72;
    • 初始状态 A,2 次运动后状态为 B 的概率是 0.28;
    • 初始状态 B,2 次运动后状态为 A 的概率是 0.36;
    • 初始状态 B,2 次运动后状态为 B 的概率是 0.64;
  • 有了概率矩阵,即便求运动 n 次后的各种概率,也能非常方便求出。

来看一个多个状态更复杂的情况:

状态转移矩阵的稳定性

状态转移矩阵有一个非常重要的特性,经过一定有限次数序列的转换,最终一定可以得到一个稳定的概率分布 ,且与初始状态概率分布无关。例如:

假设我们当前股市的概率分布为: [0.3,0.4,0.3][0.3, 0.4, 0.3][0.3,0.4,0.3] ,即 30% 概率的牛市,40% 概率的熊盘与 30% 的横盘。然后这个状态作为序列概率分布的初始状态 t0t_0t0​,将其带入这个状态转移矩阵计算 t1,t2,t3,...t_1,t_2,t_3,...t1​,t2​,t3​,... 的状态。代码如下:

matrix = np.matrix([[0.9, 0.075, 0.025],[0.15, 0.8, 0.05],[0.25, 0.25, 0.5]], dtype=float)
vector1 = np.matrix([[0.3, 0.4, 0.3]], dtype=float)for i in range(100):vector1 = vector1 * matrixprint('Courrent round: {}'.format(i+1))print(vector1)

输出结果:

Current round: 1
[[ 0.405   0.4175  0.1775]]
Current round: 2
[[ 0.4715   0.40875  0.11975]]
Current round: 3
[[ 0.5156  0.3923  0.0921]]
Current round: 4
[[ 0.54591   0.375535  0.078555]]
。。。。。。
Current round: 58
[[ 0.62499999  0.31250001  0.0625    ]]
Current round: 59
[[ 0.62499999  0.3125      0.0625    ]]
Current round: 60
[[ 0.625   0.3125  0.0625]]
。。。。。。
Current round: 99
[[ 0.625   0.3125  0.0625]]
Current round: 100
[[ 0.625   0.3125  0.0625]]

可以发现,从第 60 轮开始,我们的状态概率分布就不变了,一直保持[0.625,0.3125,0.0625][ 0.625, 0.3125, 0.0625][0.625,0.3125,0.0625],即 62.5% 的牛市,31.25% 的熊市与 6.25% 的横盘。

这个性质不仅对状态转移矩阵有效,对于绝大多数的其他的马尔可夫链模型的状态转移矩阵也有效。同时不光是离散状态,连续状态时也成立。

详细学习请参见:https://zhuanlan.zhihu.com/p/38764470

非马尔科夫链过程的例子

只有满足马尔科夫链的特性,才属于马尔科夫链过程。例如对于不放回的袋中取球问题:

显然当前取球的概率,不仅和我最后一次取的球的颜色有关,也和我之前每一次取球的颜色有关,所以这个过程不是一个马尔科夫链过程。

如果是放回的袋中取球问题,这就建立了一个马尔科夫随机过程。

马尔科夫链在机器学习中的应用

自然语音处理研究让机器“听懂”人类的语言,马尔科夫模型就解决了:

语言模型:N-Gram 是一种简单有效的语言模型,基于独立输入假设:第 n 个词的出现只与前面 N-1 个词相关,而与其它任何词都不相关 。整句出现的概率就是各个词出现概率的乘积。这些概率可以通过直接从语料中统计 N 个词同时出现的次数得到。

声学模型:利用 HMM 建模(隐马尔可夫模型),HMM 是指这一马尔可夫模型的内部状态外界不可见,外界只能看到各个时刻的输出值。对语音识别系统,输出值通常就是从各个帧计算而得的声学特征。

参考

什么是马尔可夫链?

马尔科夫链(Markov Chain),机器学习和人工智能的基石

马尔可夫链 (Markov Chain)是什么鬼

简述马尔可夫链【通俗易懂】相关推荐

  1. mos管工作原理动画图讲解_MOS管工作原理电路图简述【通俗易懂】

    mos管工作原理动画图讲解_MOS管工作原理电路图简述[通俗易懂] 发布时间:2020-01-18 09:06人气:461 很多朋友对mos管原理都不是太了解,今天小编就给各位普及一下关于MOS管工作 ...

  2. (转载)简述马尔可夫链

    赶紧记录一下,通俗易懂. 参考:https://zhuanlan.zhihu.com/p/448575579 马尔科夫链的思想:过去所有的信息都已经被保存到了现在的状态,基于现在就可以预测未来.(用数 ...

  3. 阿白数模笔记之灰色-马尔科夫模型(Grey Markov model)

    目录 前言(preface) GM(1,1) 简介(brief introdution) ①级比检验(Grade ratio test) ②建立GM(1,1)模型 Ⅰ.邻值生成序列(Adjacent ...

  4. 马尔科夫链(Markov Chain)

    1,马尔可夫性 马尔可夫性(Markov Property)是指系统的下一个状态仅与当前状态有关,而与以前的状态无关 (即无记忆性(memorylessness),系统不记得当前状态以前的状态,仅仅基 ...

  5. 【插件】打造属于自己的cnpm/npm安装,生成自定义项目架构

    一些废话(直接看代码的可跳过) 现在前端圈子框架繁多,不乏一些自主研发或合作开发的公司内部框架,模块/组件化.框架设计理念.架构分析.底层封装等去搭建高楼大厦的骨架,为的就是"维护.复用.二 ...

  6. 简述区块链架构设计,通俗易懂

    简述区块链架构设计,通俗易懂 首先,支持一下阿里云:阿里云ECS服务器,有幸运券了:有缘的朋友们,可以前来领取: https://promotion.aliyun.com/ntms/act/ambas ...

  7. 【通俗易懂的通信】马尔可夫过程Ⅱ:马尔可夫链中的状态,常返、非常返

    往期基础知识回顾:马尔可夫过程Ⅰ:马尔可夫链.齐次马尔可夫链.CK方程 0.符号规定 :转移概率,从状态i到状态j,n步转移概率,不关心是否重复经过状态j. :首达概率,经过n步第一次从i达到j的概率 ...

  8. 马尔可夫链(Markov Chain)是什么?通俗易懂

    马尔可夫链(Markov Chain) 马尔可夫链经常出现在机器学习的概念中,因为生活中很多情况都可以用马尔可夫链建模,我们先给出数学化的定义,然后再举个生活化的例子与数学公式相对应,就可以理解马尔可 ...

  9. 【通俗易懂的通信】马尔可夫过程Ⅰ:马尔可夫链、齐次马尔可夫链、CK方程

    0.前言 马尔可夫链在香农通信中被用作描述离散信源的工具,所以完全理解马尔可夫链是理解香农信息论的前提 1.马尔可夫链的定义 注解: 定义式中并未说明状态空间的容量,n是序列的长度. A式的意思是,相 ...

  10. 一份数学小白也能读懂的「马尔可夫链蒙特卡洛方法」入门指南

    文章来源:机器之心 在众多经典的贝叶斯方法中,马尔可夫链蒙特卡洛(MCMC)由于包含大量数学知识,且计算量很大,而显得格外特别.本文反其道而行之,试图通过通俗易懂且不包含数学语言的方法,帮助读者对 M ...

最新文章

  1. JDK安装以及开发环境搭建
  2. l2-004 这是二叉搜索树吗? (25分)_什么是 “线段树” ?
  3. NYOJ 300 hdu 2276 Kiki Little Kiki 2 (矩阵快速幂)
  4. C语言 | 结构体详解(C结构体)
  5. kotlin学习笔记——委托属性
  6. elementui表单校验原始密码_javascript 中入门数据校验
  7. DWR入门教程(http://www.cnblogs.com/cyjch/archive/2012/02/16/2353758.html)
  8. 拓端tecdat|R语言MCMC:Metropolis-Hastings采样用于回归的贝叶斯估计
  9. 清华计算机系超算团队,清华大学学生超算团队
  10. 多媒体互动项目-Unity与继电器数据交互
  11. 常用命令之svn命令
  12. mysql计算同比和环比的区别_MySQL实践之同比环比
  13. message from server: “Host is not allowed to connect to this MySQL server“问题的解决办法
  14. 项目管理第三招:做好计划,拥抱变化
  15. Opencv中使用ocl模块遇到的问题
  16. android移除fragment,Fragment 的创建、替换与移除
  17. 优盘复制进来为空_U盘问题 复制文件夹到U盘后,再打开就成空的了、
  18. 营收倍数级增长,利润却止步不前!光庭信息只有一只脚踏进了智能电动车风口?...
  19. 阿里云函数计算快速入门
  20. 股市日记之“赶火车一景”

热门文章

  1. 一款牛逼的Android端身份证合成工具
  2. PID神经网络控制【神经网络二十六】
  3. HoloWAN网络仿真损伤仪的基本功能及图解
  4. nexus nexus3_如何在Nexus 7的主屏幕上启用横向方向
  5. HTML代码 网页设置 QQ空间等分享
  6. android 混淆字符串,android 代码混淆
  7. struts框架——ActionForm+DynaActionForm
  8. 移动通信基础(5)信道估计
  9. element UI日历组件自定义操作设置农历、阳历、节日展示、单日操作
  10. html5实现对试题图片批改效果,类似盖章效果