深度强化学习(王树森)笔记06

深度强化学习(DRL)

本文是学习笔记,如有侵权,请联系删除。本文在ChatGPT辅助下完成。

参考链接

Deep Reinforcement Learning官方链接:https://github.com/wangshusen/DRL

源代码链接:https://github.com/DeepRLChinese/DeepRL-Chinese

B站视频:【王树森】深度强化学习(DRL)

豆瓣: 深度强化学习

文章目录

  • 深度强化学习(DRL)
  • 蒙特卡洛估计
  • 后记

蒙特卡洛估计

ChatGPT对蒙特卡洛方法的介绍

蒙特卡洛方法是一类基于随机抽样和统计学原理的数值计算方法,其核心思想是通过随机抽样来近似解决问题。这种方法在强化学习、优化问题、概率估计等领域都有广泛的应用。以下是关于蒙特卡洛方法的一些基本概念:

  1. 基本思想
  • 随机抽样: 蒙特卡洛方法利用随机抽样的方式来近似计算某个问题的数值解。通过大量的随机样本,可以得到对问题的概率分布、期望值等进行估计的结果。
  1. 应用领域
  • 强化学习: 在强化学习中,蒙特卡洛方法用于估计状态值、动作值,以及计算策略的期望回报。通过采样多条轨迹,可以近似地计算期望值。

  • 数值积分: 蒙特卡洛方法可以用于估计复杂函数的积分值。通过在函数定义域内随机采样,计算函数值的平均值,可以得到积分的近似值。

  • 概率估计: 蒙特卡洛方法在概率估计中也有应用,例如通过采样估计随机变量的期望、方差等统计量。

  1. 算法步骤

    1. 随机抽样: 根据问题的特性,通过随机抽样生成一系列样本点。

    2. 计算统计量: 对每个样本点进行计算,得到需要估计的统计量,例如期望值、方差等。

    3. 平均估计: 对所有样本点计算的统计量进行平均,得到最终的近似解。

  2. 优缺点

  • 优点: 蒙特卡洛方法是一种通用的数值计算方法,对于复杂问题具有很强的适应性。它不依赖于问题的具体形式,而是通过随机抽样来逼近解。

  • 缺点: 收敛速度相对较慢,特别是在维度较高的问题中,需要大量的样本才能获得准确的估计。同时,对于一些问题,可能存在抽样偏差。

总体而言,蒙特卡洛方法是一种强大的数值计算工具,尤其在面对复杂、高维度的问题时显示出其优越性。

蒙特卡洛(Monte Carlo) 是一大类随机算法 (randomized algorithms) 的总称,它们通过随机样本来估算真实值。本节用几个例子讲解蒙特卡洛算法。

例一:近似 π \pi π

我们都知道圆周率 π \pi π 约等于 3.1415927。现在假装我们不知道 π, 而是要想办法近似估算 π \pi π 值。假设我们有 (伪) 随机数生成器,我们能不能用随机样本来近似 π 呢?这一小节讨论使用蒙特卡洛如何近似 π \pi π 值。

假设我们有一个 (伪)随机数生成器,可以均匀牛成 -1 到 +1 之间的数。每次生成两个随机数,一个作为 x x x,另一个作为 y y y。于是每次生成了一个平面坐标系中的点 ( x , y ) (x,y) (x,y) , 见图 2.3(左)。因为 x x x y y y 都是在 [-1,1] 区间 上均匀分布,所 [ − 1 , 1 ] × [ − 1 , 1 ] [-1,1]\times[-1,1] [1,1]×[1,1] 这个正方形内的点被抽到的概率是相同的。我们重复抽样 n n n 次,得到了 n n n 个正方形内的点。

在这里插入图片描述

如图2.3(右)所示,蓝色正方形里面包含一个绿色的圆,圆心是(0,0),半径等于1。刚才随机生成的 n n n个点有些落在圆外面,有些落在圆里面。

请问一个点落在圆里面的概率有多大呢?

由于抽样是均匀的,因此这个概率显然是圆的面积与正方形面积的比值。正方形的面积是边长的平方,即 a 1 = 2 2 = 4 a_1=2^2=4 a1=22=4。圆的面积是 π \pi π 乘以半径的平方,即 a 2 = π × 1 2 = π a_{2}=\pi\times1^{2}=\pi a2=π×12=π。 那么一个点落在圆里面的概率就是
p   =   a 2 a 1   =   π 4 . p\:=\:\frac{a_{2}}{a_{1}}\:=\:\frac{\pi}{4}. p=a1a2=4π.

设我们随机抽样了 n n n个点,设圆内的点的数量为随机变量 M M M。显然, M M M 的期望等于

E [ M ]   =   p n   =   π n 4 . \mathbb{E}\big[M\big]\:=\:pn\:=\:\frac{\pi n}{4}. E[M]=pn=4πn.

