生成模型笔记(四):MCMC和Gibbs Sampling

人一能之己百之,人十能之己千之。果能此道矣。虽愚必明,虽柔必强。

本笔记仅为自己学习记录所用,参考的其他作者的内容见文中链接。如有不便,可以私信删除。

2.4 Markov Chain Monte Carlo(MCMC)和 Gibbs Sampling

参考内容

https://cosx.org/2013/01/lda-math-mcmc-and-gibbs-sampling

这个部分可以直接参考以上链接,这里只是链接内容的剪报做的记录。

2.4.1 随机模拟

随机模拟(统计模拟)又称作蒙特卡罗方法。蒙特卡洛是摩纳哥公国的一个城市,以赌博而闻名。蒙特卡罗方法的发展始于 20 世纪 40 年代,和原子弹制造的曼哈顿计划密切相关,当时的几个大牛,包括乌拉姆、冯. 诺依曼、费米、费曼、Nicholas Metropolis,在美国洛斯阿拉莫斯国家实验室研究裂变物质的中子连锁反应的时候,开始使用统计模拟的方法, 并在最早的计算机上进行编程实现。

现代的统计模拟方法最早由数学家乌拉姆提出,被 Metropolis 命名为蒙特卡罗方法。说起蒙特卡罗方法的源头,可以追溯到 18 世纪,布丰当年用于计算π的著名的投针实验就是蒙特卡罗模拟实验。

统计模拟中一个重要的问题就是给定一个分布 p ( x ) p(x) p(x) ,如何在计算机中生成它的样本。一般而言均匀分布 U n i f o r m ( 0 , 1 ) Uniform(0,1) Uniform(0,1) 的样本比较容易生成。通过线性同余发生器可以生成 [ 0 , 1 ] [0,1] [0,1] 的伪随机数。

常见的概率分布,无论连续还是离散的分布,都可以基于 U n i f o r m ( 0 , 1 ) Uniform(0,1) Uniform(0,1) 的样本生成。比如正态分布可以通过Box-Muller变换得到:

在这里插入图片描述

其它几个著名的连续分布,包括指数分布,Gamma分布,T分布,F分布,Beta分布等,也都可以通过类似的数学变换得到。

p ( x ) p(x) p(x) 的形式很复杂或者是高维的分布的时候,生成样本就会很困难。比如:

  • p ( x ) = p ~ ( x ) ∫ p ~ ( x ) d x p(x) = \frac{\tilde{p}(x)}{\int \tilde{p}(x)dx} p(x)=p~(x)dxp~(x) ,这个形式就像之前见过的贝叶斯公式一样。积分无法显式计算。
  • p ( x , y ) p(x,y) p(x,y) 是一个二维的分布函数,这个函数本身计算很困难,但是条件分布计算相对简单。

此时就需要使用更加复杂的随机模拟方法来生成样本。比如MCMC和Gibbs Sampling。要了解这两个算法,需要对Markov Chain的平稳分布的性质有基本的认识。

2.4.2 Markov Chain及其平稳分布

Markov Chain之前已经出现很多次了,定义比较简单:
P ( X t + 1 = x ∣ X t , X t − 1 , . . . ) = P ( X t + 1 = x ∣ X t ) P(X_{t+1}=x|X_t, X_{t-1},...) = P(X_{t+1}=x | X_t) P(Xt+1=xXt,Xt1,...)=P(Xt+1=xXt)
也就是状态转移的概率只依赖于前一个状态。

下面看一个Markov Chain的具体的例子:
社会学家经常把人按其经济状况分成 3 类:下层 (lower-class)、中层 (middle-class)、上层 (upper-class),我们用 1、2、3 分别代表这三个阶层。如果一个人的收入属于下层类别,那么他的孩子属于下层收入的概率是 0.65,属于中层收入的概率是 0.28,属于上层收入的概率是 0.07。从父代到子代,收入阶层的变化的转移概率如下。

在这里插入图片描述

在这里插入图片描述

用矩阵表示如下:
P = [ 0.65 0.28 0.07 0.15 0.67 0.18 0.12 0.36 0.52 ] P = \begin{bmatrix} 0.65 & 0.28 & 0.07 \\ 0.15 & 0.67 & 0.18 \\ 0.12 & 0.36 & 0.52 \\ \end{bmatrix} P=0.650.150.120.280.670.360.070.180.52
可以看出矩阵每一行的和为1

假设当前一代人处在三种阶层的比例是概率分布向量 π 0 = [ π 0 ( 1 ) , π 0 ( 2 ) , π 0 ( 3 ) ] \pi_0 = [\pi_0(1), \pi_0(2), \pi_0(3)] π0=[π0(1),π0(2),π0(3)] ,那么他们的子代的分布比例将是 π 1 = π 0 P \pi_1 = \pi_0P π1=π0P ,第n代子孙的收入分布比例将是 π n = π n − 1 P = π 0 P n \pi_n = \pi_{n-1}P = \pi_0P^n πn=πn1P=π0Pn

随机取初始概率分布 π 0 = [ 0.21 , 0.68 , 0.11 ] \pi_0 = [0.21, 0.68, 0.11] π0=[0.21,0.68,0.11] ,计算n代子孙收入比例:

在这里插入图片描述

换成另外一组初始概率分布 π 0 = [ 0.75 , 0.15 , 0.1 ] \pi_0 = [0.75, 0.15, 0.1] π0=[0.75,0.15,0.1]

在这里插入图片描述

可以看出,不同的初始概率分布,最后会收敛到同样的分布上。也就是说收敛的行为与初始概率无关。那么收敛行为主要是由概率转移矩阵P决定的。

在这里插入图片描述

当n足够大时,这个矩阵的每一行都是稳定的收敛到 π = [ 0.286 , 0.489 , 0.225 ] \pi = [0.286,0.489,0.225] π=[0.286,0.489,0.225] 。这个收敛现象并非是这个特例独有的,而是绝大多数Markov Chain的共同行为。

在这里插入图片描述

这个Markov Chain收敛定理是所有的MCMC方法的理论基础。

在这里插入图片描述

2.4.3 MCMC

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值