@EggGump
2019-04-09T20:07:53.000000Z
字数 3064
阅读 674
algorithm
本算法的本质是产生以特定概率产生随机数。
随机模拟的洋名叫蒙特卡罗方法,目的是通过计算模拟尽可能真实的随机数,对于均匀分布,可以通过线性同余发生器来模拟,其结果与理论值发接近
,则a与b同余记为,线性同余即为:
线性同余序列即为:
线性同余是有周期的,其周期最大为m,可推理。
定义两个集合S,T,集合S包含从0到m-1所有m个元素,T为一个空集合,那么:
以任意为被始值产生,它必定在S中,此时将它从S集合中移到T集合中,则:
以为参数产生第二个随机数时,可能属于S,也可能属于T
如果属于S,此时还没产生周期
如果属于T,此时产生周期,周期P=1
假设产生了i-1个都在S中,那么此时S与T的状态为:
当产生时:
如果属于S,此时还没产生周期
如果属于T,此时产生周期,周期P<=i-1
这么推理,一定存在一个周期,且P<=m。
周期与m,a,c有关,在电脑中当然周期是越大越好。更深奥的介绍见:计算机程序设计艺术(The Art of Computer Programming,Volume 2)书太贵!
利用线性同余可以产生常见的分布,如正态分布可以通过Box-Muller变换
设则:
则独立且服从N(0,1)还有类似指数分布、Gamma 分布、t 分布、F 分布、Beta 分布、Dirichlet 分布等等也都可以用类似的方法生成。书统计模拟中写得具体,但是太贵。
但是当P(x)的形式很复杂时,或者是高维分布时,这个办法就不行了,因此马尔可夫平稳分布就起了作用。
马尔可夫过程也即状态转移,随机过程老师讲得特别详细。举个例子:
这里的1,2,3表示状态下层,中层,上层,转移概率为P。对初始分布,而下一代分布为:,。下面列出来一个例子:
再换一个初始概率看看结果
可见,最终都不变,而这个性质是由P决定的,称具有这样性质的马氏链为马氏平稳分布。
假设在第n步收敛,那么第n步之后产生的样本就为同分布的随机变量。
以上是马尔可夫的基本知识。
这里提出的一个想法是:构造出转移矩阵P,使平稳分布恰好是,那么就可以得到一个想要的样本,这个想法得了20世纪很多奖。
细致平稳条件
对分布满足:
该算法有一个小问题,就是如果某些太小,导至接受率太低,那么就可能拒绝大量跳转而原地踏步,解决办法就是两边同时扩大,使大的那一方到1。
如:得:
对于高维情形,由于导致效率不够高,现在是想找到一个Q使,先看二维,如图:
对于A,B两点,可见:,,所以可得:
由上可得平面两点满足细致平稳条件:
如图所示,马氏链转移只沿坐标轴转移,收敛后得到的样本就是p(x,y)样本。其实采样并不需要按坐标轴轮换采样。
还可推广到多维情形,如对n维 概率分布,1.如果当前状态为,转移时由条件概率。2.其他无法沿着单根坐标轴进行的跳转,转移概率都设为0。
算法如下图: