Monte Carlo 方法与 MCMC 简介

本文介绍了蒙特卡洛方法的基本原理及其在数值积分中的应用。包括静态蒙特卡洛方法中的频率法和期望法,以及适用于高维问题的动态蒙特卡洛方法(MCMC)。此外还详细讲解了MCMC中的Metropolis-Hastings算法、Gibbs抽样和贝叶斯MCMC估计。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Monte Carlo 方法也即随机模拟方法的别称,它的基本原理是:当求解随机事件方式的概率或随机变量的数学期望时,通过设计某种实验,得出某个特定事件发生的频率,使用这个频率来近似表示这一事件发生的概率,从而得到问题的数值解。 可以看出,Monte Carlo 方法包含三个核心问题:构造概率过程从已知概率分布中抽样建立估计量

大数定律

首先我们讨论下概率与频率的关系问题。独立地重复一个成功概率为 p p Bernoulli 试验,用 ξn 表示前 n n 次试验成功的次数,那么 ξnn 是前 n n 次试验成功的频率,也是一个随机变量,这个频率在某种意义下收敛于成功概率 p,即大数定律。

Bernoulli 定理: 对任何 ϵ>0 ϵ > 0 ,有

limnP(ξnnp>ϵ)=0 lim n P ( | ξ n n − p | > ϵ ) = 0

大数定律说明当样本很大时,不确定性就消失了。Monte Carlo 方法是大数定律的直接结果。

静态 Monte Carlo 方法

如果我们要算一个单位方块 Ω Ω 内任意区域 D D 的面积,我们重复地做随机试验:在 Ω 上任取一点,用 ξn ξ n 表示第 n n 次取点落在 D 中这个时间的指标,那么 D D 的面积 |D|=p|Ω|,其中 p=P(ξn=1) p = P ( ξ n = 1 ) ,这里 p p 是未知数,用大数定律,我们可以用频率来估计它,这样就可以得到 D 的面积近似值。这就是一种简单的静态 Monte Carlo 方法的案例。

静态 Monte Carlo 方法通过构造独立同分布的随机数来计算积分,有频率法和期望法两种。

频率法

举个例子说明:计算任意定义域为 [0,1] [ 0 , 1 ] 的函数 g(x) g ( x ) 在区间 [0,1] [ 0 , 1 ] 上的积分 10g(x)dx ∫ 0 1 g ( x ) d x

假设随机变量 X X Y 服从 [0,1] [ 0 , 1 ] 上的均匀分布,且相互独立,则二位均匀分布 (X,Y) ( X , Y ) 的联合概率密度为:

