概述
1. 概率论与蒙特卡洛
1.1 概率论基础
在强化学习中会反复用到概率质量函数(Probability Mass Function,PMF)或者概率密度函数(Probability Density Function,PDF)。
- PMF用来描述离散概率分布,例如抛硬币的概率质量函数如下:
∑ x ∈ X p ( x ) = 1 sum_{x in mathcal{X}} p(x)=1 x∈X∑p(x)=1
- PDF用来描述连续概率分布,例如正态分布就是一种常见的连续概率分布,随机变量 X X X的取值范围是所有实数 R R R,则正态分布的概率密度函数就是:
p ( x ) = 1 2 π σ ⋅ exp ( − ( x − μ ) 2 2 σ 2 ) p(x)=frac{1}{sqrt{2 pi} sigma} cdot exp left(-frac{(x-mu)^{2}}{2 sigma^{2}}right) p(x)=2πσ1⋅exp(−2σ2(x−μ)2)
μ mu μ和 σ sigma σ分别代表均值和标准差。说明在均值附近的取值的可能性大。
设
X
mathcal{X}
X为变量
X
X
X的取值范围。那概率密度函数就有以下性质:
∫
X
p
(
x
)
d
x
=
1
int_{mathcal{X}}^{} p(x)dx = 1
∫Xp(x)dx=1
即概率密度的积分为1。
接着是函数 f ( X ) f(X) f(X)的期望,其定义如下:
- 设 p ( X ) p(X) p(X)为 X X X的概率密度函数,对于离散分布, f ( X ) f(X) f(X)的期望是:
E X ∼ P ( ⋅ ) [ f ( X ) ] = ∑ x ∈ X p ( x ) ⋅ f ( x ) E_{Xsim P(cdot )}[f(X)]=sum_{xin mathcal{X}}^{}p(x)cdot f(x) EX∼P(⋅)[f(X)]=x∈X∑p(x)⋅f(x)
- 相应的对于连续分布来说, f ( X ) f(X) f(X)期望是:
E X ∼ P ( ⋅ ) [ f ( X ) ] = ∫ X p ( x ) ⋅ f ( x ) d x E_{Xsim P(cdot )}[f(X)]=int_{mathcal{X}}^{} p(x)cdot f(x)dx EX∼P(⋅)[f(X)]=∫Xp(x)⋅f(x)dx
下面举一个例子用来消除二元函数中的一个变量:
设
g
(
X
,
Y
)
=
X
Y
g(X,Y)=XY
g(X,Y)=XY,设
X
=
[
0
,
10
]
mathcal{X}=[0,10]
X=[0,10],那么对其求关于随机变量
X
X
X的期望可以得:
E
X
∼
P
(
⋅
)
[
f
(
X
)
]
=
∫
X
p
(
x
)
⋅
f
(
x
)
d
x
=
∫
0
10
2
X
Y
⋅
1
10
d
x
=
5
Y
begin{aligned} E_{Xsim P(cdot )}[f(X)] & = int_{mathcal{X}}^{} p(x)cdot f(x)dx\ & = int_{0}^{10} 2XYcdotfrac{1}{10} dx\ & = 5Y end{aligned}
EX∼P(⋅)[f(X)]=∫Xp(x)⋅f(x)dx=∫0102XY⋅101dx=5Y
显然随机变量
X
X
X被消掉了。
可以在Python中模拟随机抽样:
from numpy.random import choice
samples = choice(['1','2','3','4'])
size = 100
p=[0.1,0.2,0.3,0.4]#概率设置
print(samples)
以上是模拟从1、2、3、4四个数字中抽取一个,重复100次,每个数字的概率分布是0.1、0.2、0.3、0.4,最后输出实验结果。
1.2 蒙特卡洛
蒙特卡洛(Monte Carlo)是一大类随机算法的总称,即是一些通过随机样本来估算真实值的算法。
1.2.1 近似 π pi π 值
假设有一个坐标系,坐标系内有一个边长为2的正方形,中心在(0,0),一个半径为1的圆,圆心为(0,0),然后在正方形区域内任意取点,重复取n次以后求点落在圆内的概率有多大。
很明显,概率显然是圆面积
a
2
a_2
a2与正方形面积
a
1
a_1
a1的面积之比,所以:
p
=
a
2
a
1
=
π
4
p=frac{a_2}{a_1}=frac{pi}{4}
p=a1a2=4π
若随机抽样了
n
n
n次,设圆内点的数量为随机变量
M
M
M,显然其期望为:
E
[
M
]
=
p
n
=
π
n
4
E[M]=pn=frac{pi n}{4}
E[M]=pn=4πn
再我们给定的坐标是
(
x
,
y
)
(x,y)
(x,y),则若该点在圆内,满足:
x
2
+
y
2
≤
1
x^2+y^2le1
x2+y2≤1
所以当我们的随机抽样的次数
n
n
n非常大时,随机变量
M
M
M的真实观测值
m
m
m就会非常接近期望
E
[
M
]
=
π
n
4
E[M]=frac{pi n}{4}
E[M]=4πn,对公式做变换得:
m
≈
4
m
n
mapproxfrac{4m}{n}
m≈n4m
即可求出
π
pi
π的近似值。
代码如下:
import numpy as np
def test(n):
m = 0
for i in range(n):
x = np.random.uniform(-1, 1, 1) # 指定均匀分布
y = np.random.uniform(-1, 1, 1)
pos = x*x + y*y
if pos <= 1:
m = m + 1
# print(pi)
pi = (4*m)/n
return pi
import test
if __name__ == '__main__':
pi = []
pi.append(test.test(100))
pi.append(test.test(1000))
pi.append(test.test(10000))
pi.append(test.test(100000))
pi.append(test.test(1000000))
print(pi)
输出如下:
可见随着抽样次数的增加, π pi π的值越来越接近 π pi π的真实值。
下一节将继续举类似的随机算法。
最后
以上就是陶醉酸奶为你收集整理的深度强化学习详解与实例(一)1. 概率论与蒙特卡洛的全部内容,希望文章能够帮你解决深度强化学习详解与实例(一)1. 概率论与蒙特卡洛所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复