注意,这只是期望,并不是实际发生的结果。如果你抽 n = 5 n=5 n=5个点,那么期望有 E [ M ] = 5 π 4 \mathbb{E}[M]=\frac{5\pi}4 E[M]=45π 个点落在圆内。但实际观测值 m m m 可能等于 0、1、2、3、4、5 中的任何一个。

给定一个点的坐标 ( x , y ) (x,y) (x,y),如何判断该点是否在圆内呢?已知圆心在原点,半径等于1,我们用一下圆的方程。如果 ( x , y ) (x,y) (x,y) 满足:

x 2 + y 2   ≤   1 , x^2+y^2\:\leq\:1, x2+y21,
则说明 ( x , y ) (x,y) (x,y) 落在圆里面;反之,点就在圆外面。
我们均匀随机抽样得到 n n n个点,通过圆的方程对每个点做判别,发现有 m m m 个点落在圆里面。如果 n n n 非常大,那么随机变量 M M M 的真实观测值 m m m 就会非常接近期望 E [ M ] = π n 4 E[M]=\frac{\pi n}4 E[M]=4πn:
m   ≈   π n 4 . m\:\approx\:\frac{\pi n}{4}. m4πn.

由此得到:

π ≈ 4 m n . \pi\approx\frac{4m}n. πn4m.

我们可以依据这个公式做编程实现。下面是伪代码:

  1. 初始化 m = 0 m=0 m=0。用户指定样本数量 n n n 的大小。 n n n 越大,精度越高,但是计算量越大。
  2. 把下面的步骤重复 n n n 次:

​ (a). 从区间[-1,1]上做两次均匀随机抽样得到实数 x x x y y y

​ (b). 如果 x 2 + y 2 ≤ 1 x^2+y^2\leq1 x2+y21, 那么 m ← m + 1 m\leftarrow m+1 mm+1

  1. 返回 4 m n \frac{4m}{n} n4m 作为对 π \pi π 的估计。

大数定律保证了蒙特卡洛的正确性:当 n n n 趋于无穷, 4 m n \frac{4m}n n4m 趋于 π \pi π。其实还能进一步用概率不等式分析误差的上界。比如使用 Bernstein 不等式,可以证明出下面结论:

∣ 4 m n − π ∣ = O ( 1 n ) . \left|\frac{4m}{n}-\pi\right|=O\Big(\frac{1}{\sqrt{n}}\Big). n4mπ =O(n 1).

这个不等式说明 4 m n \frac{4m}n n4m (即对 π \pi π 的估计) 会收敛到 π \pi π, 收敛率是 1 n \frac1{\sqrt n} n 1。然而这个收敛率并不快:样本数量 n n n 增加一万倍,精度才能提高一百倍。

例二:估算阴影部分面积

图2.4中有正方形、圆、扇形,几个形状相交。 请估算阴影部分面积。这个问题常见于初中数学竞赛。假如你不会微积分,也不会几何技巧,你是否有办法近似估算阴影部分面积呢?用蒙特卡洛可以很容易解决这个问题。

在这里插入图片描述

图 2.5 中绿色圆的圆心是 (1,1), 半径等于 1;蓝色扇形的圆心是 (0,0)、半径等于2。目的点 ( x , y ) (x,y) (x,y) 在绿色的圆中,而不在蓝色的扇形中。

在这里插入图片描述

利用圆的方程可以判定点 ( x , y ) (x,y) (x,y) 是否在绿色圆里面。如果 ( x , y ) (x,y) (x,y) 满足方程

( x − 1 ) 2   +   ( y − 1 ) 2   ≤   1 , ( 2.1 ) (x-1)^2\:+\:(y-1)^2\:\leq\:1, \quad{(2.1)} (x1)2+(y1)21,(2.1)

则说明 ( x , y ) (x,y) (x,y) 在绿色圆里面。

利用扇形的方程可以判定点 ( x , y ) (x,y) (x,y) 是否在蓝色扇形外面。如果点 ( x , y ) (x,y) (x,y) 满足方程
x 2   +   y 2   >   2 2 , ( 2.2 ) x^{2}\:+\:y^{2}\:>\:2^{2},\quad{(2.2)} x2+y2>22,(2.2)
则说明 ( x , y ) (x,y) (x,y) 在蓝色扇形外面。

如果一个点同时满足方程 (2.1)和 (2.2), 那么这个点一定在阴影区域内。从 [ 0 , 2 ] × [ 0 , 2 ] [0,2]\times[0,2] [0,2]×[0,2] 这个正方形中做随机抽样,得到 n n n 个点。然后用两个方程筛选落在阴影部分的点。

我们在正方形 [ 0 , 2 ] × [ 0 , 2 ] [0,2]\times[0,2] [0,2]×[0,2] 中随机均匀抽样,得到的点有一定概率会落在阴影部分。我们来计算这个概率。正方形的边长等于2,所以面积 a 1 = 4 a_{1}=4 a1=4。设阴影部分面积为 a 2 a_{2} a2。那么点落在阴影部分概率是

