2.6随机游走 随机游走也是一种基于运用[0,1]区间的均匀分布随机数序 列来进行的计算。 醉汉行走问题 醉汉开始从一根电线杆的位置出发(其坐标为,0=x x坐标 向右为正,向左为负),假定醉汉的步长为l,他走的每一步的 取向是随机的,与前一步的方向无关。如果醉汉在每个时间间 隔内向右行走的一步的几率为,则向左走一步的几率为 q 。 我们记录醉汉向右走了步,向左走了步,即总共走了 步。那末醉汉在行走了步以后,离电线杆的距离为, 其中。然而我们更感兴趣的是醉汉在行走步以后, 离电线杆的距离为 p p?=1 R nn + ln L ) R n N L n L N = n R ?x N (= NlxNl ≤≤? x的概率。 )(xP N 下面便是醉汉在走了步后的位移和方差的平均值 ()的计算公式。 N >?<>< 2 , NN xx , ∑ ?= >=< Nl Nlx NN xxPx )( < , 222 ><?>>=<? NNN xxx 其中 . ∑ ?= >=< Nl Nlx NN xPxx )( 22 公式中的求平均是指对步中所有可能的行走过程的平均。 , . N 2 x N ?Nlqpx N )( ?>=< 2 4pqNl>=< 注意到在向左、向右对称的情况下,即 2/1== qp ,得到 < 。 0>= N x 查点法和蒙特卡洛方法 在查点法中,对给定的行走总步数及总位移N x,要求把游走 时可能的每一步的坐标和几率都确定下来。这是可以用概率理 论精确计算的。 例如,对于,l的醉汉一维行走问题,由概率理论可以得 到,, , ,由此可以 算出 3=N 3 (xP 1= )1 =? 3 3 )3( qxP =?= 2 3pq= qpxP 2 3 3)1( == 3 3 )3( qxP == <, )(33333)( 3223 33 qppqppqqxxPx ?=++??=>= ∑ [ ] 23223 3 22 3 )(3129339)( qppqpqppqqxPxx ?+=+++=>= ∑ < . 则 . pqxxx 12 2 3 2 3 2 3 =><?>>=<?< 查点法只有在总步数较小时才可以使用。N比较大时用起来N 1 就比较困难了。 蒙特卡洛方法就可以克服在游走中的这个困难,具有更广泛 的可操作性。蒙特卡洛方法可以对许多步的游走过程进行抽样, 例如。我们可以按照正确的概率,对确定的产生出 各种可能的行走样本。原则上只要我们增加抽样的个数,要达 到较高的精度总是可能的。 52 1010~ ?N N 随机游走的蒙特卡洛方法求解泊松型微分方程 ?φ ? ?φ ? φ 2 2 2 2 xy qxy Fs += = ? ? (,) |() Γ ? ? ? , Γ为求解区域D的边界,s为边界Γ上的点。 这里我们采用等步长的正方形格点划分的差分法。在区域D内 的任意正则内点0 (其相邻的节点都在区域D内)的函数值可以 用周围四个邻近点1,2,3,4上的函数值来表示。如同在第四 章中将要介绍的,这个表达式有如下差分方程表示 h () φφφφφ 01234 2 0 1 4 =+++?hq . 其中q是在区域D的正则内点0上的函数 0 ( ),qxy的值。公式右边 的系数1/4可以解释为概率。即我们有 φφ 00 1 4 2 0 4 =? = ∑ W h q j j j, , , W j j 0 1 4 1 = ∑ = Wj . j0 1 4 1234 , ,( ,,,)== 游走的判据是:选定一个[0,1]区间的均匀分布的随机数ξ, 若满足条件ξ ≤ 1 4 ,我们选定下一个游走到达点为第1点;若满 足条件 1 4 1 2 <≤ξ ,选游走到的下一个点为2点;若满足条件 1 2 <≤ξ 3 4 , 选定游走到下一个点为3点;ξ在其他的情况下,我们则选游走 到第4点。 如果我们按上面的判据选择了O点周围四个点中之一m点, 则O点函数 φ 0 的估计值为 0 2 4 q h mo ?=φη ; 从点上又按判据选择周围四个点中的n点时,m点函数m m φ 的估计值为 mnm q h 4 2 ?=φη,此时O点函数φ 0 的估计值也可以写为 )( 0 mno qq +?=φη 4 2 h ,……。 按上面的原则和步骤,如果从0点开始进行游走并记下该 2 点函数值 q ;在第j步游走到第j点时,记下该点q(x,y)的 函数值 q ;直到该游走到第 )1( 0 o q= j ()1 J ()1 步,到达边界Γ的s ()1 点时,停止该 次游走,记下边界上这点的函数值。此时我们可以得到0 点上的函数 Fs( ()1 ) φ 0 的一个估计值 η 0 11 2 1 0 4 1 () () () () () =? = ∑ Fs h q j j J . 如此反复从0点开始进行N次上述的随机游走,我们得到一个函 数的估计值序列 φ 0 {} , ηηηη 0 1 0 2 00 () () () ( ) , ,... ,... nN 其中 η 0 2 0 4 () () () () () nn j n j J Fs h q n =? = ∑ , n=1,2,...,N. 则0点的函数φ 0 的期望值为 N q h sF N E N n J j n j n N n n n ∑∑ ∑ == = ? ? ? ? ? ? ? =≈= 10 )( 2 )( 1 )( 0 00 )( 4 )( }{ η ηφ . 这个计算出的 φ 0 值的估计值序列的方差为 []}{ 1 2 0 2 0 2 ηησ E N N ?>< ? = . 这种随机游走的做法,实际上是个人为的概率过程。它是一个 具有吸收壁的随机游走。 上面这种方法可以推广应用到更一般的二维、三维的椭圆 形方程的求解。在所需求解方程的边界条件特别复杂,而我们 所需求解的仅仅是系统中的若干点的函数值时,该方法是可供 选择的有效方法。 在随机游走的蒙特卡洛方法中,有一种最常用方法称为 Metropolis方法。它是前面介绍过的重要抽样法的一个特殊情 况。采用此方法可以产生任意分布的随机数,包括无法归一化 的分布密度函数。 以一维的Metropolis方法为例,它所采用的游走规则是选择 一个从x点游走到点的“过渡几率”wx′ )( xx ′→,使得它在游走中 所走过的点的分布收敛到系统达到平衡时的分布。 要达到这样分布的重要抽样,就需要对过渡几率 xxx 012 , , ..... fx() ( )xx ′,w的选择加 上适当的限制。 可以证明:只要游走所选的“过渡几率”满足如下的细致平 3 衡条件, )()()()( xxwxfxxwxf → ′′=′→ . 就可以达到平衡时的分布为这样的目的。 fx() 实际上满足细致平衡条件只是一个充分条件,并不是一个 必要条件。该条件并不能唯一地确定过渡几率w。所以, 过渡几率w的选择具有很大的自由度。选取不同的过渡几 率就是不同的游走方法。 )( xx ′→ )( xx ′→ Metropolis方法采用一个简单的选择过渡几率的方法,即 ? ? ? ? ? ? ′ =′→ )( )( ,1min)( xf xf xxw . 具体操作: (1)首先选取一个试探位置,假定该点位置为xx try n n =+η, 其中η n 为在间隔 [] ?δ δ, 内均匀分布的随机数。 (2)计算 r 的数值。 fx fx try n = ( () ) (3)如果不等式r ≥1 x n /1) = 满足(由公式(2.6.15)可以知道:此时 ),那就接受这一步游走,并取。 然后返回(1)开始对游走到点的试探。 wx x ntry ()→=1, rxw try ( → xx nt+ = 1 ry 2+n x (4)如果r <1(此时,wx x r ntry ()→ =,wx x try n ()→ = 1),那么就 再另产生一个[0,1]区间均匀分布的随机数ξ。 (5)如果此时ξ ≤ r x try ,那么也还接受这步游走,并取这步游走所 到达的点为。然后返回到步骤(1),开始下一步到达点 的游走。 x n+ = 1 x n+2 (6)如果此时 ξ >r,就拒绝游走到这一点,即仍留在点 的位置不变。 x try x n (7)返回到步骤(1),重新开始对游走到点的具体位置的 又一次试探。 x n+1 采用这样的游走过程时,只有在产生了大量的点 后,才能得到收敛到满足分布的点集。 xxx 012 ,,... fx() 如何选择δ的大小,以提高游走的效率? δ 选得太大,那么绝大部分试探的步子都将会被舍弃, 就很难达到平衡分布; δ 取得太小,那么绝大部分试探步子都会被接受,这同 4 样难以达到所要求的平衡分布。 根据实际应用中的经验,选取δ的一个粗略标准应当是: 选择适当δ大小的原则是要在游走的试探过程中,有1/3到 1/2的试探步子将被接受。 按照这样的标准选择得到的δ,就可以大大提高游走的效 率。 进行这样的随机游走,从哪一点出发才可以比较快地达到平衡 分布呢? 原则上讲,从任何一个初始位置出发均可达到平衡分布, 但是为了尽快地达到平衡分布,我们最好是要选择一个合适 的初始位置,这个初始位置应当是在游走范围内所要求的几 率分布密度最大的区域。 fx() 5