MCMC与Gibbs采样

一、均匀随机数生成算法

  1. 平方取中法
    将2s位十进制数字x_n平方后取中间的2s位数字:
    \begin{split} x_{n+1}=\frac{x_n^2}{10^s}\mod{10^{2s}} \\ r_n=\frac{x_n}{10^{2s}} \sim Uniform(0,1) \end{split}
    但其长度较短且均匀性较差,针对性的改进方法是乘积取中法:
    \begin{split} x_{n+2}=\frac{x_{n+1}x_n}{10^s}\mod{10^{2s}} \\ r_n=\frac{x_n}{10^{2s}} \sim Uniform(0,1) \end{split}
    但是随机数长度仍然不够,且对初值依赖比较大。
  2. 移位法
    x_{n+1}=x_n2^7+x_n2^{-7} \mod{2^{32}}
  3. 混合线性同余法
    \begin{split} x_{n+1}=\lambda x_n+c \mod{M} \\ r_n=\frac{x_n}{M} \sim Uniform(0,1) \end{split}
    周期达到M的充要条件为:
    \begin{split} &1) c与M互素 \\ &2) \lambda-1为M的每一个素因子p的倍数 \\ &3) 若M为4的倍数,则\lambda-1为4的倍数 \end{split}
  4. Box-Muller变换
    如果相互独立的两个随机变量U_1,U_2\sim Uniform(0,1),则满足Z_0=\sqrt{-2\ln{U_1}}\cos(2 \pi U_2) \\ Z_1=\sqrt{-2\ln{U_1}}\sin(2 \pi U_2)的Z_0,Z_1\sim N(0,1)
    其他一些分布的随机数生成方法亦可以通过类似的变换得到。

二、markov链

  • 马尔科夫性
    下一个状态只依赖于当前状态,而与之前所有状态无关
    P(X_{t+1}=x|X_t, X_{t-1}, \cdots) =P(X_{t+1}=x|X_t)
  • 马氏定理
    对于非周期且任意两点连通的马氏链,其概率转移矩阵P=P[P_{ij}]的极限式子\lim_{n\to\infty}P_{ij}^n=\pi(j)存在,其中\pi称为马氏链的平稳分布,并有
    \begin{split} &1. \qquad \lim_{n \rightarrow \infty} P^n =\begin{bmatrix} \pi(1) & \pi(2) & \cdots & \pi(j) & \cdots \\ \pi(1) & \pi(2) & \cdots & \pi(j) & \cdots \\ \cdots & \cdots & \cdots & \cdots & \cdots \\ \pi(1) & \pi(2) & \cdots & \pi(j) & \cdots \\ \cdots & \cdots & \cdots & \cdots & \cdots \\ \end{bmatrix} \\ &2. \qquad \pi(j) = \sum_{i=0}^{\infty}\pi(i)P_{ij} \\ &3. \qquad \pi是\pi P=\pi的唯一非负解 \end{split}
  • 细致平稳条件
    如果非周期马氏链的转移矩阵P和分布\pi(x)满足
    \pi(i)P_{ij} = \pi(j)P_{ji} \quad\quad \text{for all} \quad i,j则\pi(x)是马氏链的平稳分布,上式被称为细致平稳条件 (detailed balance condition)。

三、MCMC(Markov Chain Monte Carlo)

设随机变量X \sim p(x),将markov链的状态空间看做随机变量X的所有可能取值。
因为,当马氏链转移步数足够大时,状态分布将收敛到平稳分布。
所以,如果能构造一个转移矩阵为P的马氏链,使其平稳分布恰好等于随机变量的概率分布,则可依次生成符合该分布的样本(即每一步的状态值)。
假设已经有一个转移矩阵P,通常p(i)P_{ij} \neq p(j)P_{ji},我们构造\alpha_{ij}=p(j)P_{ji},则有
p(i)P_{ij}\alpha_{ij} = p(j)P_{ji}\alpha_{ji}从而,令Q_{ij}=P_{ij}p(j)P_{ji}为状态转移矩阵即可。

MCMC采样算法

因为\alpha总是小于1,算法速度比较慢,我们可以令\alpha_{ij}= \min\left\{\frac{p(j)P_{ji}}{p(i)P_{ij}},1\right\}来改善算法速度,这个算法称为Metropolis-Hastings算法。

Metropolis-Hastings算法

四、Gibbs Sampling

初始转移矩阵P可以人为指定,故而存在改进空间。
对于高纬空间,\alpha的存在也使得采样算法效率不高。
考察x坐标相同的两个点A(x_1,y_1),B(x_1,y_2),我们发现:
\begin{split} p(x_1,y_1)p(y_2|x_1)=p(x_1)p(y_1|x_1)p(y_2|x_1) \\ p(x_1,y_2)p(y_1|x_1)=p(x_1)p(y_2|x_1)p(y_1|x_1) \end{split}从而有p(x_1,y_1)p(y_2|x_1)=p(x_1,y_2)p(y_1|x_1)即p(A)p(y_2|x_1)=p(B)p(y_1|x_1)

于是我们可以如下构造平面上任意两点之间的转移概率矩阵Q:
\begin{align*} Q(A\rightarrow B) & = p(y_B|x_1) & \text{如果} \quad x_A=x_B=x_1 & \\ Q(A\rightarrow C) & = p(x_C|y_1) & \text{如果} \quad y_A=y_C=y_1 & \\ Q(A\rightarrow D) & = 0 & \text{其它} & \end{align*}
从而有如下采样算法:

二维gibbs采样算法

对于多维情况,只需令
\vec{x}
为多维向量,则
p(\vec{x_1},y_1)p(y_2|\vec{x_1})=p(\vec{x_1},y_2)p(y_1|\vec{x_1})
,即每次只需沿着一个维度的方向转移,其他非维度方向转移概率均为零:
n维Gibbs采样算法

参考文章

  1. 伪_随机数发生器及其应用
  2. 伪随机数生成算法及比较
  3. LDA-math-MCMC 和 Gibbs Sampling
最后编辑于 :
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • MCMC和Gibbs Sampling 1.随机模拟 随机模拟又名蒙特卡罗方法,蒙特卡罗方法的源头就是当年用...
    wlj1107阅读 6,635评论 3赞 6
  • 本文主要摘抄整理自Rickjin的《LDA数学八卦》 统计模拟中一个很重要的问题就是给定一个概率分布$p(x)$,...
    iV0id阅读 543评论 0赞 1
  • 原文传送门:也谈MCMC方法与Gibbs抽样 MCMC,即传说中的Markov Chain Mento Carlo...
    willheng阅读 11,249评论 2赞 14
  • 背景 贝叶斯统计推断是一个非常艺术的东西,他的先验结果(prior knowledge)是一种专家的经验,而贝叶斯...
    大仙Dylon阅读 17,176评论 5赞 6
  • 今天要祝一个人生日快乐。 一个女人。 一个美丽又可爱的女人。 我本很早之前就记得这件事情,却在今天早上起床的时候忘...
    萧灿同學阅读 601评论 0赞 0

友情链接更多精彩内容