f(x,y)={1,0<x<1,0<y<10,otherwise f ( x , y ) = { 1 , 0 < x < 1 , 0 < y < 1 0 , otherwise
现用 B B 表示事件 {w:Yg(x)},也即我们向矩形区域 [0,1]×[0,1] [ 0 , 1 ] × [ 0 , 1 ] 随机投点,其中点落在以 [0,1] [ 0 , 1 ] 为底,以函数 g(x) g ( x ) 为曲边的曲边梯形内。那么事件 B B 发生的概率为:
P(B)=Yg(x)f(x,y)dxdy=01[0g(x)1dy]dx=01g(x)dx
可以看出,积分的计算转化为求事件 B B 发生的概率。由大数定律可知,可重复试验中事件 B 发生的频率近似表示事件 B B 发生的概率。

总结一下,具体做法如下:

  1. 产生服从 [0,1] 上均匀分布的随机数;
    • 模拟试验,考察 n n 次投点试验,记录时间 B 发生的概率,用来近似表示其发生的概率,即得到积分值 10g(x)dx ∫ 0 1 g ( x ) d x
    • 期望法

      我们依然用上一小节的例子来说明。

      假设随机变量 X X 服从 [0,1] 上的均匀分布,那么 Y=g(X) Y = g ( X ) 的期望为:

      E[Y]=E[g(X)]=10g(x)dx E [ Y ] = E [ g ( X ) ] = ∫ 0 1 g ( x ) d x
      也就是说,积分的计算转化为计算 g(X) g ( X ) 的数学期望值。由大数定律可知,若 Xn X n 是独立同分布的随机变量序列,则 1nni=1Xi 1 n ∑ i = 1 n X i 依概率收敛到 E[Xi] E [ X i ] ,也就是说可用 g(x) g ( x ) 的观察值的均值估计 g(X) g ( X ) 的期望值。具体做法如下:

      1. 产生服从 [0,1] [ 0 , 1 ] 上均匀分布的随机数 xi x i
      2. 对每个 xi x i 计算 g(xi) g ( x i ) ,即可得到积分 10g(x)dx ∫ 0 1 g ( x ) d x 的估计值 1nni=1Xi 1 n ∑ i = 1 n X i

      动态 Monte Carlo 方法(MCMC)

      维数非常高的情况下,由于计算量太大,使用静态 Monte Carlo 方法处理速度太慢。动态 Monte Carlo 即 Markov Chain Monte Carlo 方法 (简称 MCMC)主要用于对维度非常高的随机向量取样。

      MCMC 方法首先建立一个 Markov 链,使得其极限分布平稳分布。从目标分布中产生随机样本,就是从达到平稳状态的 Markov 链中产生样本路径。一个好的 Markov 链应满足从任意位置出发都能快速达到平稳分布这一性质。MCMC的理论依据是几个极限定理,下面简要介绍。

      遍历的 Markov 链(即不可约、正常返、非周期)的极限分布是平稳分布且是唯一平稳分布。考虑一个状态空间为 S={1,2,,N} S = { 1 , 2 , … , N } 的Markov链,记其转移概率为

      P=p11p21pN1p12p22pN2p1Np2NpNN P = ( p 11 p 12 … p 1 N p 21 p 22 … p 2 N ⋮ ⋮ ⋱ ⋮ p N 1 p N 2 … p N N )
      对于遍历Markov链,极限分布为
      πj=limnpnij π j = lim n → ∞ p i j n
      其中 πj π j 表示长时间运行后状态 j j 出现的时间比例,称为平稳概率。令 π=(π1,π2,,πN) ,那么 πj π j 是满足下列线性方程组的唯一解:
      πj=1Nπj=πP=1 π = π P ∑ j = 1 N π j = 1
      第一个方程表示 Markov 链处于状态 j j 的时间所占的比例等于 Markov 链从状态 i 转移到状态 j j 所占的比例对 i 求和;第二个方程表示 Markov 链处于状态 j j 的时间所占的比例对 j 求和为 1 1 。这个定理说明当 Markov 链运行足够长时间后的分布(极限分布)和初始分布无关。同时,从任意时刻开始以相反方向考察系统的变化情况,仍是一个转移概率为 P 的Markov 链。其次,Markov链还有如下性质:假设 {Xn,n=0,1,2,} { X n , n = 0 , 1 , 2 , … } 为一平稳分布为 π π 的遍历的Markov链,则 Xn X n 依分布收敛到分布为 π π 的随机变量 X X ,且对任意函数 g Eπ[g(X)] E π [ g ( X ) ] 存在且 n n → ∞ 时,有
      g¯n=1ni=1ng(Xi)Eπ[g(X)] g ¯ n = 1 n ∑ i = 1 n g ( X i ) → E π [ g ( X ) ]
      换句话说, Markov链的实值函数的遍历均值几乎处处收敛到极限分布下的均值。若一个Markov链是一致几何遍历(转移速度以速度 λt(0<λ<1) λ t ( 0 < λ < 1 ) 收敛)的,并且 f f 相对于平稳分布 π 是平方可积,则有
      nf¯nEπ[f(x)]ΓN(0,1),n n f ¯ n − E π [ f ( x ) ] Γ → N ( 0 , 1 ) , n → ∞
      这说明 Markov链的遍历均值做合适的变化后依分布收敛到标准正态分布

      综上,我们可建立一个以 π π 为平稳分布的Markov链,则在运行此链足够长时间后,该Markov链会达到平稳状态。此时Markov链的值就相当于从分布 π π 中抽取的样本。

      Metropolis-Hastings 算法

      MCMC方法的重点在于构造合适的Markov链,Metropolis-Hastings 算法(简称 M-H算法)就是构造一个给定概率分布作为极限分布的 Markov 链的方法。

      M-H算法的原理此处暂时省略,这里只给出关键步骤。

      1. 构造合适的建议分布 g(|Xt) g ( ⋅ | X t ) ,并产生服从该分布的 X0 X 0
      2. g(|Xt) g ( ⋅ | X t ) 中产生 Y Y ,从 U(0,1) 中产生 U U ,若
        Uf(Y)g(Xt|Y)f(Xt)g(Y|Xt)
        则接受 Y Y 并令 Xt+1=Y,否则令 Xt+1=Xt X t + 1 = X t
      3. 重复步骤 2 中的过程直至Markov链达到平稳状态。

      Gibbs 抽样

      Gibbs抽样是M-H算法的一个特例,它将高维问题转化为一维问题。Gibbs抽样方法的重要特点是分别逐一对每个分类进行抽取。在对每个分量进行抽取时,是对其它所有分量的条件分布进行抽样的。

      这里也暂时仅介绍其关键步骤,以二维分布 (X1,X2) ( X 1 , X 2 ) 为例:

      1. (x1,x2)=X(t1) ( x 1 , x 2 ) = X ( t − 1 )
      2. f(x1|x2) f ( x 1 | x 2 ) 中产生候选点 X1(t) X 1 ∗ ( t ) ,更新 x1=X1(t) x 1 = X 1 ∗ ( t )
      3. f(x2|x1) f ( x 2 | x 1 ) 中产生候选点 X2(t) X 2 ∗ ( t ) ,更新 x2=X2(t) x 2 = X 2 ∗ ( t )
      4. X(t)=(X1(t),X2(t)) X ( t ) = ( X 1 ∗ ( t ) , X 2 ∗ ( t ) )

      贝叶斯 MCMC 估计

      应用贝叶斯方法分析问题的时候,一个主要的困难是得到的后验分布需要进行高维积分函数计算,通常高维积分的计算非常困难且耗时。MCMC方法是一种避免直接进行高纬积分计算的方法。

      假设 p(y|θ) p ( y | θ ) 为抽样概率密度函数,其中 θ θ 是待估计未知参数向量。设未知参数的先验概率密度函数为 π(θ) π ( θ ) ,则后验概率密度为

      π(θ|y)=p(y|θ)π(θ)Θp(y|θ)π(θ)dθ π ( θ | y ) = p ( y | θ ) π ( θ ) ∫ Θ p ( y | θ ) π ( θ ) d θ
      实际问题中上述后验密度通常是比较复杂的未知形式。这些困难可以使用MCMC方法来解决。具体做法此处暂时不做详细介绍,敬请期待。

添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值