本文主要介绍了马尔可夫链蒙特卡罗方法(MCMC),主要是Metropolis方法、Hasting方法和Gibbs方法。介绍了这些算法的基本步骤,同时利用马尔可夫链的收敛性,讨论了算法的误差,并对算法进行改进。最后,给出了极限性质一些简单的应用。本文主要分为六部分:第一部分介绍了马尔可夫链的性质。第二部分主要介绍了Metropolis-Hasting (M-H)算法及推广,介绍了两种特殊的MCMC算法,即Metropolis算法和Hasting算法以及算法的实现过程。第三部分介绍了建议概率分布的改进,降低了误差,提高了收敛性。第四部介绍了Gibbs算法以及贝叶斯模型。第五部分给出了实例与应用,同时在众多方法中找到一个合适的实施方法。最后一部分,也就是第六部分进行了总结。 This paper mainly introduces the Markov Chain Monte Carlo Method (MCMC), which is mainly the Metropolis method, Hasting method and Gibbs method. The basic steps of these algorithms are in-troduced. At the same time, the convergence of Markov chain is used, the error of the algorithm is discussed, and the algorithm is improved. Finally, some simple applications of the limit properties are given. This paper is divided into six parts: The first part introduces the nature of the Markov chain. The second part introduces the Metropolis-Hasting (M-H) algorithm and promotion, and in-troduces two special MCMC algorithms, namely Metropolis algorithm and Hasting algorithm and algorithm implementation process. The third part introduces the improvement of the proposed probability distribution, which reduces the error and improves the convergence. The fourth part introduces the Gibbs algorithm and the Bayesian model. The fifth part gives examples and appli-cations, and finds a suitable implementation method among many methods. The last part, the sixth part, is summarized.
孙玫
上海财经大学,上海
收稿日期:2018年11月24日;录用日期:2018年12月20日;发布日期:2018年12月27日
本文主要介绍了马尔可夫链蒙特卡罗方法(MCMC),主要是Metropolis方法、Hasting方法和Gibbs方法。介绍了这些算法的基本步骤,同时利用马尔可夫链的收敛性,讨论了算法的误差,并对算法进行改进。最后,给出了极限性质一些简单的应用。本文主要分为六部分:第一部分介绍了马尔可夫链的性质。第二部分主要介绍了Metropolis-Hasting (M-H)算法及推广,介绍了两种特殊的MCMC算法,即Metropolis算法和Hasting算法以及算法的实现过程。第三部分介绍了建议概率分布的改进,降低了误差,提高了收敛性。第四部介绍了Gibbs算法以及贝叶斯模型。第五部分给出了实例与应用,同时在众多方法中找到一个合适的实施方法。最后一部分,也就是第六部分进行了总结。
关键词 :MCMC,Metropolis算法,Hasting算法,Gibbs算法,收敛性
Copyright © 2018 by author and beplay安卓登录
This work is licensed under the Creative Commons Attribution International License (CC BY).
http://creativecommons.org/licenses/by/4.0/
在统计学中,经常会遇到高维积分的计算问题,而使用传统的数值方法往往很难解决实际问题。随着计算技术的提高,随机模拟的方法为解决这些高维积分问题提供了一个很好的思路。
马尔可夫链蒙特卡罗(Markov Chain Monte Carlo, MCMC)方法的理论框架来源于Metropolis (1953)和Hasting (1970) [
这一算法已经在诸多领域进行推广以及改进,例如:应用统计学、金融学、计量经济学、计算物理学等领域。
在过去的几十年里,MCMC方法将复杂的多元问题简单化已经引起了许多人的注意。首先,在1953年,Metropolis,Rosenbluth,Teller [
马尔可夫链理论是研究马尔可夫链蒙特卡罗方法的基础,为此先给出马尔可夫链的定义及基本性质。
如果对于任意时刻t,条件概率满足
P ( X t + 1 = x t + 1 | X t = x t , ⋯ , X 1 = x 1 , X 0 = x 0 ) = P ( X t + 1 = x t + 1 | X t = x t )
则称此性质为马尔可夫性,若右式与t无关,则称X为时齐的。
引入记号:
p ( x , y ) 为过程从状态x转移到状态y的概率,称为一步转移概率; p n ( x , y ) 为过程从状态x经过n步转移后到达状态y的概率,称为n步转移概率。
给定状态序列 x 0 , x 1 , ⋯ , x 1 , ⋯ ,状态空间S,为了简便书写,记 X t + 1 = y ,
其中, p (x, y) ≥ 0 (x, y∈S ) , ∑ y ∈ S p ( x , y ) = 1 ,称此矩阵为一步转移概率矩阵。
文中讨论的马尔可夫链都是时齐的有限马尔可夫链。
令 τ y = inf { n ≥ 1 : X n = y } ,则 τ y 是一个停时,称之为状态y的首中时,记
f n ( x , y ) ≜ P x ( τ y = n ) , n ≥ 1
f ( x , y ) ≜ ∑ n ≥ 1 f n ( x , y ) = P x ( τ y < ∞ )
1) 常返性。如果从状态x出发以概率1回到状态x,即
y的平均返回时间,如果平均回返时间 μ y < ∞ ,其中
则状态x是正回返状态,如果平均回返时间 μ x = ∞ ,则状态x是零回返状态。
若所有状态是暂留的,则称这个马尔可夫链是暂留的。状态x是常返的等价于 P x ( lim sup { X n = x } ) = 1 也等价于 ∑ n ≥ 1 p n ( x , x ) = ∞ 。状态x是暂留的等价于 P x ( lim sup { X n = x } ) = 0 也等价于 ∑ n ≥ 1 p n ( x , x ) < ∞ 。
如果 x , y ∈ E 是互达的,则有 x , y ∈ E 都是常返的, P x ( lim sup { X n = y } ) = 1 且 ∑ n ≥ 1 p n ( x , y ) = ∞ ;否则 x , y 都是暂留的,即 P x ( lim sup { X n = y } ) = 0 且 ∑ n ≥ 1 p n ( x , y ) < ∞ 。
2) 不可约性。如果所有状态都存在n,使得n步转移概率 p n ( x , y ) > 0 ,等价于每一个状态都可以经过有限步到达其他状态,也就是每个状态都是联通的,称这样的状态为不可约状态。有限状态的马尔可夫链是不可约的,则这个马尔可夫链是正回返的。
3) 周期性。n步转移概率 p n ( x , y ) ,状态x的周期数为 d x = GCD { n ≥ 1 : p n ( x , x ) > 0 } 。
上式中GCD{·}表示满足条件 {·} 且 n ≥ 1 的n的集合的最大公约数。若状态x的周期数 d x = 1 ,则称状态 是非周期状态;若状态x的周期数 d x > 1 ,则称状态 是周期状态。
4) 遍历性。如果状态i是正常返、不可约、非周期的,则称该状态i是遍历的。所有状态都是遍历的马尔可夫链,称为遍历的马尔可夫链。
5) 平稳分布。E上一个概率分布 ( π ( y ) : y ∈ E ) ,如果满足 Π P = Π ,即 ∑ x ∈ E π ( x ) p ( x , y ) = π ( y ) , ∀ y ∈ E ,则称 Π 为转移矩阵Ρ的平稳分布,显然有
蒙特卡罗方法是一种随机模拟的方法,也就是求解随机事件发生的概率或者随机变量的期望时,通过设计一种抽样方法,得到某一个特定事件发生的频率,然后使用这个频率来表示相应事件发生的概率。但是随着维数的增加,采样所需的样本量(或者说接受的概率)随维数增加而指数增长,导致计算量太大,速度太慢,为了克服这一问题,也就应运而生了马尔可夫链蒙特卡罗(MCMC)方法。MCMC算法通过构造Markov链的极限平稳分布来模拟计算积分,转化成从已知概率分布抽样,也就是先选择一个建议概率分布,从建议概率分布抽样产生一个候选样本值,则可以建立可操作的状态转移规则,用接受概率判断状态是否转移,重复这个过程,将产生一条马尔可夫链。其中,Markov链满足大数定律:
假设 { X n , n = 0 , 1 , ⋯ } 为一平稳分布π的遍历的Markov链,则 X n 依概率收敛到分布为π的随机变量X,且对任意函数g,满足 E [ g ( X ) ] 存在,当 n → ∞ 时,有 g ¯ n = 1 n ∑ i = 1 n g ( X i ) → P E π [ g ( X ) ] 。
如果生成的马尔可夫链是遍历的,也就是它满足正常返性、不可约性和非周期性,经过足够多的状态转移后,马尔可夫链的转移概率会趋于一个平稳分布,即事先给定的目标分布,马尔可夫链的各个状态就是随机变量的样本值,这样也就实现目标分布的随机抽样。
Metropolis算法是MCMC的核心,其实也就是改进的接受-拒绝抽样方法。接受-拒绝算法的具体步骤如下:
1) 首先选择一个容易抽样的分布作为建议概率分布,记为 g ( x ) ,接着确定一个常数C,其中 C > 1 ,使得在x的定义域上都有 f ( x ) ≤ C g ( x ) 。
2) 生成服从建议概率密度函数的 g ( x ) 的随机数y。
3) 接着生成一个服从均匀分布 U ( 0 , 1 ) 的随机数u。
4) 计算接受概率 h ( x ) = f ( x ) C g ( x ) ,如果 u < h ( y ) ,则接受y,否则继续转到第(2)步。
5) 不断重复(2)~(4)就可以生成一组服从目标分布 f ( x) 的随机数序列。
类似于拒绝–接受抽样方法,在当前状态 x t 下产生下一个状态只需在原来拒绝–接受抽样方法下作一点改变得到Metropolis算法 [
1) 首先构造建议概率分布 g ( ⋅ | x t ) ,并从建议概率分布 g ( ⋅ | x t ) ,其中 g ( y | x ) = g ( x | y ) ,产生一个随机数y作为下一个状态。
2) 接着按从均匀分布 U ( 0 , 1 ) 的随机数u,如果
3) 重复上述过程,我们就可以得到一组仅依赖于上一个随机数并且与前面随机数无关的随机序列。
4) 计算接受概率 α ( x t , y ) = f ( y ) f ( x t ) 。
显然在这里,建议概率密度函数 g ( x ) 的作用主要是转移当前的状态,也就是为每一个状态构造出一个邻域,并且下一个状态就是这个邻域中的某一个数。
Metropolis算法的应用受到了建议概率分布的对称形式的限制,因此,Hasting把建议概率分布从对称分布形式推广到一般情况,形成了Hasting算法,也称之为通用梅特罗波利斯算法,此时接受概率变为
α ( x t , y ) = min ( 1 , f ( x ) g ( x t | y ) f ( y ) g ( y | x t ) ) 。
接受概率的选择过程S. Chib和E. Greenberg (1995) [
要Metropolis算法收敛也就是证明马尔可夫链收敛到平稳分布,即证明这里的马尔可夫链具有下列三个性质。
1) q ( y | x ) 不可约和非周期,则 A ( x , y ) = q ( y | x ) α ( y , x ) 也不可约且非周期的。
2) A ( x , y ) 可逆且满足细致平衡条件。
3)
Proof. 1) 由马尔可夫链性质知,当马尔可夫链满足不可约性和非周期性,那么m步转移概率
2) 因为
f ( x ) A ( x , y ) = f ( x ) q ( y | x ) α ( y , x ) = f ( x ) q ( y | x ) min { 1 , f ( y ) / f ( x ) } = min { f ( x ) q ( y | x ) , f ( y ) q ( y | x ) } = f ( y ) q ( y | x ) min { f ( x ) / f ( y ) , 1 } = f ( y ) q ( y | x ) α ( x , y ) = f ( y ) A ( y , x )
所以 f ( x ) A ( x , y ) = f ( y ) A ( y , x ) ,即 A ( x , y ) 满足细致平衡条件,则 A ( x , y ) 可逆。
3) 根据马尔可夫链的性质知,满足细致平衡性也就确保了不变性,所以就可以达到整个马尔可夫链总体的平衡 [
f ( x ) A ( x , y ) = f (x)
在离散和连续的情况下,有
∑ x f ( x ) A ( x , y ) = ∑ x f ( y ) A ( y , x ) = f ( y ) ∑ x A ( y , x ) = f (y)
同理,
∫ f ( x ) A ( x , y ) d x = ∫ f ( y ) A ( y , x ) d x = f ( y ) ∫ A ( y , x ) d x = f ( y ) ,
所以对于不可约的概率分布 f ( y ) > 0 ,不论这个初始分布怎样变化,它最终都会趋于平稳分布 f ( y ) ,于是有, lim m → ∞ A m ( x , y ) = f ( y ) 。
由上可知,马尔可夫链满足不变性。
建议概率密度为支撑集 ( x − a , x + a ) [
由图1和图2可知,随着样本数的增加,接受概率的变化逐渐趋于稳定,此时在x在区间 [ − 1 , 1 ] 接受概率最高。同时算法的收敛性也验证了样本遵从已知概率分布,也就是,找到了合适的马尔可夫链,使得这个马尔可夫链的稳定分布也就是目标分布,并且,每一个状态的停留时间也正比于目标概率(程序见附录A)。
由于上述的Metropolis-Hasting (M-H)算法存在收敛速度慢、接受概率低、抽样效率不高、样本呈现
图1. 接受概率随样本数变化
图2. 接受概率随x变化
出一系列的相关性等问题,于是尝试改进建议概率分布,下面采用随机游走算法对建议概率分布进行改进。此时随机游走算法的分布为对称分布,这里取建议概率分布为简单随机行走分布,从 q ( y | x t ) = 1 / 2 a
中抽样的样本值记为 Zt,接受概率为 α ( X , Y ) = min ( 1 , f ( Y ) f ( X ) ) 。
那么随机游走算法就变成了:
1) 首先从建议概率分布 q ( y | x t ) 抽样产生样本值 Z t ,记候选样本值 Y t = X t + Z t 。
2) 接着按从均匀分布 U ( 0 , 1 ) 的随机数u,如果 u ≤ α ( X t , Y t ) ,则接受该建议的随机数Yt,即 X t + 1 = Y t ,否则 X t + 1 = X t 。
3) 重复上述过程,得到一组仅依赖于上一个随机数并且与前面随机数无关的
随机序列。
4) 计算接受概率 α ( X , Y ) = min ( 1 , f ( Y t ) q ( X t | Y t ) f ( X t ) q ( Y t | X t ) ) = min ( 1 , f ( Y t ) f ( X t ) ) 。
例子同上述例子,概率密度函数 f ( x ) ∝ exp { − x 2 / 2 } ,由直接抽样的变换算法抽样,样本值记为 X = ( − 2 log ( U 1 ) ) 1 / 2 cos ( 2 π U 2 ) ,选取建议概率分布 q ( y | x t ) = 1 / 2 a 通过计算得到接受概率为 α ( X , Y ) = min ( 1 , f ( Y ) f ( X ) ) = min ( 1 , exp { − Y 2 / 2 } / exp { X 2 / 2 } ) 。
结果详见图3和图4。
在这里,通过改进建议概率分布,采用了直接行走算法,这里选用最简单的随机行走均匀分布,也就是概率密度函数是完全已知的概率分布。下面,再给定初始值和随机行走因子。最终,得到了抽样效
图3. 接受概率随样本数变化
图4. 接受概率随x变化
率更高的抽样算法(程序见附录B)。
如果已知概率分布是全条件概率分布,则马尔可夫链状态转移的规则就是建立在全条件概率分布抽样基础上的,此时,使用全条件的抽样方法,使得抽样的结果满足随机性特点,同时每一步都是用全条件概率分布来构建马尔可夫链的。
Gibbs方法是将高维问题 [
f ( x j | x − j ) = f ( x j | x 1 , x 2 , ⋯ , x j − 1 , x j + 1 , ⋯ , x m ) , j = 1 , 2 , ⋯ , m
其中, x − j 表示 x 1 , x 2 , ⋯ , x j − 1 , x j + 1 , ⋯ , x m 。
Gibbs算法就是
1) 将已知的概率分布分解为多个单变量的全条件概率分布。
2) 通过对多个单变量全条件概率分布中产生候选点,从 f ( x j | x − j ) ,其中, j = 1 , 2 , ⋯ , m 中产生候选点 X j ( t ) ,更新 x j = X j ( t ) ,来实现对已知概率分布的抽样。
例子假设 X 1 , X 2 , ⋯ , X 5 [
用模拟方法估计 P { ∏ i = 1 5 X i > 120 | ∑ i = 1 5 X i = 15 } ,使用Gibbs算法。随机选择X,X,参数分别 μ = 1 i , λ = 1 j
(其中 i > j ,即 μ < λ ),求在
不妨假设是1和4,则在给定其他值下 X 1 和 X 4 的条件分布为在其和等于 15 − x 2 − x 3 − x 5 ,且参数为
到概率值的估计。
设 ( Ω , F , P , { F t } ) 是一个带 σ 域流的概率空间 [
Π ,并在 ( t , t + d t ) 内,不改变份额
即 d t V t − Δ d S t = Π t + d t − Π t = r Π t d t = r ( V t − Δ S t ) d t 。运用Itǒ公式,并且代入上式,得到Black-Scholes方程:
∂ V ∂ t + 1 2 σ 2 S 2 ∂ 2 V ∂ S 2 + r s ∂ V ∂ S − r V = 0
对于欧式看涨期权,也就是 V ( S ( T ) , T ) = ( S ( T ) − K ) + ,满足Black-Scholes方程的解为:
V ( s ( t ) , t ) = exp { − r ( T − t ) } ∫ − ∞ ∞ ( x − K ) + f ( s , s ( t ) ) d s 其中, f ( s , s ( t ) ) 表示给定当前资产为 s ( t ) ,资产价格S在期权到期日T时的密度函数。因此股票价格波动是一个随机过程,股票价格为 S t = S t − 1 exp { ( r − σ 2 / 2 ) Δ t + σ Δ t X t } 。其中, { X t } 为相互独立的服从 {Xt} 的随机变量。c表示该期权在零时刻的价格,因此 c = exp { − r T } E [ S 0 − K ] + ,由于这个期权是一种路径依赖的期权,计算包含一个多重积分,积分的维数为n,所以求解过程很复杂,因此采用马尔可夫链蒙特卡罗方法求解。
方法一:随机向量 X = ( X 1 , X 2 , ⋯ , X n ) T ,其概率密度函数为
f ( x ) ∝ H ( x ) exp { − x T x x / 2 } ,
式中, H ( x ) = ( S ( t n ) K ) + I ( min 1 ≤ i ≤ n S ( t i ) ≤ β ) 。概率密度函数 f ( x ) 归一化因子未知,是不完全已知概率分布,其抽样方法需要使用马尔可夫链蒙特卡罗方法。
此时,建议概率分布为 q ( λ | d , X ) ,随机方向d服从s维单位超球体上均匀分布,有
d = ( Z 1 ‖ Z ‖ , Z 2 ‖ Z ‖ , ⋯ , Z s ‖ Z ‖ ) T ,
‖ Z ‖ = Z 1 2 + Z 2 2 + ⋯ + Z s 2 , Z 1 , Z 2 , ⋯ , Z s ∼ N ( 0 , 1 ) 。
接受概率为 α ( x , y ) = min ( 1 , f ( y ) q ( λ | d , x ) f ( x ) q ( λ | d , y ) ) 。
当前样本值为 X t ,所以我们的算法如下:
1) s维单位超球体上均匀分布抽样产生随机方向d。
2) q ( λ | d , X t ) 抽样产生 λ ,计算 Y t = X t + λ d 。
3) 若 U ≤ α ( X t , Y t ) , X t + 1 = Y t ;否则, X t + 1 = X t 。
方法二:取
运用算法如下:
1) 取记号a1,a2,其中 a 1 = exp { ( r − 0.5 ∗ σ 2 ) ∗ h } , a 2 = σ ∗ X ,计算a1,a2;
2) 若 S ( T ) > K ,则
3) 计算价格 S ( t ) 。这里取利率 r = 0.05 ,
由定义可知马尔可夫链是某一时刻取值当且仅当与之前相邻的一个时刻相关而与之前时刻没有联系,也就是它可以忘记过去,并且,当它经过一段时间的转移以后,就与初始时刻没有了联系,状态也会从非平稳到达平稳,马尔可夫链也就变得收敛。为了使得马尔可夫链尽快忘记初始状态,然后比较接近平稳状态,降低随机抽样的误差性,所以需要降低方差。因此,通过改变接受概率,减少模拟抽样的时间,加快收敛速度,从而达到较高的模拟效率。
通过随机模拟,可以将复杂的模型 [
孙 玫. MCMC算法及其应用MCMC Algorithm and Its Application[J]. 应用数学进展, 2018, 07(12): 1626-1637. https://doi.org/10.12677/AAM.2018.712190
https://doi.org/10.1093/biomet/57.1.97
https://doi.org/10.1214/aos/1176325750
https://doi.org/10.1023/A:1020281327116
https://doi.org/10.1214/154957804100000024
https://doi.org/10.1002/9780470669723