《principles of model checking》中的离散时间马尔科夫链

说明:此文为我自学《principles of model checking》第十章内容的笔记。

一、离散时间马尔可夫链的定义,目标问题和一些辅助定义。

二、将迁移系统转化为矩阵表达及一简例

三、列出方程X=AX+B

四、对于解该方程的一点个人想法

五、作者给出的解法

一、离散时间马尔可夫链的定义,目标问题和一些辅助定义。

一个离散时间马尔可夫链定义为一个五元组,其中

  1. S:一个可数非空集合,元素为状态。
  2. P:到[0,1]的迁移概率函数。对所有的状态s有
  3. :S->[0,1]是初始概率分布。
  4. AP是原子命题,L是标签函数。(这两个定义沿袭迁移系统的定义,具体可见维基百科的transition system页面,在这章中未产生作用)

  目标问题:求解各个状态到达给定的最终状态的概率。

  一些辅助定义:

  C U B(读作 C until B):表示通过C到达B(或者说到达B的路径上的每个点都在V集合内)

  C U (<=n)B:表示在n步及以内通过C到达B

  另外用S1,S?,S0将S划分成三部分:

  (我这里写的定义也原文略有不同,我把定义收紧了,方便叙述)

  以下是书上这部分原文:

二、将迁移系统转化为矩阵表达及一简例

想法非常直观,将每个状态编个号然后令aij为从i到j的转移概率即可

以下是《principles of model checking》中给的一个例子。

P第一行表示start,第二行表示try,第三行lost,第四行delivered。

矩阵乘以行向量的物理意义是:走一步。得到的结果是走一步之后的新概率分布。

注意:这样写的矩阵在进行乘操作时得写为 行向量 乘 矩阵。上面那个初始向量写为列向量是与P不匹配的。

三、列出方程X=AX+B

X=AX+B这一行方程,可以求出各个状态点到达最后的胜利区域的概率。

以下是原文供参考:

  可以发现我写的跟原文略有不同:原文中走一步后的情况分为两类:到达胜利区和未到达。将之后胜利概率为0的情况包括在未到达胜利区了。我在这里小小改动了一下主要是想着可以实现的时候缩小矩阵。

另外关于如何划分S1,S?,S0的问题:

首先胜利区域和失败区域应该是由人工指定的,并将其对应的Xs标记为1和0.从胜利区域出发逆向搜索(将图中所有边反向),取补集得到死路区。再从死路区出发搜索(这时候图里的边不反向)所有能到达的非胜利区即为问号区。

四、解方程的个人想法

作者对于如何解这个方程更多的从物理(或者说实际?)角度考虑,利用模型对应的意义给出了一个构造性解法。之后还给了一个特殊情况求逆法。

而我由于刚学完一年的线性代数,刚看到这个问题的时候主要是从纯数学的角度考虑。

X=AX+b移项后得到(I-A)X=B。这是一个线性代数基本问题,即解CX=D。先考虑是否有解,再考虑有多少解,最后考虑怎么求解或者解之间有什么关系。

设C的列向量为c1,c2,…,cn,判断CX=D是否有解等价于判断D是否可以由c1,c2,…,cn线性表出。或者说,D是否在c1,c2…,cn形成的线性子空间中。

运用矩阵工具这个问题被转化为判断C和C上D的增广矩阵是否等秩。

若rank(C)=rank(C,D),则有解,rank(C)<rank(C,D),则无解。不可能有rank(C)>rank(C,D)(一组基加上一个向量D生成的子空间不可能减秩)。

特殊地,如果矩阵C是满秩的,rank(C)与rank(C,D)必然相等。同时方程的解唯一(因为矩阵的逆唯一)。

在rank(C)=rank(C,D)的情况下,若C不满秩,方程有无穷解(因为有自由变量)。

于是我觉得解(I-A)X=B可以采用线性代数的方法:先计算(I-A)的秩,若满秩则用求逆算法得A的逆。将其与B相乘得到答案。不满秩再计算B的逆,判断是否有解,有解的话解出解空间找出最小可行解即可。

五、作者给出的解法

作者一共给出了两种解法,无限迭代法与一种特殊的求逆法。

无限迭代法非常有意思,简而言之是令X初始为0,用X=AX+B反复迭代直到X值不变。

以下证明这种无限迭代会产生一个单调上升并收敛的数列。并且,若X初始为0的时候得到的数列极限为最小不动点(方程X=AX+B的最小解).

  

然后作者证明了只要S0确实包括且仅包括了所有绝对不可能胜利的点,那么方程就将只有唯一解。

之后作者简略叙述了唯一解的另一种证明思路。

主要讲的是A的特征值的绝对值必然小于1,从而I+A+A^2+……+A^n+……收敛

证明它就是I-A的逆,从而方程有唯一解

但是我实在没懂”by roughly the same arguments as in proof of Theorem10.15(即前文中我贴出来的原文)”是怎么证出来不存在绝对值大于等于1的特征值的。

我试图自行证明,但在证明大于-1的时候遇到了一些问题。。。。我还是把这个未完成的证明放上来,望有人指正。

