深度强化学习课程文档
深入探索策略梯度方法
并获得增强的文档体验
开始使用
深入探索策略梯度方法
了解全局
我们刚刚了解到策略梯度方法旨在找到参数以 最大化期望回报。
其思想是我们有一个参数化的随机策略。在我们的例子中,神经网络输出一个关于动作的概率分布。采取每个动作的概率也称为动作偏好。
如果我们以 CartPole-v1 为例
- 作为输入,我们有一个状态。
- 作为输出,我们拥有在该状态下动作的概率分布。

我们使用策略梯度的目标是通过调整策略来控制动作的概率分布,以便好的动作(最大化回报的动作)在未来被更频繁地采样。 每次智能体与环境交互时,我们都会调整参数,以便在未来更有可能采样到好的动作。
但是我们将如何使用期望回报来优化权重?
我们的想法是让智能体在一个 episode 内进行交互。如果我们赢得了这个 episode,我们认为采取的每个动作都是好的,并且在未来必须更多地采样,因为它们导致了胜利。
因此,对于每个状态-动作对,我们都希望增加:在该状态下采取该动作的概率。如果我们输了则减少。
策略梯度算法(简化版)如下所示

现在我们了解了全局,让我们更深入地研究策略梯度方法。
深入探索策略梯度方法
我们有随机策略它有一个参数。这个,给定一个状态,输出动作的概率分布。

其中是智能体从状态中选择动作的概率,给定我们的策略。
但是我们如何知道我们的策略是否良好? 我们需要有一种衡量它的方法。为了知道这一点,我们定义了一个称为.
目标函数
目标函数 给出了在给定轨迹(状态动作序列,不考虑奖励(与 episode 相反))的情况下,智能体的性能,并输出期望累积奖励。

让我们更详细地介绍一下这个公式
- 期望回报(也称为期望累积奖励)是加权平均值(权重由下式给出的所有可能值,回报可以取值)。

-:来自任意轨迹的回报。为了使用这个量来计算期望回报,我们需要将其乘以每个可能轨迹的概率。
-:每个可能轨迹的概率(该概率取决于,因为它定义了智能体用于选择轨迹动作的策略,这会影响访问的状态)。

-:期望回报,我们通过对所有轨迹求和来计算它,给定的轨迹概率乘以该轨迹的回报。
然后我们的目标是通过找到来最大化期望累积奖励,这将输出最佳的动作概率分布

梯度上升和策略梯度定理
策略梯度是一个优化问题:我们想要找到的值,以最大化我们的目标函数,因此我们需要使用梯度上升。它是梯度下降的逆过程,因为它给出了.
的最陡峭上升方向(如果您需要复习梯度下降和梯度上升之间的区别,请查看这里和这里)。
我们的梯度上升更新步骤是
我们可以重复应用此更新,希望收敛到最大化.
的值。但是,计算:
的导数存在两个问题。我们无法计算目标函数的真实梯度,因为它需要计算每个可能轨迹的概率,这在计算上非常昂贵。因此,我们希望使用基于样本的估计(收集一些轨迹)来计算梯度估计。
我在下一个可选部分解释了另一个问题。为了区分这个目标函数,我们需要区分状态分布,称为马尔可夫决策过程动力学。这与环境相关联。它给出了环境进入下一个状态的概率,给定当前状态和智能体采取的动作。问题是我们无法区分它,因为我们可能不了解它。

幸运的是,我们将使用一个称为策略梯度定理的解决方案,它将帮助我们将目标函数重新表述为可微分函数,而无需涉及状态分布的微分。

如果您想了解我们如何推导出这个公式来近似梯度,请查看下一个(可选)部分。
Reinforce 算法(蒙特卡洛 Reinforce)
Reinforce 算法,也称为蒙特卡洛策略梯度,是一种策略梯度算法,它使用来自整个 episode 的估计回报来更新策略参数:
在一个循环中
使用策略来收集一个 episode
使用 episode 来估计梯度
更新策略的权重
我们可以将此更新解释如下
-是选择动作中选择动作的(对数)概率的最陡峭上升方向。这告诉我们,如果我们想要增加/减少选择动作在状态.
-的对数概率,我们应该如何更改策略的权重:是评分函数
- 如果回报很高,它将提高(状态,动作)组合的概率。
- 否则,如果回报很低,它将降低(状态,动作)组合的概率。
我们还可以收集多个 episode(轨迹)来估计梯度
