HyperAIHyperAI

Command Palette

Search for a command to run...

马尔可夫链蒙塔卡罗方法 MCMC

日期

MCMC 是一种基于马尔科夫链从随机分布取样的算法,其通过在概率空间中随机采样以近似兴趣参数的后验分布。

MCMC 基础理论为马尔科夫过程,在相关算法中,为了在一个指定分布上采样,可根据马尔科夫过程,先从任意状态出发模拟这个过程,并不断进行状态转移,最终收敛到平稳分布。

整体思路是利用平稳分布替代复杂分布,并以此取样拟合最终得到复杂样本的分布。

常用 MCMC 方法:Metropolis-Hastings 采样、 Gibbs 采样

Metropolis-Hastings 采样

1:初始化马氏链初始状态 latexX_0=x_0latex {X\mathop{{}}\nolimits\_{{0}}\text{ }=\text{ }x\mathop{{}}\nolimits\_{{0}}}latexX_0=x_0

2:对 latext=0,1,2,latex {t\text{ }=\text{ }0,\text{ }1,\text{ }2,\text{ }…}latext=0,1,2, 循环以下过程进行采样

  • latextlatex {t}latext 个时刻马氏链状态为 latexX_t=x_tlatex {X\mathop{{}}\nolimits\_{{t}}\text{ }=\text{ }x\mathop{{}}\nolimits\_{{t}}}latexX_t=x_t ,采样 latexyq(xx_t)latex {y\text{ } \sim \text{ }q{ \left( {x \left| x\mathop{{}}\nolimits\_{{t}}\right. } \right) }}latexyq(xx_t)
  • 从均匀分布采样 latexuUniform[0,1]latex {u\text{ } \sim \text{ }Uniform{ \left[ {0,1} \right] }}latexuUniform[0,1]
  • 如果 latexu<α(x_t,y)=min{p(y)q(x_ty)p(x_t)p(yx_t),1}latex {u\text{ } < \text{ } \alpha { \left( {x\mathop{{}}\nolimits\_{{t}},y} \right) }\text{ }=\text{ }min{ \left\{ {\frac{{p{ \left( {y} \right) }q{ \left( {x\mathop{{}}\nolimits\_{{t}} \left| y\right. } \right) }}}{{p{ \left( {x\mathop{{}}\nolimits\_{{t}}} \right) }p{ \left( {y \left| x\mathop{{}}\nolimits\_{{t}}\right. } \right) }}},1} \right\} }}latexu<α(x_t,y)=min{p(x_t)p(yx_t)p(y)q(x_ty),1} 则接受转移 latexx_tylatex {x\mathop{{}}\nolimits\_{{t}}\text{ } \to \text{ }y}latexx_ty ,即 latexX_t+1=ylatex {X\mathop{{}}\nolimits\_{{t+1}}\text{ }=\text{ }y}latexX_t+1=y
  • 否则不接受转移,即 latexX_t+1=x_tlatex {X\mathop{{}}\nolimits\_{{t+1}}\text{ }=\text{ }x\mathop{{}}\nolimits\_{{t}}}latexX_t+1=x_t

Gibbs 采样

1:随机初始化 latexX_0=x_0,Y_0=y_0latex {X\mathop{{}}\nolimits\_{{0}}\text{ }=\text{ }x\mathop{{}}\nolimits\_{{0}},\text{ }Y\mathop{{}}\nolimits\_{{0}}\text{ }=\text{ }y\mathop{{}}\nolimits\_{{0}}}latexX_0=x_0,Y_0=y_0

2:对 latext=0,1,2,latex {t\text{ }=\text{ }0,\text{ }1,\text{ }2,\text{ }…}latext=0,1,2, 循环采样

  • latexy_t+1p(yx_t)latex {y\mathop{{}}\nolimits\_{{t+1}}\text{ } \sim \text{ }p{ \left( {y \left| x\mathop{{}}\nolimits\_{{t}}\right. } \right) }}latexy_t+1p(yx_t)
  • latexx_t+1p(xy_t+1)latex {x\mathop{{}}\nolimits\_{{t+1}}\text{ } \sim \text{ }p{ \left( {x \left| y\mathop{{}}\nolimits\_{{t+1}}\right. } \right) }}latexx_t+1p(xy_t+1)

参考来源

【1】MCMC 入门指南

【2】马尔可夫链蒙特卡罗方法简析

用 AI 构建 AI

从创意到上线——通过免费 AI 协同编码、开箱即用的环境和最优惠的 GPU 价格,加速您的 AI 开发。

AI 协同编码
开箱即用的 GPU
最优定价

HyperAI Newsletters

订阅我们的最新资讯
我们会在北京时间 每周一的上午九点 向您的邮箱投递本周内的最新更新
邮件发送服务由 MailChimp 提供