马尔科夫链与MCMC方法
马尔科夫链概述
- 基本思想: 过去所有的信息都已经被保存到了现在的状态,基于现在就可以预测未来。
- Example: 假如每天的天气是一个状态的话,那今天是不是晴天只依赖于昨天的天气,而和前天的天气没有任何关系。当然这么说可能有些武断,但是这样做可以大大简化模型的复杂度。因此马尔科夫链在很多时间序列模型中得到广泛的应用,比如循环神经网络 R N N RNN RNN,隐式马尔科夫模型 H M M HMM HMM等,当然 M C M C MCMC MCMC也需要它。
- 文字定义: 马尔科夫链为状态空间中经过从一个状态到另一个状态的转换的随机过程,该过程要求具备“无记忆性 ”,即下一状态的概率分布只能由当前状态决定,在时间序列中它前面的事件均与之无关,这种特定类型的“无记忆性”称作马尔科夫性质。
- 数学定义: 假设我们的序列状态是 . . . X t − 2 , X t − 1 , X t , X t + 1 , . . . ...Xt−2,Xt−1,Xt,Xt+1,... ...Xt−2,Xt−1,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(X_{t+1}|...X_{t−2},X_{t−1},X_t)=P(X_{t+1}|X_t) P(Xt+1∣...Xt−2,Xt−1,Xt)=P(Xt+1∣Xt)
- 既然某一时刻状态转移的概率只依赖于它的前一个状态,那么我们只要能求出系统中任意两个状态之间的转换概率,这个马尔科夫链的模型就定了。这就引出了我们的状态转移矩阵 P P P
状态转移矩阵的性质
- 状态转移矩阵的定义: P i j = 从状态 i 转移到状态 j 的概率 P_{ij}=从状态i转移到状态j的概率 Pij=从状态i转移到状态j的概率
- 平稳分布的判定:
- 平稳分布:设马尔可夫链 X X X有转移概率矩阵 P P P,一个概率分布 π = { π 1 , π 2 , π 3 , . . . , π n } \pi=\{\pi_1,\pi_2,\pi_3,...,\pi_n\} π={π1,π2,π3,...,πn}如果满足 π j = ∑ i = 1 n π i p i j \pi_j=\sum_{i=1}^n\pi_ip_{ij} πj=∑i=1nπipij,则称 π \pi π为该马尔可夫链的平稳分布
- 唯一平稳分布的判定: 满足不可约、正常返和非周期的马氏链存在唯一的平稳分布
- 不可约: 从任意状态出发总可以到达其它状态
- 正常返: 从某一状态出发,经过有限步转移后又可以回到该状态
- 非周期: 保证马氏链不会陷入循环
- 细致平稳条件: 设有马尔可夫链 X X X,状态分布 π = { π 1 , π 2 , π 3 , . . . , π n } \pi=\{\pi_1,\pi_2,\pi_3,...,\pi_n\} π={π1,π2,π3,...,πn},对于任意时刻 t t t 都满足 π i P i j = π j P j i \pi_iP_{ij}=\pi_jP_{ji} πiPij=πjPji,则称状态分布 π \pi π满足马尔科夫链的细致平稳条件,该状态分布 π \pi π就是该马尔科夫链的平稳分布
- 细致平稳条件是判断平稳分布的充分而非必要条件
- 然而,随便找一个状态转移矩阵,是无法满足细致平稳条件的,即假设这个随机的状态转移矩阵为 Q Q Q,会有 π i Q i j ≠ π j Q j i \pi_iQ_{ij}\ne\pi_jQ_{ji} πiQij=πjQji。但在 M C M C MCMC MCMC采样方法中对这个问题进行了巧妙的解决。
马氏链的极限定理
- 马氏链的收敛定理: 设 { X n , n ≥ 0 } \{X_n,n\ge0\} {Xn,n≥0}为一具有可数状态空间 S S S的马氏链,其状态转移矩阵为 P P P,且它存在唯一平稳分布 π \pi π,则在合适的条件下,当 n → ∞ n\rightarrow\infty n→∞时,无论 X n X_n Xn的初始分布是什么, X n X_n Xn的分布都将收敛到 π \pi π
- 马氏链的大数定律: 设 { X n , n ≥ 0 } \{X_n,n\ge0\} {Xn,n≥0}为一具有状态空间 S S S的马氏链,其状态转移矩阵为 P P P,且它存在唯一平稳分布 π \pi π,对任何有界函数 h ( x ) h(x) h(x),当状态空间可数时,有 1 n ∑ i = 0 n − 1 h ( X i ) → ∑ j = 0 n − 1 h ( X j ) π j \frac{1}{n}\sum_{i=0}^{n-1}h(X_i)\rightarrow\sum_{j=0}^{n-1}h(X_j)\pi_j n1i=0∑n−1h(Xi)→j=0∑n−1h(Xj)πj当状态空间连续,即不可数时,有 1 n ∑ i = 0 n − 1 h ( X i ) → ∫ S h ( x ) π ( x ) d x \frac{1}{n}\sum_{i=0}^{n-1}h(X_i)\rightarrow\int_Sh(x)\pi(x)dx n1i=0∑n−1h(Xi)→∫Sh(x)π(x)dx这个结论实际上就是在说当 n n n分大时,与马氏链 X n X_n Xn相关的函数 h ( X n ) h(X_n) h(Xn)的均值趋近于它的期望,通过这个结论,我们就可以应用马尔科夫链去近似计算复杂积分了。具体而言,假设我们要计算积分 μ = ∫ S h ( θ ) π ( θ ∣ x ) d θ \mu=\int_Sh(\theta)\pi(\theta|x)d\theta μ=∫Sh(θ)π(θ∣x)dθ如果后验分布 π ( θ ∣ x ) \pi(\theta|x) π(θ∣x)难以直接抽样,那么我们就可以构造一条马氏链 θ \theta θ,使其状态空间为 S S S且其平稳分布就是 π ( θ ∣ x ) \pi(\theta|x) π(θ∣x),将此马氏链运行一段时间使其收敛于平稳分布后,将产生一系列服从平稳分布的随机样本 θ 0 , θ 1 , θ 2 , . . . , θ n − 1 \theta_0,\theta_1,\theta_2,...,\theta_{n-1} θ0,θ1,θ2,...,θn−1,由该定理可得 μ ≈ 1 n ∑ i = 0 n − 1 h ( θ i ) \mu\approx\frac{1}{n}\sum_{i=0}^{n-1}h(\theta_i) μ≈n1i=0∑n−1h(θi)这种计算复杂积分的方法就称为 M C M C MCMC MCMC方法
References
- https://www.zhihu.com/question/63305712
- https://zhuanlan.zhihu.com/p/38764470
马尔科夫链与MCMC方法相关推荐
- 马尔科夫链和马尔科夫链蒙特卡洛方法
前言 译自:<Training Restricted Boltzmann Machines: An Introduction > 马尔科夫链在RBM的训练中占据重要地位,因为它提供了从复杂 ...
- 漫谈MCMC与Gibbs采样(三)—— 有趣的马尔科夫链
Markov Chain 提起马尔科夫链,大家应该都不陌生.我第一次接触这个概念,是在大一的C语言编程课中,当时用马尔科夫链来做文章的随机生成.马尔科夫链的思想非常简单,在数学上可以表述如下: (6) ...
- 用Python中的马尔科夫链进行营销渠道归因
用Python中的马尔科夫链进行营销渠道归因 --第一部分:"更简单 "的方法 任何积极开展营销活动的企业都应该对确定哪些营销渠道推动了实际转化率感兴趣.投资回报率(ROI)是一个 ...
- 蒙特卡洛法(三)马尔科夫链蒙特卡洛法
马尔科夫链蒙特卡洛法适合于随机变量是多元的.密度函数是非标准形式的随机变量各分量不独立的情况.如何构建具体的马尔科夫链是这个方法的关键,离散变量的时候,需要定义转移矩阵,构建可逆马尔科夫链,保证遍历定 ...
- MCMC原理解析(马尔科夫链蒙特卡洛方法)
马尔科夫链蒙特卡洛方法(Markov Chain Monte Carlo),简称MCMC,MCMC算法的核心思想是我们已知一个概率密度函数,需要从这个概率分布中采样,来分析这个分布的一些统计特性,然而 ...
- 第十五课.马尔科夫链蒙特卡洛方法
目录 M-H采样 Metropolis-Hastings采样原理 M-H采样步骤 Gibbs方法 Gibbs核心流程 Gibbs采样的合理性证明 Gibbs采样实验 在 第十四课中讲述了马尔科夫链与其 ...
- MCMC+马尔科夫链蒙特卡罗
MCMC+马尔科夫链蒙特卡罗 为了解决什么问题,所以出现了这一种方法? 后来又因为出现了什么新情况,所以产生了对应的变种?
- MCMC(二)马尔科夫链
在MCMC(一)蒙特卡罗方法中,我们讲到了如何用蒙特卡罗方法来随机模拟求解一些复杂的连续积分或者离散求和的方法,但是这个方法需要得到对应的概率分布的样本集,而想得到这样的样本集很困难.因此我们需要本篇 ...
- 通过Python实现马尔科夫链蒙特卡罗方法的入门级应用
通过把马尔科夫链蒙特卡罗(MCMC)应用于一个具体问题,本文介绍了 Python 中 MCMC 的入门级应用. GitHub 地址:https://github.com/WillKoehrsen/ai ...
最新文章
- 一个web蠕虫的简单实现
- oracle数组元素所在key,oracle可变数组(VARRAY)
- 用Ant编译Flex项目的几点注意事项
- verilog 移位运算符 说明_Verilog学习笔记基本语法篇(二)·········运算符...
- 【vue2.0进阶】用axios来实现数据请求,简单易用
- 2017.9.2 王室联邦 失败总结
- 54 - 算法 - 动态规划问题 连续子序列和最大
- jersery集成jackson实现restful api,由于jdk版本不一致导致的坑
- 在一个公司,谁有业绩,谁就有说话权
- linux根目录下各子目录的作用
- java代码实现的帧动画
- c语言strict函数的作用,C语言实现进制转换函数的实例详解
- 苹果手机微信中打开app下载链接跳转不到app store怎么办
- 百度滴滴京东实习生面试题
- 360浏览器用的什么内核?
- 【Atlas 200 DK】(一)简介 Atlas 200 DK 开发者套件(型号:3000)
- 从编译器源码中提取ARMv8的指令编码
- 这几年阅读的一些非技术类好书推荐
- 南农计算机考研真题,2021南京农业大学考研历年真题
- Java调用Bartender控制条码打印机
热门文章
- api connect like.php,WWW 无心宠物是一款php编写的 - 下载 - 搜珍网
- SDL2.0--绘制文字
- php+xampp添加虚拟主机
- 关于最新笔记本机型预装win8如何更换为win7的解决办法
- 解决方案:Windows DNS服务器未响应
- 开源巨献:来自百度的71款开源项目
- AutoIT3while循环语句
- 【c语言版】带你领悟多子棋游戏
- 主机发现,ip扫描工具推荐(angry ip scanner)
- [网络安全自学篇] 二十二.Web渗透之网站信息、域名信息、端口信息、敏感信息及指纹信息收集