p = a 2 a 1 = a 2 4 . p=\frac{a_2}{a_1}=\frac{a_2}{4}. p=a1a2=4a2.

我们从正方形中随机抽 n n n个点,设有 M M M 个点落在阴影部分内( M M M 是个随机变量)。每个点落在阴影部分的概率是 p p p,所以 M M M 的期望等于

E [ M ]   =   n p   =   n a 2 4 . \mathbb{E}[M]\:=\:np\:=\:\frac{na_{2}}{4}. E[M]=np=4na2.

用方程 (2.1)和 (2.2) 对 n n n 个点做筛选,发现实际上有 m m m 个点落在阴影部分内 ( m m m 是随机变量 M M M 的观测值)。如果 n n n 很大,那么 m m m 会比较接近期望 E [ M ] = n a 2 4 \mathbb{E}[M]=\frac{na_2}4 E[M]=4na2, 即

m   ≈   n a 2 4 . m\:\approx\:\frac{na_{2}}{4}. m4na2.

也即:

a 2 ≈ 4 m n . a_{2}\approx\frac{4m}{n}. a2n4m.

这个公式就是对阴影部分面积的估计。我们依据这个公式做编程实现。下面是伪代码:

  1. 初始化 m = 0 m=0 m=0。用户指定样本数量 n n n 的大小。 n n n 越大,精度越高,但是计算量越大。

  2. 把下面的步骤重复 n n n 次:
    (a). 从区间 [0,2] 上均匀随机抽样得到 x x x; 再做一次均匀随机抽样,得到 y y y
    (b). 如果 ( x − 1 ) 2 + ( y − 1 ) 2 ≤ 1 (x-1)^2+(y-1)^2\leq1 (x1)2+(y1)21 x 2 + y 2 > 4 x^2+y^2>4 x2+y2>4 两个不等式都成立,那么让 m ← m + 1 。 m\leftarrow m+1_{\text{。}} mm+1

  3. 返回 4 m n \frac{4m}{n} n4m 作为对阴影部分面积的估计。

例三:近似定积分

近似求积分是蒙特卡洛最重要的应用之一,在科学和工程中有广泛的应用。举个例子,给定一个函数:
f ( x )   =   1 1 + ( sin ⁡ x ) ⋅ ( ln ⁡ x ) 2 , f(x)\:=\:\frac{1}{1+(\sin x)\cdot(\ln x)^2}, f(x)=1+(sinx)(lnx)21,

要求计算 f f f 在区间 0.8 到 3 上的定积分:

I   =   ∫ 0.8 3 f ( x )   d   x . I\:=\:\int_{0.8}^{3}f(x)\:d\:x. I=0.83f(x)dx.

有很多科学和工程问题需要计算定积分,而函数 f ( x ) f(x) f(x) 可能很复杂,求定积分会很困难, 甚至有可能不存在解析解。如果求解析解很困难,或者解析解不存在,则可以用蒙特卡洛近似计算数值解。

一元函数的定积分是相对比较简单的问题。一元函数的意思是变量 x x x 是个标量。给定一元函数 f ( x ) f(x) f(x), 求函数在 a a a b b b 区间上的定积分:
I   =   ∫ a b f ( x )   d   x . I\:=\:\int_{a}^{b}f(x)\:d\:x. I=abf(x)dx.

蒙特卡洛方法通过下面的步骤近似定积分:
1.在区间 [ a , b ] [a,b] [a,b] 上做随机抽样,得到 n n n 个样本,记作: x 1 , ⋯   , x n x_1,\cdots,x_n x1,,xn。样本数量 n n n 由用户自己定, n n n 越大,计算量越大,近似越准确。

  1. 对函数值 f ( x 1 ) , ⋯   , f ( x n ) f(x_1),\cdots,f(x_n) f(x1),,f(xn) 求平均,再乘以区间长度 b − a : b-a: ba:

q n   =   ( b − a ) ⋅ 1 n ∑ i = 1 n f ( x i ) . q_n\:=\:(b-a)\cdot\frac{1}{n}\sum_{i=1}^{n}f(x_i). qn=(ba)n1i=1nf(xi).

  1. 返回 q n q_n qn 作为定积分 I I I 的估计值。

多元函数的定积分要复杂一些。设 f : R d ↦ R f:\mathbb{R}^d\mapsto\mathbb{R} f:RdR 是一个多元函数,变量 x x x d d d 维向量。要求计算 f f f 在集合 Ω \Omega Ω 上的定积分:
I   =   ∫ Ω f ( x )   d   x . I\:=\:\int_{\Omega}f(\boldsymbol{x})\:d\:\boldsymbol{x}. I=Ωf(x)dx.

