Monte Carlo 方法也即随机模拟方法的别称,它的基本原理是:当求解随机事件方式的概率或随机变量的数学期望时,通过设计某种实验,得出某个特定事件发生的频率,使用这个频率来近似表示这一事件发生的概率,从而得到问题的数值解。 可以看出,Monte Carlo 方法包含三个核心问题:构造概率过程、从已知概率分布中抽样、建立估计量。
大数定律
首先我们讨论下概率与频率的关系问题。独立地重复一个成功概率为 p p 的 Bernoulli 试验,用 表示前 n n 次试验成功的次数,那么 是前 n n 次试验成功的频率,也是一个随机变量,这个频率在某种意义下收敛于成功概率 ,即大数定律。
Bernoulli 定理: 对任何 ϵ>0 ϵ > 0 ,有
大数定律说明当样本很大时,不确定性就消失了。Monte Carlo 方法是大数定律的直接结果。
静态 Monte Carlo 方法
如果我们要算一个单位方块 Ω Ω 内任意区域 D D 的面积,我们重复地做随机试验:在 上任取一点,用 ξn ξ n 表示第 n n 次取点落在 中这个时间的指标,那么 D D 的面积 ,其中 p=P(ξn=1) p = P ( ξ n = 1 ) ,这里 p p 是未知数,用大数定律,我们可以用频率来估计它,这样就可以得到 的面积近似值。这就是一种简单的静态 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
和 服从
[0,1]
[
0
,
1
]
上的均匀分布,且相互独立,则二位均匀分布
(X,Y)
(
X
,
Y
)
的联合概率密度为:
总结一下,具体做法如下:
- 产生服从 上均匀分布的随机数;
- 模拟试验,考察 n n 次投点试验,记录时间 发生的概率,用来近似表示其发生的概率,即得到积分值 ∫10g(x)dx ∫ 0 1 g ( x ) d x 。
期望法
我们依然用上一小节的例子来说明。
假设随机变量 X X 服从 上的均匀分布,那么 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 是独立同分布的随机变量序列,则 1n∑ni=1Xi 1 n ∑ i = 1 n X i 依概率收敛到 E[Xi] E [ X i ] ,也就是说可用 g(x) g ( x ) 的观察值的均值估计 g(X) g ( X ) 的期望值。具体做法如下:- 产生服从 [0,1] [ 0 , 1 ] 上均匀分布的随机数 xi x i ;
- 对每个 xi x i 计算 g(xi) g ( x i ) ,即可得到积分 ∫10g(x)dx ∫ 0 1 g ( x ) d x 的估计值 1n∑ni=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=⎛⎝⎜⎜⎜⎜⎜p11p21⋮pN1p12p22⋮pN2……⋱…p1Np2N⋮pNN⎞⎠⎟⎟⎟⎟⎟ 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=limn→∞pnij π j = lim n → ∞ p i j n其中 πj π j 表示长时间运行后状态 j j 出现的时间比例,称为平稳概率。令 ,那么 πj π j 是满足下列线性方程组的唯一解:
π∑j=1Nπj=πP=1 π = π P ∑ j = 1 N π j = 1第一个方程表示 Markov 链处于状态 j j 的时间所占的比例等于 Markov 链从状态 转移到状态 j j 所占的比例对 求和;第二个方程表示 Markov 链处于状态 j j 的时间所占的比例对 求和为 1 1 。这个定理说明当 Markov 链运行足够长时间后的分布(极限分布)和初始分布无关。同时,从任意时刻开始以相反方向考察系统的变化情况,仍是一个转移概率为 的Markov 链。其次,Markov链还有如下性质:假设 {Xn,n=0,1,2,…} { X n , n = 0 , 1 , 2 , … } 为一平稳分布为 π π 的遍历的Markov链,则 Xn X n 依分布收敛到分布为 π π 的随机变量 X X ,且对任意函数 当 Eπ[g(X)] E π [ g ( X ) ] 存在且 n→∞ n → ∞ 时,有
g¯n=1n∑i=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 相对于平稳分布 是平方可积,则有
n−−√f¯n−Eπ[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算法的原理此处暂时省略,这里只给出关键步骤。
- 构造合适的建议分布 g(⋅|Xt) g ( ⋅ | X t ) ,并产生服从该分布的 X0 X 0 。
- 从
g(⋅|Xt)
g
(
⋅
|
X
t
)
中产生
Y
Y
,从 中产生
U
U
,若 则接受 Y Y 并令 ,否则令 Xt+1=Xt X t + 1 = X t 。
- 重复步骤 2 中的过程直至Markov链达到平稳状态。
Gibbs 抽样
Gibbs抽样是M-H算法的一个特例,它将高维问题转化为一维问题。Gibbs抽样方法的重要特点是分别逐一对每个分类进行抽取。在对每个分量进行抽取时,是对其它所有分量的条件分布进行抽样的。
这里也暂时仅介绍其关键步骤,以二维分布 (X1,X2) ( X 1 , X 2 ) 为例:
- 令 (x1,x2)=X(t−1) ( x 1 , x 2 ) = X ( t − 1 ) ;
- 从 f(x1|x2) f ( x 1 | x 2 ) 中产生候选点 X∗1(t) X 1 ∗ ( t ) ,更新 x1=X∗1(t) x 1 = X 1 ∗ ( t ) ;
- 从 f(x2|x1) f ( x 2 | x 1 ) 中产生候选点 X∗2(t) X 2 ∗ ( t ) ,更新 x2=X∗2(t) x 2 = X 2 ∗ ( t ) ;
- 令 X(t)=(X∗1(t),X∗2(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方法来解决。具体做法此处暂时不做详细介绍,敬请期待。