Welcome To My Blog

一.蒙特卡洛模拟

蒙特卡洛模拟(Monte Carlo Simulation)是随机模拟的别名,关于随机模拟的一个重要的问题就是:给定一个概率分布p(x),如何生成它的样本?
一般而言,均匀分布Uniform(0,1)的样本容易生成,而常见的概率分布(连续或离散)都可以基于均匀分布的样本生成,例如正态分布可以通过Box-Muller变换得到.
但是像p(x,y,z)这样甚至更高维度分布的样本很难生成,而MCMC(Markov Chain Monte Carlo)和Gibbs Sampling算法就是解决这个问题的.让我们从马尔科夫链(Markov Chain)说起

二.马尔科夫链

马尔科夫链(Markov Chain),简称马氏链,

定义:


含义:当前所处状态只和前一个状态有直接联系

非周期马氏链的引出

  • 对于一个有限状态马氏链,如果状态i是经过有限步转移后迟早要返回的状态,则称状态i是常返态.(即若i→j,则j→i;换句话说,从i能到j,一定可以从j到i,i是常返态,j也是常返态;常返态’链’上的状态是常返态),不是常返态的状态称为过渡态(如果k是过渡态,则从k出发后无法再回到k)
  • 如果马氏链中任何两个状态互通(互通的两个状态是常返态),则称马氏链为不可约的
  • 一个有限马氏链按照互通关系所分成的子集中的状态要么是常返的,称为常返类;要么是过渡的,称为过度类.
  • 一个有限马氏链至少有一个常返类和若干个过渡类(对于每一个状态都有入边和出边,所以至少有一个常返类)

    对于非周期马氏链来说,对于它的任意状态i,从状态i出发,可以有非负条路径返回i,在每条路径走过的步数为 (path1,path2,…), 这些path之间的最大公约数是1. eg:(path1=5,path2=9,path3=10)

马氏链的收敛定理


对于2.和3.两条:

这个定理非常重要,所有的MCMC方法都是建立在这个定理基础上的(定理的证明非常麻烦,书上也没有给出)
马氏链的任何两个状态相通的含义是:存在一个n,使得P^n的任意元素大于零
由马氏链的收敛定理,我们可以这样做,从马氏链的某个状态出发,按照转移概率矩阵转移,假设第n步后马氏链收敛,则在第n+1步,n+2步…n+j步…所处的状态就是马氏链平稳分布π的样本

三.Metropolis-Hastings算法

虽然马氏链能收敛,但是收敛后的分布不一定是我们想要的,如果让收敛后的分布就是我们希望的分布呢?
马尔科夫链蒙特卡洛方法(MCMC:Markov Chain Monte Carlo)方法就是解决这一问题的
马尔科夫链蒙特卡洛方法被评为二十世纪的十大算法之一

下面介绍原版算法的改进算法:Metropolis-Hastings算法:
Metropolis-Hastings算法是一种马尔科夫蒙特卡洛(MCMC)方法,用于在难以直接采样时从某一概率分布中抽取随机样本序列。得到的序列可用于估计该概率分布或计算积分(如期望值)等。Metropolis-Hastings算法一般用于从多变量(尤其是高维)分布中采样
主要使用如下定理:

细致平稳条件的直观理解:开始位于状态i,从状态i跳转到状态j的概率等于开始位于状态j,从状态j跳转到状态i的概率
细致平稳条件只是马尔科夫链收敛的充分条件,不是必要条件
一般而言,马氏链对应的概率转移矩阵P不满足细致平稳条件,可以构造出细致平稳条件的等式:

α(i,j)称为接受率,表示接受从状态i转移到状态j的概率

但是,α(i,j)或者α(j,i)往往很小,接受转移的概率小会使采样的次数过多,遍历马氏链所有的状态需要非常长的时间,进而导致样本收敛到平稳分布需要非常长的时间
可以把构造出的细致平稳等式两边同时放大一下,将α(i,j),α(j,i)中较大的那个扩成1,也即:

这个式子是说,当α(i,j)是较大的那一个则取1,当α(i,j)是较小的那一个则取另一个

Metropolis-Hastings算法采样流程

(from Wikipedia)
其中:
A(x’|x)即上面说的接受率α(i,j)=α(x_t+1=j|x_t=i)
g(x’|x_t)即上面说的P_ij=P((x_t+1=j|x_t=i))


每次从分布g(x’|x_t)中随机产生一个状态x’,再从Uniform(0,1)中随机产生一个数u,如果u大于接受率A(x’|x),认为t+1时刻的状态为x’,即x_(t+1)=x’
采样流程中并没有给出具体的g(x’|x_t)分布也没有给出迭代次数,这些都是自己调整的,比如可以使用高斯分布或者其他方便产生样本的分布

四.Gibbs Sampling

吉布斯采样(Gibbs Sampling)
吉布斯采样是MCMC的一种,用于获得样本序列,这个样本序列构成了马尔科夫链,每个样本之间是相关的,不是独立的!当样本构成的马氏链收敛后,马氏链的平稳分布便能拟合含有多个多变量的分布,比如近似一个很难直接采样的联合概率分布,前提是得知道每个变量的条件概率
吉布斯采样是一种随机算法(使用随机数),常用于贝叶斯推理(因为贝叶斯网络含有条件概率的集合),作为随机算法,它是用于统计推理的确定性算法(如EM算法:expectation-maximization algorithm)的一种替代方法
再回到之前Metropolis-Hastings算法,由于有接受率的存在,并不能保证每次的采样结果都被接收,所以会导致收敛前采样次数的增加,而吉布斯采样就能保证每次采样的结果可以使用.

吉布斯采样流程