蒙特卡洛方法通过下面的步骤近似定积分:

  1. 在集合 Ω 上做均匀随机抽样,得到 n n n 个样本,记作向量 x 1 , ⋯   , x n x_1,\cdots,x_n x1,,xn。样本数量 n n n 由用户自己定, n n n 越大,计算量越大,近似越准确。

  2. 计算集合 Ω \Omega Ω 的体积: v = ∫ Ω d x . v=\int_\Omega d\boldsymbol{x}. v=Ωdx.

  3. 对函数值 f ( x 1 ) , ⋯   , f ( x n ) f(x_1),\cdots,f(x_n) f(x1),,f(xn) 求平均,再乘以 Ω \Omega Ω 的体积 v v v:

q n   =   v ⋅ 1 n ∑ i = 1 n f ( x i ) . ( 2.3 ) q_{n}\:=\:v\cdot\frac{1}{n}\sum_{i=1}^{n}f(x_{i}). \quad{(2.3)} qn=vn1i=1nf(xi).(2.3)

  1. 返回 q n q_n qn 作为定积分 I I I 的估计值。

注意,算法第二步需要求 Ω \Omega Ω 的体积。如果 Ω \Omega Ω 是长方体、球体等规则形状,那么可以解析地算出体积 v v v。可是如果 Ω \Omega Ω 是不规则形状,那么就需要定积分求 Ω \Omega Ω 的体积 v v v, 这是比较困难的。可以用类似于上一小节“求阴影部分面积”的方法近似计算体积 v v v

举例讲解多元函数的蒙特卡洛积分:这个例子中被积分的函数是二元函数:

