深度强化学习课程文档

深入探索策略梯度方法

Hugging Face's logo
加入 Hugging Face 社区

并获得增强的文档体验

开始使用

深入探索策略梯度方法

了解全局

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

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

如果我们以 CartPole-v1 为例

  • 作为输入,我们有一个状态。
  • 作为输出,我们拥有在该状态下动作的概率分布。
Policy based

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

但是我们将如何使用期望回报来优化权重

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

因此,对于每个状态-动作对,我们都希望增加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).

目标函数

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

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(\theta).

的最陡峭上升方向(如果您需要复习梯度下降和梯度上升之间的区别,请查看这里这里)。

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

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

的值。但是,计算J(θ)J(\theta):

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

  2. 我在下一个可选部分解释了另一个问题。为了区分这个目标函数,我们需要区分状态分布,称为马尔可夫决策过程动力学。这与环境相关联。它给出了环境进入下一个状态的概率,给定当前状态和智能体采取的动作。问题是我们无法区分它,因为我们可能不了解它。

Probability

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

Policy Gradient

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

Reinforce 算法(蒙特卡洛 Reinforce)

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

在一个循环中

  • 使用策略πθ\pi_\theta来收集一个 episodeτ\tau

  • 使用 episode 来估计梯度g^=θJ(θ)\hat{g} = \nabla_\theta J(\theta)

    Policy Gradient
  • 更新策略的权重θθ+αg^\theta \leftarrow \theta + \alpha \hat{g}

我们可以将此更新解释如下

-θlogπθ(atst)\nabla_\theta log \pi_\theta(a_t|s_t)是选择动作ata_t中选择动作sts_t的(对数)概率的最陡峭上升方向。这告诉我们,如果我们想要增加/减少选择动作ata_t在状态sts_t.

-R(τ)R(\tau)的对数概率,我们应该如何更改策略的权重:是评分函数

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

我们还可以收集多个 episode(轨迹)来估计梯度

Policy Gradient
< > 在 GitHub 上更新