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

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

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

其中:是智能体选择动作的概率从状态给定我们的策略。
但是我们如何判断我们的策略是否好呢? 我们需要一种方法来衡量它。为此,我们定义了一个分数/目标函数,称为.
目标函数
目标函数 为我们提供了在给定轨迹(不考虑奖励的状态动作序列(与回合相反))的情况下智能体的性能,并输出预期累积奖励。

我们来详细说明一下这个公式
- 预期回报(也称为预期累积奖励),是加权平均值(其中权重由给予),所有可能的回报值可以取的值。

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

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

梯度上升和策略梯度定理
策略梯度是一个优化问题:我们希望找到的值,以最大化我们的目标函数,所以我们需要使用梯度上升。它是梯度下降的逆过程,因为它给出了J(θ)最陡峭的增加方向。.
(如果您需要复习梯度下降和梯度上升的区别,请查看此文和此文)。
我们的梯度上升更新步骤是
我们可以重复应用此更新,希望收敛到最大化.
的值。:
然而,计算
的导数存在两个问题:我们无法计算目标函数的真实梯度,因为它需要计算每个可能轨迹的概率,这在计算上非常昂贵。因此,我们希望通过基于样本的估计(收集一些轨迹)来计算梯度估计。

我们还有另一个问题,我将在下一节(可选)中解释。为了对这个目标函数进行微分,我们需要对状态分布进行微分,这被称为马尔可夫决策过程动力学。这与环境相关联。它为我们提供了环境进入下一个状态的概率,给定当前状态和智能体采取的动作。问题在于我们无法对其进行微分,因为我们可能不知道它。

幸运的是,我们将使用一个叫做策略梯度定理的解决方案,它将帮助我们将目标函数重新表述为一个可微分函数,而无需涉及状态分布的微分。
如果您想了解我们如何推导出此公式来近似梯度,请查看下一节(可选)。
Reinforce 算法,也称为蒙特卡洛策略梯度,是一种策略梯度算法,它使用整个回合的估计回报来更新策略参数。
在一个循环中使用策略
来收集一个回合使用该回合估算梯度
更新策略的权重
-我们可以这样解释这次更新从状态是选择动作(对数)概率的最陡峭增加方向。这告诉我们,如果想增加/减少在状态s_t下选择动作a_t的对数概率,我们应该如何改变策略的权重。.
-:是得分函数
- 如果回报高,它将提高(状态,动作)组合的概率。
- 否则,如果回报低,它将降低(状态,动作)组合的概率。
我们也可以收集多个回合(轨迹)来估计梯度。