f ( x , y )   =   { 1 , if   x 2 + y 2 ≤ 1 ; 0 , otherwise . ( 2.4 ) \left.f\big(x,y\big)\:=\:\left\{\begin{array}{ll}1,&\text{if}\:x^2+y^2\leq1;\\0,&\text{otherwise}.\end{array}\right.\right. \quad{(2.4)} f(x,y)={1,0,ifx2+y21;otherwise.(2.4)

直观地说,如果点 ( x , y ) (x,y) (x,y) 落在右图的绿色圆内,那么函数值就是 1; 否则函数值就是 0。定义集合 Ω = \Omega= Ω= [ − 1 , 1 ] × [ − 1 , 1 ] [-1,1]\times[-1,1] [1,1]×[1,1], 即右图中蓝色的正方形,它的面积是 v = 4 v=4 v=4

在这里插入图片描述

定积分
I   =   ∫ Ω   f ( x , y )   d x   d y I\:=\:\int_{\Omega}\:f\big(x,y\big)\:dx\:dy I=Ωf(x,y)dxdy

等于多少呢?很显然,定积分等于圆的面积,即 π ⋅ 1 2 = π \pi\cdot1^2=\pi π12=π。因此,定积分 I = π I=\pi I=π。用蒙特卡洛求出 I I I,就得到了 π \pi π。从集合 Ω = [ − 1 , 1 ] × [ − 1 , 1 ] \Omega=[-1,1]\times[-1,1] Ω=[1,1]×[1,1]上均匀随机抽样 n n n 个点,记作 ( x 1 , y 1 ) , ⋯   , ( x n , y n ) (x_1,y_1),\cdots,(x_n,y_n) (x1,y1),,(xn,yn)。应用公式(2.3), 可得

q n   =   v ⋅ 1 n ∑ i = 1 n f ( x i , y i )   =   4 n ∑ i = 1 n f ( x i , y i ) . ( 2.5 ) q_{n}\:=\:v\cdot\frac{1}{n}\sum_{i=1}^{n}f(x_{i},y_{i})\:=\:\frac{4}{n}\sum_{i=1}^{n}f(x_{i},y_{i}). \quad{(2.5)} qn=vn1i=1nf(xi,yi)=n4i=1nf(xi,yi).(2.5)

q n q_n qn 作为对定积分 I = π I=\pi I=π 的近似。这与前面近似 π \pi π 的算法完全相同,区别在于此处的算法是从另一个角度推导出的。

例四:近似期望

蒙特卡洛还可以用来近似期望,这在整本书中会反复应用。设 X X X d d d 维随机变量,它的取值范围是集合 Ω ⊂ R d \Omega\subset\mathbb{R}^d ΩRd。函数 p ( x ) p(\boldsymbol{x}) p(x) X X X 的概率密度函数。设 f : Ω ↦ R f:\Omega\mapsto\mathbb{R} f:ΩR 是任意的多元函数,它关于变量 X X X 的期望是:
E X ∼ p ( ⋅ ) [ f ( X ) ]   =   ∫ Ω p ( x ) ⋅ f ( x )   d   x . \mathbb{E}_{X\sim p(\cdot)}\Big[f(X)\Big]\:=\:\int_{\Omega}p(\boldsymbol{x})\cdot f(\boldsymbol{x})\:d\:\boldsymbol{x}. EXp()[f(X)]=Ωp(x)f(x)dx.

由于期望是定积分,所以可以按照上一小节的方法,用蒙特卡洛求定积分。上一小节在集合 Ω \Omega Ω上做均匀抽样,用得到的样本近似上面公式中的定积分。

下面介绍一种更好的算法。既然我们知道概率密度函数 p ( x ) p(x) p(x), 我们最好是按照 p ( x ) p(x) p(x) 做非均匀抽样,而不是均匀抽样。按照 p ( x ) p(x) p(x) 做非均匀抽样,可以比均匀抽样有更快的收敛。具体步骤如下:

  1. 按照概率密度函数 p ( x ) p(x) p(x),在集合 Ω \Omega Ω 上做非均匀随机抽样,得到 n n n 个样本,记作向量 x 1 , ⋯   , x n ∼ p ( ⋅ ) x_1,\cdots,x_n\sim p(\cdot) x1,,xnp()。样本数量 n n n 由用户自己定, n n n 越大,计算量越大;近似越准确。
  2. 对函数值 f ( x 1 ) , ⋯   , f ( x n ) f(x_1),\cdots,f(x_n) f(x1),,f(xn) 求平均:

q n   =   1 n ∑ i = 1 n f ( x i ) . q_{n}\:=\:\frac{1}{n}\sum_{i=1}^{n}f\left(x_{i}\right). qn=n1i=1nf(xi).

  1. 返回 q n q_n qn 作为期望 E X ∼ p ( ⋅ ) [ f ( X ) ] \mathbb{E}_{X\sim p(\cdot)}[f(X)] EXp()[f(X)] 的估计值。

注 如果按照上述方式做编程实现,需要储存函数值 f ( x 1 ) , ⋯   , f ( x n ) f(x_1),\cdots,f(x_n) f(x1),,f(xn)。但用如下的方式做编程实现,可以减小内存开销。初始化 q 0 = 0 q_0=0 q0=0。从 t = 1 t=1 t=1 n n n,依次计算
q t   =   ( 1 − 1 t ) ⋅ q t − 1   +   1 t ⋅ f ( x t ) . ( 2.6 ) q_{t}\:=\:\left(1-\frac{1}{t}\right)\cdot q_{t-1}\:+\:\frac{1}{t}\cdot f\left(x_{t}\right). \quad{(2.6)} qt=(1t1)qt1+t1f(xt).(2.6)
不难证明,这样得到的 q n q_n qn 等于 1 n ∑ i = 1 n f ( x i ) \frac1n\sum_{i=1}^nf(x_i) n1i=1nf(xi)。这样无需存储所有的 f ( x 1 ) , ⋯   , f ( x n ) f(x_1),\cdots,f(x_n) f(x1),,f(xn)。可以进一步把公式(2.6) 中的 1 t \frac1t t1 替换成 α t \alpha_t αt, 得到公式:

q t   =   ( 1 − α t ) ⋅ q t − 1   +   α t ⋅ f ( x t ) . q_{t}\:=\:\left(1-\alpha_{t}\right)\cdot q_{t-1}\:+\:\alpha_{t}\cdot f(x_{t}). qt=(1αt)qt1+αtf(xt).

这个公式叫做 Robbins-Monro 算法,其中 α n \alpha_n αn 称为学习步长或学习率。只要 α t \alpha_t αt 满足下面的性质,就能保证算法的正确性:

lim ⁡ n → ∞   ∑ t = 1 n α t   =   ∞ 和 lim ⁡ n → ∞   ∑ t = 1 n α t 2   <   ∞ . \lim_{n\to\infty}\:\sum_{t=1}^{n}\alpha_{t}\:=\:\infty\quad\text{和}\quad\lim_{n\to\infty}\:\sum_{t=1}^{n}\alpha_{t}^{2}\:<\:\infty. nlimt=1nαt=nlimt=1nαt2<∞.

显然, α t = 1 t \alpha_t=\frac1t αt=t1 满足上述性质。Robbins-Monro 算法可以应用在 Q 学习算法中。

例五:随机梯度

我们可以用蒙特卡洛近似期望来理解随机梯度算法。

设随机变量 X X X 为一个数据样本,令 w w w 为神经网络的参数。设 p ( x ) p(\boldsymbol{x}) p(x) 为随机变量 X X X 的概率密度函数。定义损失函数 L ( X ; w ) L(X;\boldsymbol{w}) L(X;w)。它的值越小,意味着模型做出的预测越准确;反之,它的值越大,则意味着模型做出的预测越差。因此,我们希望调整神经网络的参数 w w w, 使得损失函数的期望尽量小。神经网络的训练可以定义为这样的优化问题:

min ⁡ w   E X ∼ p ( ⋅ ) [ L ( X ; w ) ] . \min_{\boldsymbol{w}}\:\mathbb{E}_{X\sim p(\cdot)}\Big[L(X;\boldsymbol{w})\Big]. wminEXp()[L(X;w)].

目标函数 E X [ L ( X ; w ) ] \mathbb{E}_X[L(X;\boldsymbol{w})] EX[L(X;w)] 关于 w w w 的梯度是:

g ≜   ∇ w E X ∼ p ( ⋅ ) [   L ( X ; w )   ]   =   E X ∼ p ( ⋅ ) [   ∇ w   L ( X ; w )   ] . ( 2.7 ) \boldsymbol{g}\triangleq\:\nabla_{\boldsymbol{w}}\mathbb{E}_{X\sim p(\cdot)}\Big[\:L(X;\boldsymbol{w})\:\Big]\:=\:\mathbb{E}_{X\sim p(\cdot)}\Big[\:\nabla_{\boldsymbol{w}}\:L(X;\boldsymbol{w})\:\Big]. \quad{(2.7)} gwEXp()[L(X;w)]=EXp()[wL(X;w)].(2.7)

可以做梯度下降更新 w w w, 以减小目标函数 E X [ L ( X ; w ) ] \mathbb{E}_X[L(X;\boldsymbol{w})] EX[L(X;w)]:
w ← w − α ⋅ g . w\gets w-\alpha\cdot g. wwαg.
此处的 α \alpha α被称作学习率 (learning rate)。直接计算梯度 g g g 通常会比较慢。为了加速计算, 可以对期望

g = E X ∼ p ( ⋅ ) [ ∇ w L ( X ; w ) ] g=\mathbb E_{X\sim p(\cdot)}\Big[\nabla_{\boldsymbol{w}}L(X;\boldsymbol{w})\Big] g=EXp()[wL(X;w)]

做蒙特卡洛近似,把得到的近似梯度 g ~ \tilde{g} g~ 称作随机梯度 (stochastic gradient), 用 g ~ \tilde{g} g~ 代替 g g g 来更新 w w w

  1. 根据概率密度函数 p ( x ) p(\boldsymbol{x}) p(x) 做随机抽样,得到 B B B 个样本,记作 x ~ 1 , … , x ~ B \tilde{x}_1,\ldots,\tilde{x}_B x~1,,x~B
  2. 计算梯度 ∇ w L ( x ~ j ; w ) \nabla_{\boldsymbol{w}}L(\tilde{\boldsymbol{x}}_j;\boldsymbol{w}) wL(x~j;w), ∀ j = 1 , … , B \forall j=1,\ldots,B j=1,,B。对它们求平均:

g ~   =   1 B ∑ j = 1 B ∇ w L ( x ~ j ; w ) . \tilde{\boldsymbol{g}}\:=\:\frac{1}{B}\sum_{j=1}^{B}\nabla_{\boldsymbol{w}}L(\tilde{\boldsymbol{x}}_{j};\boldsymbol{w}). g~=B1j=1BwL(x~j;w).

​ 我们称 g ~ \tilde{g} g~随机梯度。因为 E [ g ~ ] = g \mathbb{E}[\tilde{g}]=g E[g~]=g,它是 g g g 的一个无偏估计。
3. 做随机梯度下降更新 w : w: w:

w   ←   w   −   α ⋅ g ~ . w\:\leftarrow\:w\:-\:\alpha\cdot\tilde{\boldsymbol{g}}. wwαg~.

样本数量 B B B 称作批量大小 (batch size), 通常是一个比较小的正整数,比如 1、8、16、32。所以我们称之为最小批 (mini-batch) SGD

在实际应用中,样本真实的概率密度函数 p ( x ) p(\boldsymbol{x}) p(x) 一般是未知的。在训练神经网络的时候,我们通常会收集一个训练数据集 X = { x 1 , ⋯   , x n } X=\{x_1,\cdots,x_n\} X={x1,,xn}, 并求解这样一个经验风险最小化 (empirical risk minimization) 问题:
min ⁡ w   1 n ∑ i = 1 n L ( x i ; w ) . ( 2.8 ) \min_{\boldsymbol{w}}\:\frac{1}{n}\sum_{i=1}^{n}L(\boldsymbol{x}_{i};\boldsymbol{w}).\quad{(2.8)} wminn1i=1nL(xi;w).(2.8)

这相当于我们用下面这个概率质量函数代替真实的 p ( x ) : p(x): p(x):

p ( x )   =   { 1 n , 如果  x ∈ X ; 0 , 如果  x ∉ X . \left.p(\boldsymbol{x})\:=\:\left\{\begin{array}{ll}\frac{1}{n},&\text{如果 }x\in\mathcal{X};\\0,&\text{如果 }x\not\in\mathcal{X}.\end{array}\right.\right. p(x)={n1,0,如果 xX;如果 xX.

公式的意思是随机变量 X X X 的取值是 n n n 个数据点中的一个,概率都是 1 n \frac1n n1。那么最小批 SGD 的每一轮都从集合 { x 1 , ⋯   , x n } \{x_1,\cdots,x_n\} {x1,,xn} 中均匀随机抽取 B B B 个样本,计算随机梯度,更新模型参数 w ∘ w_{\circ} w

总结

本文详细讲解了蒙特卡洛的应用。其中最重要的知识点是蒙特卡洛近似期望:设 X X X 是随机变量, x x x 是观测值,蒙特卡洛用 f ( x ) f(x) f(x) 近似期望 E [ f ( X ) ] \mathbb{E}[f(X)] E[f(X)]。强化学习中的 Q 学习、SARSA、策略梯度等算法都需要这样用蒙特卡洛近似期望。

后记

截至2024年1月28日18点38分,完成Monte Carlo Algorithms这节的学习。主要学习用蒙特卡洛方法求随机梯度,对后续强化学习算法的学习有帮助。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/355214.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

SpringBoot整合Quartz任务,java对任务创建、删除、修改、查询

SpringBoot整合Quartz定时任务 1、定时任务相关概念2、SpringBoot集成Quartz2.1、Quartz相关表2.2、pom.xml2.3、application.yml2.4、java对任务增删改查2.4.1、common相关配置类2.4.2、pojo类2.4.3、task类2.4.4、Controller类 3、一些理解3.1、Quartz的集群原理以及配置&…

Android 基础技术——Bitmap

笔者希望做一个系列&#xff0c;整理 Android 基础技术&#xff0c;本章是关于 Bitmap Bitmap 内存如何计算 占用内存 宽 * 缩放比例 * 高 * 缩放比例 * 每个像素所占字节 缩放比例 设备dpi/图片所在目录的dpi Bitmap加载优化&#xff1f;不改变图片质量的情况下怎么优化&am…

AlmaLinux上安装Docker

AlmaLinux上安装Docker 文章目录 AlmaLinux上安装Docker一、前言二、具体步骤1、Docker 下载更新系统包索引&#xff1a;添加Docker仓库&#xff1a;安装Docker引擎&#xff1a; 2、Docker服务启动启动Docker服务&#xff1a;设置Docker开机自启&#xff1a; 3、Docker 安装验证…

基于SSM的网络办公系统(有报告)。Javaee项目。ssm项目。

演示视频&#xff1a; 基于SSM的网络办公系统&#xff08;有报告&#xff09;。Javaee项目。ssm项目。 项目介绍&#xff1a; 采用M&#xff08;model&#xff09;V&#xff08;view&#xff09;C&#xff08;controller&#xff09;三层体系结构&#xff0c;通过Spring Spri…

mysql注入联合查询

环境搭建 下载复现漏洞的包 下载小皮面板 将下载好的文件解压在小皮面板的phpstudy_pro\WWW路径下 将这个文件phpstudy_pro\WWW\sqli-labs-php7-master\sql-connections\db-creds.inc 中的密码更改为小皮面板中的密码 选择php版本 在小皮中启动nginx和数据库 使用环回地址访…

java如何处理多线程异常

一、一个线程在执行过程中发生了异常会怎样&#xff1f; 那要看我们是否对这个异常进行了处理&#xff0c;如果处理了&#xff0c;那么线程会继续执行&#xff0c;如果没有处理&#xff0c;那么线程会释放掉自己所持有的锁&#xff0c;退出执行&#xff0c;如果这个线程是主线程…

linux 基于科大讯飞的文字转语音使用

官方文档地址&#xff1a;离线语音合成 Linux SDK 文档 | 讯飞开放平台文档中心 一、SDK下载 1、点击上面官方文档地址的链接&#xff0c;可以跳转到以下界面。 2、点击“普通版”&#xff0c;跳转到以下界面。 3、点击“下载”跳转到以下界面 4、最后&#xff0c;点击“SDK下…

电脑和手机连接酒店的wifi,网络不通导致charles无法抓手机的包

查看苹果手机&#xff0c;连wifi后的ip地址 电脑去ping 手机的ip地址&#xff0c;发现ping不通 解决方案&#xff1a; 应该是酒店wifi的问题&#xff0c;让朋友开个手机热点&#xff0c;电脑和我的手机都连这个热点&#xff0c;就可以抓包了

【vue2】路由之 Vue Router

文章目录 一、安装二、基础使用1、简单的示例2、动态路由2.1 定义动态路径参数2.2 获取动态路径的参数2.3 捕获所有路由 3、嵌套路由4、编程式的导航4.1 router.push4.2 router.replace4.3 router.go(n) 5、命名路由6、重定向 三、进阶1、导航守卫1.1 全局前置守卫1.2 全局后置…

日常学习之:vue + django + docker + heroku 对后端项目 / 前后端整体项目进行部署

文章目录 使用 docker 在 heroku 上单独部署 vue 前端使用 docker 在 heroku 上单独部署 django 后端创建 heroku 项目构建 Dockerfile设置 settings.pydatabase静态文件管理安全设置applicaiton & 中间件配置 设置 requirements.txtheroku container 部署应用 前后端分别部…

SpringBoot整合Xxl-Job实现异步任务调度中心

目录 一、下载 1、源码 2、项目结构 3、模块说明 二、部署任务调度中心 1、创建数据库xxl-job 2、配置数据库 3、启动admin模块 4、打开任务调度中心 三、SpringBoot整合xxl-job 1、导入依赖 2、配置yml文件 3、配置类 4、启动项目 5、任务配置 6、测试 一、下…

Windows 和 Anolis 通过 Docker 安装 Milvus 2.3.4

Windows 10 通过 Docker 安装 Milvus 2.3.4 一.Windows 安装 Docker二.Milvus 下载1.下载2.安装1.Windows 下安装&#xff08;指定好Docker文件目录&#xff09;2.Anolis下安装 三.数据库访问1.ATTU 客户端下载 一.Windows 安装 Docker Docker 下载 双击安装即可&#xff0c;安…

[嵌入式系统-5]:龙芯1B 开发学习套件 -2- LoongIDE 集成开发环境集成开发环境的安装步骤

目录 一、LoongIDE&#xff08;龙芯开发工具集成环境&#xff09;概述 1.1 概述 二、软件开发环境的安装过程 2.0 注意事项 2.1 步骤1&#xff1a;MingW运行环境 2.2 步骤2&#xff1a;安装LoongIDE 2.3 步骤3&#xff1a;安装MIPS工具链 2.4 配置工具链 2.5 重启电脑…

总结NB-IoT模块和单片机的区别

在学习了NB-IoT模块后&#xff0c;紧接着又学习了单片机系统&#xff0c;单片机和NB-IoT模块有什么不同之处呢&#xff0c;总结为以下几点。 大纲如图&#xff1a; 一、硬件层面 1、采用芯片不同&#xff0c; &#xff08;1&#xff09;封装&#xff1a;封装尺寸、方式不同&a…

Qt应用软件【串口篇】串口通信

文章目录 1.串口概述2.串口传输数据的基本原理电信号的传输过程 3.串口的几个概念数据位&#xff08;Data Bits&#xff09;奇偶校验位&#xff08;Parity Bit&#xff09;停止位&#xff08;Stop Bits&#xff09;流控制&#xff08;Flow Control&#xff09;波特率&#xff0…

第九篇【传奇开心果短博文系列】鸿蒙开发技术点案例示例:ArkUI强大的状态管理机制解读

传奇开心果短博文系列 系列短博文目录鸿蒙开发技术点案例示例系列 短博文目录一、前言二、ArkUI强大的状态管理机制介绍三、以官方helloworld示例为例说明ArkUI的状态定义和管理四、以官方 HelloWorld 示例代码为例说明ArkUI状态依赖和自动更新五、以官方helloworld示例代码为例…

PHP语法

#本来是在学命令执行&#xff0c;所以学了学&#xff0c;后来发现&#xff0c;PHP语法和命令执行的关系好像没有那么大&#xff0c;不如直接学php的一些命令执行函数了。# #但是还是更一下&#xff0c;毕竟还是很多地方都要求掌握php作为脚本语言&#xff0c;所以就学了前面的…

多维时序 | Matlab实现DBO-GRU蜣螂算法优化门控循环单元多变量时间序列预测

多维时序 | Matlab实现DBO-GRU蜣螂算法优化门控循环单元多变量时间序列预测 目录 多维时序 | Matlab实现DBO-GRU蜣螂算法优化门控循环单元多变量时间序列预测效果一览基本介绍程序设计参考资料 效果一览 基本介绍 1.Matlab实现DBO-GRU蜣螂算法优化门控循环单元多变量时间序列预…

第四十一周:文献阅读+GAN存在的问题和改进

目录 摘要 Abstract 文献阅读&#xff1a;基于Transformer的时间序列生成对抗网络 现有问题 提出方法 相关前提 GAN&#xff08;生成对抗网络&#xff09; Transformer 方法论 时间序列处理 TTS-GAN &#xff08;基于Transformer的时间序列生成对抗网络&#xff09;…

STM32学习笔记(二) —— 调试串口

我们在调试程序时&#xff0c;经常会使用串口打印相关的调试信息&#xff0c;但是单片机串口不能直接与 PC 端的 USB 接口通讯&#xff0c;需要用到一个USB转串口的芯片来充当翻译的角色。我们使用的开发板上有这个芯片&#xff0c;所以在打印调试信息的时候直接使用USB线连接开…