深度强化学习课程文档

深入探讨策略梯度方法

Hugging Face's logo
加入 Hugging Face 社区

并获得增强的文档体验

开始使用

深入探讨策略梯度方法

全面了解

我们刚刚了解到,策略梯度方法旨在寻找参数θ \theta 最大化预期回报

其思想是我们有一个参数化的随机策略。在我们的例子中,一个神经网络输出动作的概率分布。采取每个动作的概率也称为动作偏好

以CartPole-v1为例

  • 输入是一个状态。
  • 输出是该状态下动作的概率分布。
Policy based

我们使用策略梯度的目标是通过调整策略来控制动作的概率分布,使好的动作(最大化回报的动作)在未来被更频繁地采样。 每次智能体与环境交互时,我们都会调整参数,使好的动作在未来更有可能被采样。

我们如何使用预期回报来优化权重呢

想法是,我们将在一个回合中让智能体进行交互。如果我们赢得了这个回合,我们认为所采取的每个动作都是好的,并且由于它们导致了胜利,因此未来必须更多地采样它们。

因此,对于每个状态-动作对,我们希望增加P(as)P(a|s):在该状态下采取该动作的概率。如果我们输了则降低。

策略梯度算法(简化版)如下所示

Policy Gradient Big Picture

现在我们对大局有了了解,让我们深入探讨策略梯度方法。

深入探讨策略梯度方法

我们有随机策略π\pi它有一个参数θ\theta。这个π\pi给定一个状态,输出动作的概率分布

Policy

其中:πθ(atst)\pi_\theta(a_t|s_t)是智能体选择动作的概率ata_t从状态sts_t给定我们的策略。

但是我们如何判断我们的策略是否好呢? 我们需要一种方法来衡量它。为此,我们定义了一个分数/目标函数,称为J(θ)J(\theta).

目标函数

目标函数 为我们提供了在给定轨迹(不考虑奖励的状态动作序列(与回合相反))的情况下智能体的性能,并输出预期累积奖励

Return

我们来详细说明一下这个公式

  • 预期回报(也称为预期累积奖励),是加权平均值(其中权重由P(τ;θ)P(\tau;\theta)给予),所有可能的回报值R(τ)R(\tau)可以取的值。
Return

-R(τ)R(\tau):来自任意轨迹的回报。为了获取这个量并用它来计算预期回报,我们需要将其乘以每个可能轨迹的概率。

-P(τ;θ)P(\tau;\theta):每个可能轨迹的概率τ\tau(该概率取决于θ\theta因为它定义了它用于选择轨迹动作的策略,这会影响所访问的状态)。

Probability

-J(θ)J(\theta):预期回报,我们通过将所有轨迹的概率(给定θ\theta )乘以该轨迹的回报来计算。

我们的目标是最大化预期累积奖励,通过找到θ\theta 这将输出最佳的动作概率分布。

Max objective

梯度上升和策略梯度定理

策略梯度是一个优化问题:我们希望找到θ\theta的值,以最大化我们的目标函数J(θ)J(\theta),所以我们需要使用梯度上升。它是梯度下降的逆过程,因为它给出了J(θ)最陡峭的增加方向。J(θ)J(\theta).

(如果您需要复习梯度下降和梯度上升的区别,请查看此文此文)。

我们的梯度上升更新步骤是θθ+αθJ(θ) \theta \leftarrow \theta + \alpha * \nabla_\theta J(\theta)

我们可以重复应用此更新,希望θ\theta 收敛到最大化J(θ)J(\theta).

的值。J(θ)J(\theta):

  1. 然而,计算

  2. 的导数存在两个问题:我们无法计算目标函数的真实梯度,因为它需要计算每个可能轨迹的概率,这在计算上非常昂贵。因此,我们希望通过基于样本的估计(收集一些轨迹)来计算梯度估计

Probability

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

Policy Gradient

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

如果您想了解我们如何推导出此公式来近似梯度,请查看下一节(可选)。

Reinforce 算法(蒙特卡洛 Reinforce)θ\theta:

Reinforce 算法,也称为蒙特卡洛策略梯度,是一种策略梯度算法,它使用整个回合的估计回报来更新策略参数

  • 在一个循环中使用策略πθ\pi_\thetaτ\tau

  • 来收集一个回合使用该回合估算梯度

    Policy Gradient
  • g^=θJ(θ)\hat{g} = \nabla_\theta J(\theta)更新策略的权重

θθ+αg^\theta \leftarrow \theta + \alpha \hat{g}

-我们可以这样解释这次更新θlogπθ(atst)\nabla_\theta log \pi_\theta(a_t|s_t)ata_t从状态sts_t是选择动作(对数)概率的最陡峭增加方向ata_t。这告诉我们,如果想增加/减少在状态s_t下选择动作a_t的对数概率,我们应该如何改变策略的权重sts_t.

-R(τ)R(\tau):是得分函数

  • 如果回报高,它将提高(状态,动作)组合的概率
  • 否则,如果回报低,它将降低(状态,动作)组合的概率

我们也可以收集多个回合(轨迹)来估计梯度。

Policy Gradient
< > 在 GitHub 上更新