深度强化学习课程文档

深入了解策略梯度方法

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(\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 算法,也称为蒙特卡罗策略梯度,是一种策略梯度算法,它使用来自整个情节的估计回报来更新策略参数θ\theta:

在一个循环中

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

  • 使用情节来估计梯度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)这意味着如果我们想要提高/降低选择动作

  • 的对数概率,我们应该**如何改变策略的权重**。
  • 是评分函数。

如果回报很高,它将**提升**(状态,动作)组合的概率。

Policy Gradient
否则,如果回报很低,它将**降低**(状态,动作)组合的概率。

我们还可以**收集多个片段(轨迹)**来估计梯度。