提交 7df14bff 编写于 作者: W wizardforcel

2020-12-25 17:18:32

上级 22c47988
......@@ -15,7 +15,7 @@
# 策略梯度
策略梯度是**强化学习****RL**)的惊人算法之一,在该算法中,我们直接优化由某些参数![](img/00304.jpeg)设置的策略。 到目前为止,我们已经使用 Q 函数来找到最佳策略。 现在,我们将了解如何找到没有 Q 函数的最优策略。 首先,让我们将策略函数定义为![](img/00305.jpeg),即在状态为`s`的情况下采取`a`动作的概率。 我们通过参数![](img/00306.jpeg)将策略参数化为![](img/00307.jpeg),这使我们能够确定状态下的最佳操作。
策略梯度是**强化学习****RL**)的惊人算法之一,在该算法中,我们直接优化由某些参数`θ`设置的策略。 到目前为止,我们已经使用 Q 函数来找到最佳策略。 现在,我们将了解如何找到没有 Q 函数的最优策略。 首先,让我们将策略函数定义为`π(a | s)`,即在状态为`s`的情况下采取`a`动作的概率。 我们通过参数`θ`将策略参数化为`π(a | s; θ)`,这使我们能够确定状态下的最佳操作。
策略梯度方法具有多个优点,它可以处理连续动作空间,在该连续动作空间中,我们具有无限数量的动作和状态。 假设我们正在制造自动驾驶汽车。 驾驶汽车时应避免撞到其他车辆。 当汽车撞到车辆时,我们得到负奖励,而当汽车没有撞到其他车辆时,我们得到正奖励。 我们以仅获得积极奖励的方式更新模型参数,以使我们的汽车不会撞到任何其他车辆。 这是策略梯度的基本思想:我们以最大化报酬的方式更新模型参数。 让我们详细看一下。
......@@ -220,7 +220,7 @@ class PolicyGradient:
在第 8 章,“深度 Q 网络和 Atari 游戏”中,我们研究了 DQN 的工作原理,并应用了 DQN 玩 Atari 游戏。 但是,在那些离散的环境中,我们只有一组有限的动作。 想象一个连续的环境空间,例如训练机器人走路; 在那些环境中,应用 Q 学习是不可行的,因为要找到一个贪婪的策略将需要在每一步进行很多优化。 即使我们使连续的环境离散,我们也可能会失去重要的功能并最终获得大量的动作空间。 当我们拥有巨大的行动空间时,很难实现融合。
因此,我们使用称为演员评论家的新架构,该架构具有两个网络:演员和评论家。 演员评论家架构结合了策略梯度和状态操作值功能。 **演员**网络的作用是通过调整参数![](img/00310.jpeg)来确定**状态**中的最佳动作,而**评论家**的作用是评估**演员**产生的动作。 **评论家**通过计算时间差异误差来评估演员的行动。 也就是说,我们在**演员**网络上执行策略梯度以选择操作, **评论家**网络使用 TD 误差评估由**演员**网络产生的操作。 下图显示了演员评论家架构:
因此,我们使用称为演员评论家的新架构,该架构具有两个网络:演员和评论家。 演员评论家架构结合了策略梯度和状态操作值功能。 **演员**网络的作用是通过调整参数`θ`来确定**状态**中的最佳动作,而**评论家**的作用是评估**演员**产生的动作。 **评论家**通过计算时间差异误差来评估演员的行动。 也就是说,我们在**演员**网络上执行策略梯度以选择操作, **评论家**网络使用 TD 误差评估由**演员**网络产生的操作。 下图显示了演员评论家架构:
![](img/00311.gif)
......@@ -230,16 +230,20 @@ class PolicyGradient:
现在,我们将详细介绍 DDPG 算法。
假设我们有两个网络:演员网络和评论家网络。 我们用输入为状态的![](img/00312.jpeg)表示演员网络
,并以![](img/00313.jpeg)作为演员网络权重的结果进行操作。 我们将评论家网络表示为![](img/00314.jpeg),它将输入作为状态和动作并返回`Q`值,其中![](img/00315.jpeg)是评论家网络权重。
假设我们有两个网络:演员网络和评论家网络。 我们用输入为状态的`μ(s; θ^μ)`表示演员网络
,并以`θ^μ`作为演员网络权重的结果进行操作。 我们将评论家网络表示为`Q(s, a; θ^Q)`,它将输入作为状态和动作并返回`Q`值,其中`θ^Q`是评论家网络权重。
同样,我们将演员网络和评论家网络的目标网络分别定义为![](img/00316.jpeg)和![](img/00317.jpeg),其中![](img/00318.jpeg)和![](img/00319.jpeg)是目标演员和评论家网络的权重。
同样,我们将演员网络和评论家网络的目标网络分别定义为`μ(s; θ^μ')``Q(s, a; θ^Q')`,其中`θ^μ'``θ^Q'`是目标演员和评论家网络的权重。
我们使用策略梯度更新演员网络权重,并使用根据 TD 误差计算得出的梯度更新评论家网络权重。
首先,我们通过将探索噪声`N`添加到演员网络产生的动作(例如![](img/00320.jpeg))来选择动作。 我们在`s`状态下执行此操作,获得`r`奖励,然后移至新状态`s'`。 我们将此转移信息存储在经验回放缓冲区中。
经过一些迭代后,我们从回放缓冲区采样转移并训练网络,然后计算目标`Q`值![](img/00321.jpeg)。 我们将 TD 误差计算为:
经过一些迭代后,我们从回放缓冲区采样转移并训练网络,然后计算目标`Q`值:
![](img/00321.jpeg)
我们将 TD 误差计算为:
![](img/00322.jpeg)
......@@ -533,13 +537,13 @@ for i in range(no_of_episodes):
在 TRPO 中,我们迭代地改进了该策略,并施加了一个约束,以使旧策略和新策略之间的 **Kullback-Leibler****KL**)差异要小于某个常数。 ![](img/00326.jpeg)。 该约束称为信任区域约束。
那么什么是 KL 散度? KL 散度告诉我们两个概率分布如何彼此不同。 由于我们的策略是针对行动的概率分布,因此 KL 差异告诉我们新策略与旧策略有多远。 为什么我们必须使旧策略和新策略之间的距离保持小于恒定值![](img/00327.jpeg)? 因为我们不希望我们的新策略与旧策略脱节。 因此,我们施加了约束以使新策略接近旧策略。 同样,为什么我们必须保持旧策略呢? 当新策略与旧策略相距甚远时,它将影响代理的学习绩效,并导致完全不同的学习行为。 简而言之,在 TRPO 中,我们朝着改善策略的方向迈出了一步,即使报酬最大化,但我们还应确保满足信任区域约束。 [它使用共轭梯度下降](http://www.idi.ntnu.no/~elster/tdt24/tdt24-f09/cg.pdf)优化网络参数![](img/00328.jpeg),同时满足约束条件。 该算法保证了单调策略的改进,并且在各种连续环境中也取得了出色的效果。
那么什么是 KL 散度? KL 散度告诉我们两个概率分布如何彼此不同。 由于我们的策略是针对行动的概率分布,因此 KL 差异告诉我们新策略与旧策略有多远。 为什么我们必须使旧策略和新策略之间的距离保持小于恒定值`δ`? 因为我们不希望我们的新策略与旧策略脱节。 因此,我们施加了约束以使新策略接近旧策略。 同样,为什么我们必须保持旧策略呢? 当新策略与旧策略相距甚远时,它将影响代理的学习绩效,并导致完全不同的学习行为。 简而言之,在 TRPO 中,我们朝着改善策略的方向迈出了一步,即使报酬最大化,但我们还应确保满足信任区域约束。 [它使用共轭梯度下降](http://www.idi.ntnu.no/~elster/tdt24/tdt24-f09/cg.pdf)优化网络参数![](img/00328.jpeg),同时满足约束条件。 该算法保证了单调策略的改进,并且在各种连续环境中也取得了出色的效果。
现在,我们将了解 TRPO 的数学原理。 如果您对数学不感兴趣,可以跳过本节。
准备一些很棒的数学。
让我们指定预期的总折扣奖励![](img/00329.jpeg),如下所示:
让我们指定预期的总折扣奖励`η(π)`,如下所示:
![](img/00330.jpeg)
......@@ -576,9 +580,9 @@ Kakade 和 Langford 从`(1)`得出以下方程式:
`C`是惩罚系数,等于![](img/00359.jpeg),![](img/00360.jpeg)表示旧策略与新策略之间的 KL 散度。
如果我们仔细观察前面的方程式`(2)`,我们会注意到,只要右侧最大化,我们的预期长期回报![](img/00361.jpeg)就会单调增加。
如果我们仔细观察前面的方程式`(2)`,我们会注意到,只要右侧最大化,我们的预期长期回报`η`就会单调增加。
让我们将此右侧术语定义为![](img/00362.jpeg),如下所示:
让我们将此右侧术语定义为`M[i](π)`,如下所示:
![](img/00363.jpeg) ----(3)
......@@ -628,9 +632,9 @@ Kakade 和 Langford 从`(1)`得出以下方程式:
# 近端策略优化
现在,我们将看另一种策略优化算法,称为**近端策略优化****PPO**)。 它是对 TRPO 的改进,由于其性能,已成为解决许多复杂 RL 问题的默认 RL 算法。 它是 OpenAI 的研究人员为克服 TRPO 的缺点而提出的。 回忆一下 TRPO 的替代目标函数。 这是一个约束优化问题,我们在其中施加了一个约束-新旧策略之间的平均 KL 差异应小于![](img/00382.jpeg)。 但是 TRPO 的问题在于,它需要大量计算能力才能计算共轭梯度以执行约束优化。
现在,我们将看另一种策略优化算法,称为**近端策略优化****PPO**)。 它是对 TRPO 的改进,由于其性能,已成为解决许多复杂 RL 问题的默认 RL 算法。 它是 OpenAI 的研究人员为克服 TRPO 的缺点而提出的。 回忆一下 TRPO 的替代目标函数。 这是一个约束优化问题,我们在其中施加了一个约束-新旧策略之间的平均 KL 差异应小于`δ`。 但是 TRPO 的问题在于,它需要大量计算能力才能计算共轭梯度以执行约束优化。
因此,PPO 通过将约束更改为惩罚项来修改 TRPO 的目标函数,因此我们不想执行共轭梯度。 现在,让我们看看 PPO 的工作原理。 我们将![](img/00383.jpeg)定义为新旧策略之间的概率比。 因此,我们可以将目标函数编写为:
因此,PPO 通过将约束更改为惩罚项来修改 TRPO 的目标函数,因此我们不想执行共轭梯度。 现在,让我们看看 PPO 的工作原理。 我们将`r[t](θ)`定义为新旧策略之间的概率比。 因此,我们可以将目标函数编写为:
![](img/00384.jpeg)
......@@ -638,19 +642,23 @@ Kakade 和 Langford 从`(1)`得出以下方程式:
![](img/00385.jpeg)
我们刚刚在实际方程式中添加了一个新术语![](img/00386.jpeg)。 这是什么意思? 实际上,它会在间隔![](img/00388.jpeg)之间裁剪![](img/00387.jpeg)的值,也就是说,如果![](img/00389.jpeg)的值导致目标函数增加,则在间隔之间大量裁剪的值会降低其效果。
我们刚刚在实际方程式中添加了一个新项:
![](img/00386.jpeg)
基于两种情况,我们将概率比限制在![](img/00390.jpeg)或![](img/00391.jpeg)
这是什么意思? 实际上,它会在间隔`[1 - ε, 1 + ε]`之间裁剪`r[t](θ)`的值,也就是说,如果`r[t](θ)`的值导致目标函数增加,则在间隔之间大量裁剪的值会降低其效果。
* **案例 1**:![](img/00392.jpeg)
基于两种情况,我们将概率比限制在`1 - ε``ε`
当优势为正时,这意味着相对于所有其他操作的平均值,应优先选择相应的操作。 我们将为该操作增加![](img/00393.jpeg)的值,因此将有更大的机会被选择。 当我们执行![](img/00394.jpeg)的限幅值时,不会超过![](img/00395.jpeg)
* **案例 1**`A_hat[t] > 0`
当优势为正时,这意味着相对于所有其他操作的平均值,应优先选择相应的操作。 我们将为该操作增加`r[t](θ)`的值,因此将有更大的机会被选择。 当我们执行`r[t](θ)`的限幅值时,不会超过`1 + ε`
![](img/00396.gif)
* **案例 2**![](img/00397.jpeg)
* **案例 2**`A_hat[t]`
当优势的值为负时,这意味着该动作没有意义,因此不应采用。 因此,在这种情况下,我们将减小该操作的![](img/00398.jpeg)值,以使其被选择的机会较小。 类似地,当我们执行裁剪时,![](img/00399.jpeg)的值将不会减小到小于![](img/00400.jpeg)
当优势的值为负时,这意味着该动作没有意义,因此不应采用。 因此,在这种情况下,我们将减小该操作的`r[t](θ)`值,以使其被选择的机会较小。 类似地,当我们执行裁剪时,`r[t](θ)`的值将不会减小到小于`1 - ε`
![](img/00401.gif)
......@@ -658,13 +666,17 @@ Kakade 和 Langford 从`(1)`得出以下方程式:
![](img/00402.jpeg)
`c[1]``c[2]`是系数,![](img/00403.jpeg)是实际值和目标值函数之间的平方误差损失,即 是![](img/00404.jpeg)`S`是熵加。
`c[1]``c[2]`是系数,`L[t]^(VP)`是实际值和目标值函数之间的平方误差损失,即:
![](img/00404.jpeg)
`S`是熵增。
# 概要
我们从策略梯度方法开始,该方法无需 Q 函数即可直接优化策略。 我们通过解决 Lunar Lander 游戏了解了策略梯度,并研究了 DDPG,它具有策略梯度和 Q 函数的优点。
然后,我们研究了诸如 TRPO 之类的策略优化算法,该算法通过对新旧策略之间的 KL 差异实施不大于![](img/00405.jpeg)的限制来确保单调策略的改进。
然后,我们研究了诸如 TRPO 之类的策略优化算法,该算法通过对新旧策略之间的 KL 差异实施不大于`δ`的限制来确保单调策略的改进。
我们还研究了近端策略优化,该优化通过惩罚大型策略更新将约束变为惩罚。 在下一章第 12 章, “Capstone 项目 – 使用 DQN 进行赛车”,我们将了解如何构建能够赢得赛车游戏的代理。
......
......@@ -27,7 +27,7 @@ I2A 的架构如下:
![](img/00409.gif)
推出编码器分为两层:想象未来和编码器。 想象未来是想象力发生的地方。 看上图。 想象未来由想象核心组成。 当将状态![](img/00410.jpeg)馈送到想象力核心时,我们得到了新状态![](img/00411.jpeg)和奖励![](img/00412.jpeg),当我们将这个新状态![](img/00413.jpeg)馈给了下一个想象力核心时,我们得到了下一个新状态 状态![](img/00414.jpeg)和奖励![](img/00415.jpeg)。 当我们在某些`n`步骤中重复这些步骤时,我们会得到一个基本上是状态和奖励对的推出,然后我们使用诸如 LSTM 的编码器对该推广进行编码。 结果,我们得到了卷展编码。 这些推出编码实际上是描述未来想象路径的嵌入。 我们将针对未来不同的想象路径使用多个推出编码器,并使用聚合器来聚合此推出编码器。
推出编码器分为两层:想象未来和编码器。 想象未来是想象力发生的地方。 看上图。 想象未来由想象核心组成。 当将状态`o[t]`馈送到想象力核心时,我们得到了新状态`o_hat[t + 1]`和奖励`r_hat[t + 1]`,当我们将这个新状态`o_hat[t + 1]`馈给了下一个想象力核心时,我们得到了下一个新状态 状态`o_hat[t + 2]`和奖励`r_hat[t + 2]`。 当我们在某些`n`步骤中重复这些步骤时,我们会得到一个基本上是状态和奖励对的推出,然后我们使用诸如 LSTM 的编码器对该推广进行编码。 结果,我们得到了卷展编码。 这些推出编码实际上是描述未来想象路径的嵌入。 我们将针对未来不同的想象路径使用多个推出编码器,并使用聚合器来聚合此推出编码器。
等待。 想象力如何在**想象力核心**中发生? **想象力核心**中实际上是什么? 下图显示了单个**想象核心**
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册