3D数学系列之——再谈蒙特卡洛积分和重要性采样
Posted GamebabyRockSun_QQ
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了3D数学系列之——再谈蒙特卡洛积分和重要性采样相关的知识,希望对你有一定的参考价值。
目录
一、前篇文章回顾
在前一篇文章3D数学系列之——从“蒙的挺准”到“蒙的真准”解密蒙特卡洛积分!中,介绍了下面的这些朴素的公式:
灰色部分中点数
总的点数
≈
灰色部分面积
矩形面积
⇒
灰色部分面积
≈
矩形面积
×
灰色部分中点数
总的点数
\\beginalign & \\cfrac 灰色部分中点数 总的点数 \\approx \\cfrac灰色部分面积 矩形面积 \\\\[2ex] & \\Rightarrow 灰色部分面积 \\approx 矩形面积 \\times \\cfrac 灰色部分中点数 总的点数 \\endalign
总的点数灰色部分中点数≈矩形面积灰色部分面积⇒灰色部分面积≈矩形面积×总的点数灰色部分中点数
灰色部分面积 ≈ 矩形面积 × P ( P 为点落在灰色部分的概率) 灰色部分面积 \\approx 矩形面积 \\times P \\quad (P为点落在灰色部分的概率) 灰色部分面积≈矩形面积×P(P为点落在灰色部分的概率)
虽然最终通过一个简单的概率乘法就可以计算出积分值,但是如何得到这个精确的概率值从而得到比较精确的积分值却不是那么简单的。并且这个方法直接用于计算或者说模拟计算来说,不确定的东西太多。下面我们就继续从积分的基本公式开始,讨论一下看看有没有进一步更形式化和更精确一点的方法。
二、积分的黎曼和形式
对于数值积分计算来说,积分的黎曼和形式是最基本的形式:
∫
a
b
f
(
x
)
d
x
≈
∑
n
=
1
N
f
(
x
n
)
b
−
a
N
(1)
\\int \\limits_a^b f(x) \\mathrmd x \\approx \\sum \\limits_n=1^N f(x_n) \\cfracb-aN \\tag1
a∫bf(x)dx≈n=1∑Nf(xn)Nb−a(1)
这是一个常见和基本的可以用于积分计算程序的基本公式。
三、积分的概率形式(蒙特卡洛积分)
接着我们对黎曼和使用著名的”陶哲轩瞪眼法“进行观察。
首先对于求和来说,第一项是 f ( x n ) f(x_n) f(xn) ,这里我们一般会比较容易知道 f ( x ) f(x) f(x) 的解析形式或者可以知道它的一些离散值。
在实际计算中需要生成的是 x n x_n xn 的序列,这个序列是跟后面的 ( b − a ) N \\cfrac(b-a)N N(b−a) 紧密关联的,因为需要保证 x i − x i − 1 = b − a N x_i-x_i-1 = \\cfracb-aN xi−xi−1=Nb−a 即 x n x_n xn 序列是个等差数列,间隔是就是 ( b − a ) N \\cfrac(b-a)N N(b−a) 。
这时,我们先打开思路,既然前一讲中已经可以通过随机变量的形式来计算积分,那么这时我们可不可以用一组随机数的序列来代替 x n x_n xn 的序列呢?
既然讲到随机,那么回忆一下概率论中关于“均匀分布随机变量”的概率密度函数(The Probability Distribution Function,缩写为 PDF):
p
(
x
)
=
1
b
−
a
,
a
<
x
<
b
0
,
其他
(2)
\\mathrmp(x) = \\begincases \\cfrac1b-a, \\quad a \\lt x \\lt b \\\\[2ex] 0, \\quad 其他 \\endcases \\tag2
p(x)=⎩
⎨
⎧b−a1,a<x<b0,其他(2)
接着我们用"陶哲轩瞪眼法"观察黎曼和公式与上面这个公式,此时我们应灵光乍现想到下面这样的形式:
∫
a
b
f
(
x
)
d
x
≈
∑
n
=
1
N
f
(
x
n
)
b
−
a
N
=
1
N
∑
n
=
1
N
f
(
x
n
)
×
(
b
−
a
)
根据乘以一个数等于除以一个数的倒数这个法则,有:
=
1
N
∑
n
=
1
N
f
(
x
n
)
p
(
x
n
)
(3)
\\int \\limits_a^b f(x) \\mathrmd x \\approx \\sum \\limits_n=1^N f(x_n) \\cfracb-aN \\\\[2ex] = \\cfrac1N \\sum \\limits_n=1^N f(x_n) \\times (b-a) \\\\[2ex] 根据乘以一个数等于除以一个数的倒数这个法则,有: \\\\[2ex] = \\cfrac1N \\sum \\limits_n=1^N \\cfracf(x_n)\\mathrmp(x_n) \\tag3
a∫bf(x)dx≈n=1∑Nf(xn)Nb−a=N1n=1∑Nf(xn)×(b−a)根据乘以一个数等于除以一个数的倒数这个法则,有:=N1n=1∑Np(xn)f(xn)(3)
啊哈!太好了,这一切看似是公式间的一种巧合或者说技巧性的,接着我们思考下它的意义。因为刚才我们已经说过原来的
x
n
x_n
xn 序列是个等差序列,本身就是均匀分布的,所以其概率密度函数(PDF)就是均匀分布变量的 PDF。如果我们取一个随机的
x
n
x_n
xn 序列,并假设知道它的 PDF
p
(
x
n
)
\\mathrmp(x_n)
p(xn) 那么就可以根据上面这个式子的结果来计算积分值了。并且当
x
n
x_n
xn 不断增多时,和
1
N
∑
n
=
1
N
f
(
x
n
)
p
(
x
n
)
\\cfrac1N \\sum \\limits_n=1^N \\cfracf(x_n)\\mathrmp(x_n)
N1n=1∑Np(xn)f(xn) 也就越接近原始的积分值!这也就是传说中的蒙特卡洛积分的基本形式。它是合理且有意义的,起码我们不用只靠前一讲中的“蒙的真准”的方法了。需要注意的就是其中
f
(
x
n
)
p
(
x
n
)
\\cfracf(x_n)p(x_n)
p(xn)f(xReinforcement Learning强化学习系列之四:时序差分TD
引言
前面一篇讲的是蒙特卡洛的强化学习方法,蒙特卡罗强化学习算法通过考虑采样轨迹,克服了模型未知给策略估计造成的困难,不过蒙特卡罗方法有一个缺点,就是每次需要采样完一个轨迹之后才能更新策略。蒙特卡洛方法没有充分利用学习任务的MDP结构,而时序差分学习方法Temporal Difference(TD)就充分利用了MDP结构,效率比MC要高,这篇文章介绍一下TD算法
Sarsa算法
Sarsa的算法如下:
Sarsa算法是on-policy方法,其原始策略和更新策略是一致的,而其更新策略和MC不一样的是其策略更新不需要采样一个完整的轨迹,在执行完一个动作后就可以更新其值函数。
Q-learning算法
Q-learning算法则是一个off-policy的方法
以上是关于3D数学系列之——再谈蒙特卡洛积分和重要性采样的主要内容,如果未能解决你的问题,请参考以下文章