zoukankan      html  css  js  c++  java
  • 《概率统计》10.变与不变:马尔科夫链的极限与稳态

    马尔科夫链的极限行为

    极限与初始状态无关的情况

    对于转移概率矩阵

    (egin{bmatrix}0.7&0.2&0.1\0.3&0.5&0.2\0.2&0.4&0.4end{bmatrix})

    我们在上一篇已经计算过随着转移步数 n 的逐步增大,n 步转移概率矩阵收敛于:

    (egin{bmatrix}0.46808511&0.34042553&0.19148936\0.46808511&0.34042553&0.19148936\0.46808511&0.34042553&0.19148936end{bmatrix})

    我们观察一下这个收敛矩阵,它最重要的特点就是当n 趋近于 ∞时,矩阵中的每一个值都会收敛于一个极限值,这个极限值不依赖于初始状态 i。换句话说,你的老祖宗无论是处于贫穷阶层、中产阶级还是财富自由,过来很多代之后,你处于任何一个阶层的概率都是一定的,跟你祖先的状态已经没有关系了。

    因此当时间 n 比较小的时候,n 步转移概率矩阵中的值还会比较依赖于它的初始状态 i,而当 n 不断增大时,这种依赖性将会逐渐消失,贫穷阶层、中产阶级和财富自由都趋近于一个正的稳态概率,而位于哪个初始状态已经可以忽略不计了。

    极限依赖于初始状态的情况

    许许多多随时间变化的概率模型都有上面提到的性质,但这并不是全部。还有一种极限的情况是,随着 n→∞ 时,矩阵中的每一个值依然会收敛于一个极限值,但不同的是,这些极限值会依赖于最初位于哪一个初始状态(在矩阵中的具体表现形式就是:矩阵不是每一行都相等)。

    我们举一个例子:这是一个老虎和羊的故事

    有一只羊,在图中的四个区域内移动,每次只能移动一个位置,这只羊如果在区域 2 和区域 3 之间移动,则平安无事,如果一旦移动到区域 1 或者是区域 4,则立马就会被老虎吃掉,它的尸骨也就永远的停留在了那里,一切也就结束了。

    各个区域之间的转移概率,我们都已经标注在了上面的这幅转移概率图当中了,转移概率矩阵如下:

    (egin{bmatrix}1&0&0&0\0.2&0.4&0.4&0\0&0.4&0.4&0.2\0&0&0&1end{bmatrix})

    那么我们接下来还是来观察一下它的 n 步转移概率矩阵。

    from functools import reduce
    import numpy as np
    
    A = np.array([[1, 0, 0, 0],
                  [0.2, 0.4, 0.4, 0],
                  [0, 0.4, 0.4, 0.2],
                  [0, 0, 0, 1]])
    
    
    print(np.array(reduce(np.ndarray.__matmul__, [A] * 5)))
    """
    [[1.      0.      0.      0.     ]
     [0.43616 0.16384 0.16384 0.23616]
     [0.23616 0.16384 0.16384 0.43616]
     [0.      0.      0.      1.     ]]
    """
    print(np.array(reduce(np.ndarray.__matmul__, [A] * 10)))
    """
    [[1.         0.         0.         0.        ]
     [0.59423539 0.00576461 0.00576461 0.39423539]
     [0.39423539 0.00576461 0.00576461 0.59423539]
     [0.         0.         0.         1.        ]]
    """
    print(np.array(reduce(np.ndarray.__matmul__, [A] * 20)))
    """
    [[0.46808515 0.34042551 0.19148934]
     [0.46808508 0.34042555 0.19148937]
     [0.46808505 0.34042556 0.19148938]]
    """
    print(np.array(reduce(np.ndarray.__matmul__, [A] * 100)))
    """
    [[1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00]
     [6.00000000e-01 1.01851799e-10 1.01851799e-10 4.00000000e-01]
     [4.00000000e-01 1.01851799e-10 1.01851799e-10 6.00000000e-01]
     [0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00]]
    """
    

    很明显,我们发现随着 n→∞,n 步转移概率矩阵收敛于

    (egin{bmatrix}1&0&0&0\0.6&0&0&0.4\0.4&0&0&0.6\0&0&0&1end{bmatrix})

    吸收态与收敛分析

    (egin{bmatrix}1&0&0&0\0.6&0&0&0.4\0.4&0&0&0.6\0&0&0&1end{bmatrix})

    这个矩阵看上去很简单,实际上内涵却非常深刻。

    • 首先,在这四个状态中,有两个状态可以被称作是“吸收”状态,也就是说一旦到达了这个状态,就不再有任何机会转移到其他状态,而是将永远处于这个状态,我们这个例子中的吸收态就是状态 1 和状态 4,用图中的故事来打比方,就是羊一旦走到了区域 1 和区域 4,就羊入虎口,再也回不来了。
    • 其次,虽然 n 步转移概率矩阵在数值上也会收敛,但是收敛的极限值会依赖于初始状态。这个很容易理解,最开始羊位于区域 2,它死于区域 1 的老虎的概率是 0.6,而如果羊最开始位于区域 3,则它死于区域 1 的老虎的概率是 0.4,它更大可能是落入区域 4 的虎口。
    • 最后,我们发现随着 n→∞,n 步转移概率矩阵中,状态 2 和状态 3 两列都收敛为 0,换句话说就是无论羊初始位于哪个状态,只要时间给的够长,最终它们都只有两个归宿:落入区域 1 的虎口或者落入区域 4 的虎口,没有活下来的希望。

    可达、常返与常返类

    可达性

    从我们举的阶级流动和羊入虎口两个例子可以看出,二者所表现出来的状态是有很大区别的。一方面是两个例子中马尔科夫链的状态性质不同,另一方面也决定了随着 n→∞ 时,二者的极限表现不同。

    我们还是把阶级流动的那个图再拿出来对比看看:

    在这幅转移概率图中,我们可以发现,任取两个状态,状态 i 和状态 j,从状态 i 出发可以到达状态 j。而羊入虎口那幅图就不是这么个情况了,如果我们选择从状态 2 出发,可以到达其他任意的状态,但是如果我们从状态 1 出发,除了自身以外,到达不了任何其他的状态。

    常返

    从上述的可达性,我们就能引出常返和非常返的新概念了。

    对于一个状态 i,如果对于每个从状态 i 出发可达的状态 j,相应的从状态 j 出发,反过来也可到达状态 i,那么状态 i 就是常返的。这是通俗的说法,我们如果用数学的形式化语言来描述就是:

    我们令状态 i 的可达状态集合为 A(i),对于集合 A(i) 中的每一个状态 j,如果 i∈A(j),那么状态 i 就是可达的。

    那么在阶级流动概率转移图中,中产阶级的可达状态集是 {贫穷阶层,中产阶级,财务自由},那么这个可达状态集中任意一个状态也都可以到达“中产阶级”,因此中产阶级状态是常返的。同理其余两个状态也都是常返的。

    而在羊入虎口这个例子中则不然,对于状态 2 和状态 3 而言,它们都可以到达状态 1 和状态 4,但是反过来,从状态 1 和状态 4 都无法到达状态 2 和状态 3,因此状态 2 和状态 3 是非常返的。而状态 1 和状态 4 的可达状态集都只包含自身,因此它们是常返的。

    我们结合这两个例子中概率转移矩阵的极限来直观的讨论常返和非常返的本质内涵:

    在羊入虎口的例子中,随着 n→∞,n 步转移概率矩阵为:

    (egin{bmatrix}1&0&0&0\0.6&0&0&0.4\0.4&0&0&0.6\0&0&0&1end{bmatrix})

    也就是随着 n 的增大,在某个时刻之后,马尔科夫链将永远不会再返回该状态。从矩阵的数值来看,确实也是如此。

    常返类

    有了常返状态和非常返状态的概念之后,我们再引出常返类的概念就很好理解了。如果状态 i 是一个常返状态,那么状态 i 的可达状态集就构成了一个常返类,我们把之前的概率转移图修改一下,对着图来说:

    我们可以看到,状态 1 和状态 2 是常返状态,状态 3 是非常返状态,同时状态 1 的可达状态集是 {状态 1,状态 2},因此状态 1 和状态 2 构成了一个常返类,于是这个马尔科夫链就被分解成为了一个常返类和一个非常返状态。

    从这个图中,我们很容易概况出一些非常直观且重要的结论。

    第一就是常返类只进不出

    一旦一个状态进入到了一个常返类当中,它将永远的停留在这个类里面,因为依据常返类的定义,常返类当中的状态都是相互可达的,而常返类外的状态是不可达的,就像这幅图中,一旦从状态 3 进入到了常返类(状态 1 或者状态 2 )中,就只会在里面转移,不会再离开常返类返回状态 3 了。

    第二就是不管开局如何,终将进入常返类

    这个怎么讲呢,即使状态开始位于一个非常返状态,但是随着 n 的不断增大,前期的状态序列还会包含非常返状态,但在后期,特别是当 n 很大的时候,状态序列的后面一定由来自同一个类的常返状态组成。这里我们如果把常返类看做一个大号的吸收态(这种描述不一定很准确),相信大家就能理解了。一样的,在这幅图中,如果开局从状态 3 起步,早期可能会在状态 3 那兜兜圈子,到了最后一定落入状态 1 和状态 2 的常返类中。

    常返类与唯一稳态

    因此结合前后的知识我们发现:很显然,有多个常返类的马尔科夫链,一定不会收敛于一个唯一的稳态分布。

    光有单个常返类这一个条件,显然是不够的,如果这个常返类是周期性的,就如同下面这个最简单的图所示,假设它从状态 1 出发,即使 n→∞,如果 n 为奇数,则状态转移到状态 2 ,如果 n 为偶数,则状态转移到状态 1,显然是不收敛的。

    具体来说,要判断一个常返类 R 是不是周期的,这里有一个简单的判定方法,只要存在一个特定的 n≥1,和 R 中某一个特定的状态 i,使得经过 n 步之后可以到达常返态 R 中的任意状态,那么这个常返态就是非周期的。这个判定方法很简单。

    上面的这幅图,不存在这样的 n 值,因此验证了其是周期的,而在下面这幅图中,我们发现当 n=3 的时候,从状态 1 出发,可以到达常返类中的四个状态 {1,2,3,4},因此它是非周期的。

    再看阶级流动图,那就更简单了,当 n=1 时,可以到达其余全部状态。而对于上面这幅周期性的常返图,我们扣定义,简单的做一点小的修改,就能将其改成非周期的:

    马尔科夫链的稳态分析

    稳态的定义

    那么到底什么是稳态?稳态这个概念从何而来,就从我们之前反复提及的当 n→∞ 时,n 步转移概率矩阵中每个数值的收敛情况而来。

    对于马尔科夫链中的每一个状态 j,n 步转移概率值 (r_{ij}(n)) 会趋近于一个独立于初始状态 i 的极限值,我们通常把这个极限值记作是 (π_{j})

    更重要的是,独立于初始状态 i,就意味着无论从哪个初始状态开始,经过 n 步转移(n→∞)到状态 j 的概率都是 (π_{j}),因此在稳态下,处于状态jj的概率也同样趋近于极限值(π_{j}),即(P(X_{n}=j)→π_{j})(当n→∞)

    讨论唯一稳态分布的条件

    那么此时,我们综合一下:随着 n→∞,马尔科夫链要收敛于一个稳态分布,首先它得是非周期的,其次如果要求这个稳态分布是唯一的,则这个马尔科夫链必须只含有一个常返类。

    在此基础上,我们进一步讨论两个更强的约束条件。

    不可约条件

    较之单个常返类而言,马尔科夫链的不可约条件则更强,从概念上来说,一个不可约的马尔科夫链指的是,从任意一个状态出发,当经过充分长时间之后,可以到达任意状态。否则就叫作可约的。很显然,含有多个常返类的肯定是可约的,即使只有一个常返类,也不一定就是不可约的,看看下面这幅图,对比一下就明白了:

    满足不可约条件意味着马尔科夫链的各个状态之间是全联通的,这个条件是为了确保随着 n→∞,马尔科夫链收敛的唯一稳态分布中的每个状态的概率都大于 0。

    正常返

    正常返也是在常返的概念上更进了一层,指的是对于任意一个状态,从其他任意一个状态出发,当时间趋近于无穷时,首次转移到这个状态的概率不为 0。正常返是常返的一个子类,表示在常返的概念基础上,还附加一个转移步数有限的条件。

    这个条件主要针对无限状态的马尔科夫链,它也是为了保证在这种情况下,马尔科夫链收敛的唯一稳态分布中的每一个状态的概率都大于 0。

    唯一平稳分布存在性的判定

    最终,我们得到:在不可约、非周期、正常返的条件下,马尔科夫链拥有唯一稳态分布,且每个状态的概率都大于 0。

    稳态的求法

    解决了关于存在性的问题之后,我们其实最关心的还是稳态的求法,这个就要回归到马尔科夫链的定义中去理解了。

    我们还是对照阶级流动的马尔科夫链的状态转移图来观察:

    我们令贫穷阶层为状态 1,中产阶级为状态 2,财务自由为状态 3,当马尔科夫链到达稳态之后,三个概率趋近于极限值:(π_{1}、π_{2}、π_{3})

    那么首先依据分布概率的归一性原则,有:(π_{1}+π_{2}+π_{3}=1)

    然后,我们思索一下稳态的本质含义,就是到达稳态后,经过下一个时间的状态转移,马尔科夫链的概率分布保持不变,这就叫平稳。即状态一旦进入稳态分布,那么未来任何时候的状态都保持这个稳态分布不变。

    依据这个平稳的概念,我们又可以拿出几个方程。

    针对状态 1 贫穷阶层,我们有:(0.7π_{1}+0.3π_{2}+0.2π_{3}=π_{1})

    针对状态 2 中产阶级,我们有:(0.2π_{1}+0.5π_{2}+0.4π_{3}=π_{2})

    针对状态 3 财务自由,我们有:(0.1π_{1}+0.2π_{2}+0.4π_{3}=π_{3})

    核心意思就是,经过状态转移后,下一个时间点的各状态概率依然和本时刻相等。

    当然我们可以不写成这么臃肿的形式,写成一个初始状态向量乘以一步转移概率矩阵的形式,意思就更加简洁明了:

    (egin{bmatrix}π_{1} & π_{2} & π_{3}end{bmatrix} egin{bmatrix}0.7 & 0.3 & 0.2 \0.2 & 0.5 & 0.4 \0.1 & 0.2 & 0.4 end{bmatrix} = egin{bmatrix}π_{1} & π_{2} & π_{3}end{bmatrix})

    同时满足归一性(π_{1} + π_{2} + π_{3} = 1)的约束条件

    我们通过解方程组可以得到:

    (π_{1} = 0.46808511)

    (π_{2} = 0.34042553)

    (π_{3} = 0.19148936)

    我们发现其实这和 n→∞ 时的 n 步转移概率矩阵

    (egin{bmatrix}0.46808511&0.34042553&0.19148936\0.46808511&0.34042553&0.19148936\0.46808511&0.34042553&0.19148936end{bmatrix})

    中各行的值是一样的,的确应该一样,这正契合了我们前面讲过的原理。

  • 相关阅读:
    码云非活跃帐号处理规范
    css 利用animation和transform 设置鸭子表
    css 背景图片
    css 利用transform 实现页面居中效果
    css 表格
    利用雪碧图,完成兔子走路过渡/动画效果
    Apache 2.0.50,+php5.1.2+mysql 5.1 安装手记
    PHP企业级应用之WebService篇(转)
    发个C语言连接Postgresql程序(转)
    array 和 xml 相互转换
  • 原文地址:https://www.cnblogs.com/traditional/p/12612010.html
Copyright © 2011-2022 走看看