文章目录
首先蒙特卡洛和数值积分,这两种方式
蒙特卡洛可以用于采样,而数值积分似乎不可以
蒙特卡洛积分就是先进行采样再对样本处理,求得积分
而单纯求积分的时候,下述的间接采样没什么意义,与数值积分的区别也仅仅是,采取网格点和随机点的区别
使用网格点在低维的情况下是优于随机点的,而在高维时,随机点更适用,原因:
使用网格点时,每当在一个轴上增加一个点时,总体需要计算的点增加量非常大(指数),因而,并不好控制计算量;随机点则不受限制,想取几个点就取几个点
老师说高维时网格点计算量大,我不敢苟同,既然都是同样的信息,计算量大必然更精准,随机点想要达到同样的精度,必定需要同样的计算量,真正不合适的,个人认为是上述的计算量不好控制,跳跃太大
What is that
蒙特卡洛j积分,用随机采样的方式,近似计算目标分布的期望(积分),有时仅仅通过画图快速了解分布的大概情况
首先,采样的本质:我们知道pdf是指随机变量取某一个值的概率,所以从中取一个x进行计算并不是采样。
既然pdf是代表某个值的概率,那么我们反过来,我们根据概率来取值便是真正的采样,也就是下文中的求cdf的反函数
这也解释了,两种间接采样既然难以计算,最终结果还是要计算f(xi),间接采样的目的并不是简化运算,而是在无法求得反函数的情况下,通过正函数和建议分布(实验分布)间接抽样
概率分布采样
按照目标分布直接采样,得到相应的样本值。
仅适用于简单的情况,简单的情况可以直接数值积分
拒绝采样
当目标函数比较复杂时(并不是计算困难,而是其cdf的反函数求不出来),这时无法完成采样,拒绝采样便可以通过间接的方式采样
重要性采样
另外一种间接采样
How to do that
一切都建立在均匀分布的随机数生成之上,但计算机并不能产生真正的随机数,因此介绍伪随机数
均匀分布的产生
均匀分布的随机数可以通过迭代取余来产生伪随机数,即:
mod为取余数,选取x0进行递归生成序列(x0称为seed)
·注意,在此方式中,我们需要选取 使得任意xn都不为0的 a和m
·除x0外其余xn皆为取余结果,因此xn均为不大于m的正整数
·任何伪随机数列均为循环数列(?),因此可用数据为有限个
·对于上式,我们希望x1/m,x2/m…服从 U(0,1) 的均匀分布
鉴于以上特性,我们对于 a, m 的取值提出以下要求
∗ For any initial seed, x0/m,x1/m · · · has the “appearance” of being a sequence of independent Uniform(0, 1) distributed random variables.
∗ For any initial seed, the number of variables that can be generated
before repetition begins is large.
∗ The values can be computed efficiently on a digital computer.
例如,对于一个32位的计算机,我们可以取
m = 2** 32 − 1
a = 7**5 = 16, 807.
def num(x0,a,m,n):
list1 = []
x1 = x0
for i in range(n):
x2 = (a*x1)%m
list1.append(x2/m)
x1 = x2
return list1
概率分布采样
对于连续的变量,通过概率积分变换,即cdf的反函数形式,将U与目标函数结合起来,产生目标分布的随机变量
下面介绍几个常用的采样,及ppt中的例子
连续变量
slides中的定义和证明晦涩难懂,这里我用自己的语言进行描述
设目标分布f(x),F(x)
F(x)的值域为[0,1],与均匀分布U(0,1)相同,则我们G(u)定义为目标分布cdf的逆函数
当u取(0,1)中的值u时,G(u)的值为F(x)的u分位点
类似离散变量的形式,我们可以这样理解,当取得u时,其对应的分位点值 与 不包含u的分位点值之差,即为原分布取得x的概率,能力有限,语言无法细致描述,但自己能懂
总之,我们通过取均匀分布U的样本值,求得对应的G(u),即完成了对于原分布的采样
下面,介绍slides中的几个例子,其中有些较为复杂,涉及极坐标
指数分布
这里需要求逆函数
这里还没学懂,等搞懂了几个分布的关系回来继续
β \beta β分布
离散变量
注意概率F也是累加的
理解:上一步没满足,下一步满足了(与上一步之和的概率),则表示,满足了总的,且不满足上一步(因为上一次没满足,可理解为提前检验)
伯努利
![](https://i-blog.csdnimg.cn/blog_migrate/a00c1185cb35bb8717e5d98e29a1cbd2.png)
二项分布
固定几个值的均匀分布
几何分布
注意符号,向下取整
随机数序列
本质上是,从排列好的数列中,随机选择一个放到队尾,再从剩余数中再选择,如此往复(选择排序inverse)
拒绝采样
原pdf无法采样(cd反函数无法计算),我们通过引入一个建议分g(x),通过在g(x)上采样,取得样本,再进行判别,是否保留取样值,如此迭代,取得样本
具体实现
首先确定一个常数c
这个常数可以使得
即,c*g(x)恒大于f(x)
我们首先从均匀分布中抽取一个样本U
这时我们从建议分布中抽取样本Y,若其满足(上下两个样本独立)
我们便认为这个样本是合理的,将其保留,进行下一次抽取(U和Y都重新抽),直到保留足够的样本
性质
i)这个方法构造的随机变量,与f分布相同,可以证明
iI)c>=1,很容易理解;每取得一个合适的样本,所需抽取的次数的期望为c
由于g(x)理论上任何分布都可以使用,我们一般使用均匀或者正态,但是有时为了采样效率,我们可以使用一些与目标分布形状相似的分布
需要注意,如果是没有边界的分布,所取的g(x)的tail需要比目标分布收敛更慢,否则无论c多大,极限情况都会小于原分布
几个例子(slides) ,还没看,看了来填坑
重要性采样
这个方法的形式,与另外一篇,monte carlo method (slides的引例)很像,基本上是一个思路,只不过对于这种形式的抽样,我们可以用另外的一种方式去理解它,形式上就像是给每一个样本赋予了一个权重,这也是这种方法的由来
具体实现
首先,选取一个实验分布(接近目标且易求为好),从实验分布中采样,并且将所有样本保留,目前得到的样本为实验分布的一组样本,之后将每一个样本xi乘上一个权重,数值为f(xi)/q(xi),即为最终采样结果
性质
重要性采样取得到的是带有重要性权重的服从q(x)分布的样本,对于这种特殊的样本,一般也就用来求均值(通过做题发现,这些样本的和,即为样本的期望值),所以个人认为这种采样不咋好用,求期望直接用数值积分就行,既然存在,那么以后可能有它放光彩的地方吧
同样,需要注意q(x)的tail要比f(x)更fat,否则会出现权重为无穷大的情况
在本章的slides中,对于求均值,有两种方式
Π ^ 1 = 1 m Σ f ( x i ) q ( x i ) x i \hat{\Pi}_1 = \frac{1}{m}\Sigma\frac{f(x_i)}{q(x_i)}xi Π^1=m1Σq(xi)f(xi)xi
即将样本直接求均值
Π
^
2
=
Σ
w
i
x
i
Σ
w
i
\hat{\Pi}_2 = \frac{\Sigma w_i x_i}{\Sigma w_i}
Π^2=ΣwiΣwixi
其中 w i w_i wi为 f ( x i ) q ( x i ) \frac{f(x_i)}{q(x_i)} q(xi)f(xi) ,可以证明 E ( w i ) E(w_i) E(wi)=1(求积分),因此可以证明二者结果相等
但这两种形式有优有劣:
i)
Π
^
2
\hat{\Pi}_2
Π^2有偏,
Π
^
1
\hat{\Pi}_1
Π^1无偏
ii)
Π
^
2
\hat{\Pi}_2
Π^2在计算时可以将f(x),q(x)中的常数项约去
Π
^
2
\hat{\Pi}_2
Π^2有一个指标,可以衡量其效率: ESS (effective sample size)
E
S
S
m
(
w
)
=
m
1
−
V
a
r
q
(
w
(
x
)
)
\ ESS_m(w) = \frac{m}{1-Var_q(w(x))}
ESSm(w)=1−Varq(w(x))m
其值计算结果为 该组特殊样本相当于多少个从f(x)中抽取的样本(有点类似拒绝采样中的比率)
计算:
Why is correct
所谓间接抽样,我们上面提到的两种抽样,拒绝抽样和重要性抽样,其实都是同一种思想的不同实现形式:通过引入一个新的随机变量,通过从这个变量中采样,并且经过处理,来代替从目标分布中采样
拒绝采样的方式,从大于母体的伪分布(积分不为1)中抽取,将落入母体的保留,未落入的舍弃
重要性采样,,选择的实验分布是一个真的分布,将这个分布中的样本全部保留,但赋予不同的权重,使其最终结果能够符合要求,但这类特殊样本一般只能用来求期望积分