注意事项:
1. 初始化的值可以随机给定,或者根据EM算法给定
2. 实际上没有必要着重处理初始值,因为一般都是直接忽略前面的样本的(叫作:burn-in period),毕竟需要跳转足够多的次数后马氏链才收敛,
3. 联合分布的参数通过将k个样本的参数平均后近似
4. 举个例子:直接忽略前1000个样本,之后每100个样本拿出一个,比如取出第1100,1200,1300,….2000个样本做平均,因为连续采出的样本不独立
5. 在采样的早期,常用模拟退火来减少随机游走行为 (i.e. the tendency to move slowly around the sample space, with a high amount of autocorrelation between samples, rather than moving around quickly, as is desired).

参考:
靳志辉,LDA数学八卦
田宝玉,信息论基础

Markov Chain Monte Carlo 和 Gibbs Sampling算法相关推荐

  1. 13 MCMC(Markov Chain Monte Carlo)

    13 MCMC(Markov Chain Monte Carlo) 0 MCMC思想 1 采样方法 1.1概率分布采样 1.2 拒绝采样(Rejection Sampling) 1.3 重要性采样(I ...

  2. Markov Chain Monte Carlo

    转载至https://zhuanlan.zhihu.com/p/25610149 [数据分析] Markov Chain Monte Carlo Markov Chain Monte Carlo简称M ...

  3. 论文辅助笔记(代码实现):Bayesian Probabilistic Matrix Factorizationusing Markov Chain Monte Carlo

    1 主要思路回顾 具体可见:论文笔记 Bayesian Probabilistic Matrix Factorizationusing Markov Chain Monte Carlo (ICML 2 ...

  4. 马尔可夫链蒙特卡罗法(Markov Chain Monte Carlo,MCMC)

    文章目录 1. 蒙特卡罗法 2. 马尔可夫链 3. 马尔可夫链蒙特卡罗法 4. Metropolis-Hastings 算法 5. 吉布斯抽样 蒙特卡罗法(Monte Carlo method),也称 ...

  5. 【ML】Markov Chain Monte Carlo(MCMC)---Slice sampler(切片采样)和Hierarchical Models(层次模型)

    导航 Slice sampler 2D slice sample General Slice Sampler Hierarchical models python Code download Refe ...

  6. 从概率论到Markov Chain Monte Carlo(MCMC)-- 转

            大学本科时代开始学习的概率论,从变着花样从箱子里取不同颜色的球计算概率,到计算各种离散或连续的随机分布期望.方差,再高深点就是利用生成函数求期望和方差,再就是估计理论,包括点估计.极大 ...

  7. R语言与Markov Chain Monte Carlo(MCMC)方法学习笔记(2)

    前面已经大致的叙述了MCMC方法.今天来分享一下R中的一个实现MCMC算法的包mcmc. mcmc包的一个核心函数就是metrop,其调用格式为: metrop(obj, initial, nbatc ...

  8. 论文笔记 Bayesian Probabilistic Matrix Factorizationusing Markov Chain Monte Carlo (ICML 2008)

    0 摘要 低秩矩阵逼近方法是协同过滤中最简单.最有效的方法之一.这类模型通常通过寻找模型参数的MAP估计来拟合数据,这一过程即使在非常大的数据集上也能有效地执行. 然而,除非正则化参数被仔细地调整,否 ...

  9. LDA-math-MCMC 和 Gibbs Sampling

    http://cos.name/2013/01/lda-math-mcmc-and-gibbs-sampling/ 3.1 随机模拟 随机模拟(或者统计模拟)方法有一个很酷的别名是蒙特卡罗方法(Mon ...

最新文章

  1. 2、事务的概念和特性
  2. ITK:从三个标量图像组成矢量
  3. OpenGL之深入解析纹理的渲染使用
  4. mysql npe问题_MySQL为Null会导致5个问题,个个致命!
  5. 云架构指挥调度平台技术方案建议书
  6. python3 数据结构_Python3数据结构
  7. 任正非:HR面试不深刻导致大规模进人、走人,耽误人家几年对得起人家吗?...
  8. [RK3399][Android7.1] Jack server编译出错
  9. 信号集 信号屏蔽字/pending的处理
  10. uC/OS-II 一些函数简介
  11. 微信开发者工具使用less
  12. 人机大战简史:AI如何在20多年中一次次赶超人类
  13. aso核心,影响ASO优化的核心问题大汇总
  14. 怎么用linux给苹果手机降级,如何将软件包降级
  15. 我的世界服务器怎么发全部消息,我的世界服务器里起床战争怎么向所有人说话...
  16. 2020暑期数学建模(数据分析)学习笔记
  17. BeanShell获取尽可能不重复18位数字
  18. MIME类型是什么?MIME类型有哪些?
  19. 原腾讯QQ技术总监、T13专家,黄希彤被“离职”,原因竟是……
  20. mysql-front 1251_mysql执行错误#1251 (mysql-front连接)解决方案

热门文章

  1. 欧姆龙PLC HostLink通讯 C-MODE格式
  2. NCN8025 TDA8035 智能卡接口IC读卡器芯片的替代解决方案
  3. linux服务器新装hba卡,EmulexHBA卡在Linux下的安装方法
  4. MTK平台替换签名key方法
  5. 小白的编程经验(二维数组推箱子游戏)
  6. java 嵌入groovy_嵌入Groovy
  7. matlab实现线性函数逼近,1基于MATLAB的科学计算—函数逼近1.doc
  8. 3D建模教程讲解!PBR场景制作破损的图书馆
  9. 纪伯伦 《先知》 孩子
  10. 反问疑问_反问疑问句的语法