jjzjj

简述马尔可夫链【通俗易懂】

Suprit 2023-12-23 原文

马尔可夫链

前言

马尔可夫链(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 有关,与前面的其它过程无关。

数学定义

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

P ( X t + 1 ∣ … X t − 2 , X t − 1 , X t ) = P ( X t + 1 ∣ X t ) 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+1Xt2,Xt1,Xt)=P(Xt+1Xt)

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

转移概率矩阵

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

上图中有 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.72 P = A→A→A + A→B→A = 0.3 * 0.3 + 0.7 * 0.9 = 0.72 P=AAA+ABA=0.30.3+0.70.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.30.4,0.3] ,即 30% 概率的牛市,40% 概率的熊盘与 30% 的横盘。然后这个状态作为序列概率分布的初始状态 t 0 t_0 t0,将其带入这个状态转移矩阵计算 t 1 , t 2 , t 3 , . . . 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 * matrix
    print('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. ruby - 有人可以解释一下在 Ruby 中注入(inject)的真实、通俗易懂的用法吗? - 2

    我正在学习Ruby,遇到了inject。我正处于理解它的风口浪尖,但当我是那种需要真实世界的例子来学习一些东西的人时。我遇到的最常见的例子是人们使用inject来添加一个(1..10)范围的总和,我不太关心这个。这是一个任意的例子。在实际程序中我会用它做什么?我正在学习,所以我可以继续使用Rails,但我不必有一个以Web为中心的示例。我只需要一些我可以全神贯注的目标。谢谢大家。 最佳答案 inject有时可以通过它的“其他”名称reduce更好地理解。它是一个对Enumerable进行操作(迭代一次)并返回单个值的函数。它有许多有

  2. 数学建模之马尔可夫链模型详解(附详细Matlab程序) - 2

    🔗运行环境:Matlab🚩作者:左手の明天🥇精选专栏:《python》🔥推荐专栏:《算法研究》📚选自专栏:《数学建模》🧿优秀专栏:《Matlab神经网络案例分析》目前持续更新的专栏:🥇专栏:MatlabGUI编程技巧🔥专栏:Matlab从无到有系列大家好,我是左手の明天!今天和大家分享数学建模重要模型——马尔可夫链模型。在对数学建模之马尔可夫链模型进行介绍时,首先需要明确两个问题:马氏链模型用来干什么马尔可夫预测法是应用概率论中马尔可夫链(Markovchain)的理论和方法来研究分析时间序列的变化规律,并由此预测其未来变化趋势的一种预测技术。马氏链模型什么时候用应用马尔可夫链的计算方法进行马

  3. transformer中QKV的通俗理解(剩女与备胎的故事) - 2

     用vit的时候读了一下transformer的思想,前几天面试结束之后发现对QKV又有点忘记了,写一篇文章来记录一下参考链接:哔哩哔哩:在线激情讲解transformer&Attention注意力机制(上)在线激情讲解transformer&Attention注意力机制(上)_哔哩哔哩_bilibiliAttentionisallyouneed介绍更具体的介绍可以去阅读论文在Attentionisallyouneed这篇文章中提出了著名的Transformer模型Transformer中抛弃了传统的CNN和RNN,整个网络结构完全是由Attention机制组成。更准确地讲,Transform

  4. 【自然语言处理】最大熵马尔可夫模型 - 2

    有任何的书写错误、排版错误、概念错误等,希望大家包含指正。由于这部分的参考资料比较少,网上大部分资料重复且不完整,对于一些关键计算没有推导,所以这里我主要讨论几篇论文和讲义。但是这些论文和讲义之间也有些许差别,讨论的过程中我会加入自己的理解,难免存在错误,欢迎大家讨论。最大熵马尔可夫模型最大熵马尔可夫模型(maximum-entropyMarkovmodel,MEMM)又称为条件马尔可夫模型(conditionalMarkovmodel,CMM)。单纯顾名思义的话,可能会认为最大熵马尔可夫模型是最大熵模型与马尔可夫模型的融合,但其实,它结合了最大熵模型和隐马尔可夫模型(HMM)的共同特点,被广

  5. 一文带你通俗理解23种软件设计模式(推荐收藏,适合小白学习,附带C++例程完整源码) - 2

    作者:翟天保Steven版权声明:著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处一、设计模式是什么?    设计模式是为了解决在软件开发过程中遇到的某些问题而形成的思想。同一场景有多种设计模式可以应用,不同的模式有各自的优缺点,开发者可以基于自身需求选择合适的设计模式,去解决相应的工程难题。    良好的软件设计和架构,可以让代码具备良好的可读性、可维护性、可扩展性、可复用性,让整个系统具备较强的鲁棒性和性能,减少屎山代码出现的概率。    想要熟练运用设计模式,提高自己的编程能力和架构能力,只有在自己工作中,结合自身工作内容,多思考多实践。本文只能通过举一些通俗的例子,来

  6. javascript - javascript中的图形马尔可夫链 - 2

    关闭。这个问题不符合StackOverflowguidelines.它目前不接受答案。要求我们推荐或查找工具、库或最喜欢的场外资源的问题对于StackOverflow来说是偏离主题的,因为它们往往会吸引自以为是的答案和垃圾邮件。相反,describetheproblem以及迄今为止为解决该问题所做的工作。关闭9年前。Improvethisquestion我有一个马尔可夫链,我想用javascript以图形方式表示。我需要表示节点、链接和转移概率。也许类似于这两个图表之一:找到一个好的图片库(比如Raphael)不是问题。对我来说,问题是找到一种方法来确保节点布局合理,在其他节点或线前面

  7. 通俗易懂读写锁ReentrantReadWriteLock的使用 - 2

    概述ReentrantReadWriteLock不知道大家熟悉吗?其实在实际的项目中用的比较少,反正我所在的项目没有用到过。ReentrantReadWriteLock称为读写锁,它提供一个读锁,支持多个线程共享同一把锁。它也提供了一把写锁,是独占锁,和其他读锁或者写锁互斥,表明只有一个线程能持有锁资源。通过两把锁的协同工作,能够最大化的提高读写的性能,特别是读多写少的场景,而往往大部分的场景都是读多写少的。本文主要讲解ReentrantReadWriteLock的使用和应用场景。ReentrantReadWriteLock介绍ReentrantReadWriteLock实现了ReadWrit

  8. CDM—码分复用(简单易懂) - 2

    码分复用一、简介二、CDMA原理2.1表示2.2如何选择码片序列正交的实现:三、流程图发送端接收端四、例题一、简介·码分复用简称CDM·可以实现多个用户同时使用同样频率进行通信·如何实现?——通过各用户的码序列进行区分。二、CDMA原理2.1表示1、每个比特(0或1)以一组码序列发送(m位编码将每位比特划分为m)码片:一个数据信号(如逻辑1或0)通常要用多个编码信号来进行编码,那么其中的一个编码信号就称为一个码片2、一个数据信号(如逻辑1或0)通常要用多个编码信号来进行编码,如这个站要发送1,就发送该码片的原码,如要发送0,就发送给码片的反码每个站都会分配一个码片序列,那么如何选择码片序列呢?

  9. 时序分析 43 -- 时序数据转为空间数据 (二) 马尔可夫转换场 - 2

    马尔可夫转换场(MRF,MarkovTransitionFields)MRF    马尔可夫转换场(MRF,MarkovTransitionFields)比GAF要简单一些,其数学模型对于从事数据科学的工程师来说也并不陌生,诸如马尔可夫模型或隐含马尔可夫模型(HMM)也是我们经常会用到的建模方法,在自然语言处理、机器学习等数据科学任务中也会经常遇到。    我们假设一个长度为NNN的时序数据,第一步我们把每一个值放到一个分位数中,例如,如果我们使用四分位数,那么就是把所以的值放置到其属于的分位桶中,25%,50%,75%,100%。这有点类似于直方图中的bin值。我们可以把每一个桶想象成马尔可

  10. OSI 四层/七层 网络模型通俗解析 数据链路层/网络层 解析 - 2

    前言看了好多网络上的OSI网络模型,看了就忘,总是理解不到点子上。自己跟公司网络人员请教了一下网络架构。从底层理解为什么OSI网络模型是这样做,写个文章记录一下。文章尾部有一个小问题各位讨论一下理论理论知识不想看的可以直接跳到图文解析1.OSI的基本概念及原则OSI是OpenSystemInterconnect的缩写,意为开放式系统互联。其各个层次的划分遵循下列原则:(1)同一层中的各网络节点都有相同的层次结构,具有同样的功能。(2)同一节点内相邻层之间通过接口进行通信。(3)七层结构中的每一层使用下一层提供的服务,并且向其上层提供服务。(4)不同节点的同等层按照协议实现对等层之间的通信。2.

随机推荐