《principles of model checking》中的离散时间马尔科夫链的更多相关文章

  1. 机器学习中的隐马尔科夫模型(HMM)详解

    机器学习中的隐马尔科夫模型(HMM)详解 在之前介绍贝叶斯网络的博文中,我们已经讨论过概率图模型(PGM)的概念了.Russell等在文献[1]中指出:"在统计学中,图模型这个术语指包含贝叶 ...

  2. N元马尔科夫链的实现

    马尔可夫模型(Markov Model)是一种统计模型,广泛应用在语音识别,词性自动标注,音字转换,概率文法等各个自然语言处理等应用领域.经过长期发展,尤其是在语音识别中的成功应用,使它成为一种通用的 ...

  3. 马尔科夫链蒙特卡洛(Markov chain Monte Carlo)

    (学习这部分内容大约需要1.3小时) 摘要 马尔科夫链蒙特卡洛(Markov chain Monte Carlo, MCMC) 是一类近似采样算法. 它通过一条拥有稳态分布 \(p\) 的马尔科夫链对 ...

  4. 从随机过程到马尔科夫链蒙特卡洛方法(MCMC)

    从随机过程到马尔科夫链蒙特卡洛方法 1. Introduction 第一次接触到 Markov Chain Monte Carlo (MCMC) 是在 theano 的 deep learning t ...

  5. 蒙特卡洛马尔科夫链(MCMC)

    蒙特卡洛马尔科夫链(MCMC) 标签: 机器学习重要性采样MCMC蒙特卡洛 2016-12-30 20:34 3299人阅读 评论(0) 收藏 举报  分类: 数据挖掘与机器学习(41)  版权声明: ...

  6. MCMC(二)马尔科夫链

    MCMC(一)蒙特卡罗方法 MCMC(二)马尔科夫链 MCMC(三)M-H采样和Gibbs采样(待填坑) 在MCMC(一)蒙特卡罗方法中,我们讲到了如何用蒙特卡罗方法来随机模拟求解一些复杂的连续积分或 ...

  7. 13张动图助你彻底看懂马尔科夫链、PCA和条件概率!

    13张动图助你彻底看懂马尔科夫链.PCA和条件概率! https://mp.weixin.qq.com/s/ll2EX_Vyl6HA4qX07NyJbA [ 导读 ] 马尔科夫链.主成分分析以及条件概 ...

  8. 【HDOJ6229】Wandering Robots(马尔科夫链,set)

    题意:给定一个n*n的地图,上面有k个障碍点不能走,有一个机器人从(0,0)出发,每次等概率的不动或者往上下左右没有障碍的地方走动,问走无限步后停在图的右下部的概率 n<=1e4,k<=1 ...

  9. 【强化学习】MOVE37-Introduction(导论)/马尔科夫链/马尔科夫决策过程

    写在前面的话:从今日起,我会边跟着硅谷大牛Siraj的MOVE 37系列课程学习Reinforcement Learning(强化学习算法),边更新这个系列.课程包含视频和文字,课堂笔记会按视频为单位 ...

随机推荐

  1. ubuntu16.04安装不上有道词典的解决办法

    转自:http://www.linuxdiyf.com/linux/21143.html ubuntu16.04安装不上有道词典,提示: le@hu-pc:~/下载$ sudo dpkg -i you ...

  2. linux和Windows实现文件共享之samba的安装与配置

    背景: 项目需求linux的一个目录,需要在两台windows目录上面进行同时共享. 使用mount时发现,通过mount将同一个linux上面的目录挂载在两台windows机器上时,会出现文件隐藏的 ...

  3. 安卓平台使用pocketSphinx离线语音识别

    版权声明:本文为elecdog原创文章,可以转载,但必须在明确位置注明出处!谢谢合作. 关于语音识别,国内已经有比较好的公司推出相关的服务了,比如百度免费的离在线融合语音识别以及讯飞收费的在线和离线语 ...

  4. (转)java提高篇(二)-----理解java的三大特性之继承

    在<Think in java>中有这样一句话:复用代码是Java众多引人注目的功能之一.但要想成为极具革命性的语言,仅仅能够复制代码并对加以改变是不够的,它还必须能够做更多的事情.在这句 ...

  5. (转)java反射机制及简单工厂模式

    第一步,定义一个接口类 package factory.face; /** * 接口,为了保证返回的对象可以统一用 Product接受 * @author Administrator */ publi ...

  6. 【JAVASCRIPT】React学习-巧用 props 的 children 属性实现内容填充

    背景 平常写组件,经常遇到需要获取内容放入组件内部的情形. 实现方法 我们有两种实现方式 1. 自定义 props render 的时候通过获取 this.props.content 填充到组件内部 ...

  7. 初学 Python(十三)——匿名函数

    初学 Python(十三)--匿名函数 初学 Python,主要整理一些学习到的知识点,这次是匿名函数. # -*- coding:utf-8 -*- #关键字lambda定义的函数都是匿名函数 #做 ...

  8. phantomjs submit click

    phantomjs 一般提交时都会用submit,前提条件就是网页中有form表单: 在网页中无form表单的情况下,用submit()会报错:selenium.common.exceptions.N ...

  9. attr(),addClass()使用方法练习

    这次我主要是想要完成2个li之间样式的变化.方法比较傻,如果有人有更好的办法或者有别问题,希望可以不吝指教. <!DOCTYPE html><html> <head> ...

  10. CPUImageRGBFilter 实现

    参考自: https://github.com/BradLarson/GPUImage GPUImageRGBFilter: Adjusts the individual RGB channels o ...