深度强化学习课程文档

Clipped Surrogate 目标函数简介

Hugging Face's logo
加入 Hugging Face 社区

并获得增强的文档体验

开始使用

Clipped Surrogate 目标函数简介

回顾:策略目标函数

让我们回顾一下在 Reinforce 中要优化的目标

Reinforce

其思想是通过对这个函数执行梯度上升步骤(等同于对这个函数的负数执行梯度下降),我们将推动我们的智能体采取导致更高奖励的行动,并避免有害的行动。

然而,问题来自于步长

  • 步长太小,训练过程太慢
  • 步长太大,训练中的变异性太强

使用 PPO,其思想是通过一个新的目标函数(称为Clipped surrogate 目标函数)来约束我们的策略更新,这个函数将使用剪裁将策略更改限制在一个小范围内。

这个新函数旨在避免破坏性的大权重更新

PPO surrogate function

让我们研究每个部分,以了解它是如何工作的。

比率函数

Ratio

这个比率的计算方式如下

Ratio

它是采取行动的概率at a_t 在状态st s_t 在当前策略中,除以之前策略中的相同值。

正如我们所见,rt(θ) r_t(\theta) 表示当前策略和旧策略之间的概率比率

  • 如果rt(θ)>1 r_t(\theta) > 1 ,则动作at a_t 在状态st s_t 在当前策略中比旧策略更可能发生。
  • 如果rt(θ) r_t(\theta) 介于 0 和 1 之间,该动作在当前策略中比旧策略更不可能发生

因此,这个概率比率是估计旧策略和当前策略之间差异的简单方法。

Clipped Surrogate 目标函数中未剪裁的部分

PPO

这个比率可以替换我们在策略目标函数中使用的对数概率。这给了我们新目标函数的左侧部分:将比率乘以优势函数。

PPO
近端策略优化算法

然而,如果没有约束,如果采取的动作在当前策略中比在之前的策略中更有可能,这将导致显着的策略梯度步长,因此,策略更新过度。

Clipped Surrogate 目标函数中剪裁的部分

PPO

因此,我们需要通过惩罚导致比率远离 1 的变化来约束这个目标函数(在论文中,比率只能在 0.8 到 1.2 之间变化)。

通过剪裁比率,我们确保我们不会有太大的策略更新,因为当前策略不能与旧策略相差太远。

为了做到这一点,我们有两种解决方案

  • TRPO (Trust Region Policy Optimization) 在目标函数之外使用 KL 散度约束来约束策略更新。但是这种方法实现起来很复杂,并且需要更多的计算时间。
  • PPO 使用其 Clipped surrogate 目标函数直接在目标函数中剪裁概率比率。
PPO

这个剪裁部分是一个版本,其中rt(θ) r_t(\theta) 被剪裁在[1ϵ,1+ϵ] [1 - \epsilon, 1 + \epsilon] .

使用 Clipped Surrogate 目标函数,我们有两个概率比率,一个未剪裁,一个剪裁在[1ϵ,1+ϵ] [1 - \epsilon, 1 + \epsilon] 之间的范围内,epsilon 是一个超参数,可以帮助我们定义这个剪裁范围(在论文中ϵ=0.2 \epsilon = 0.2 .).

然后,我们取剪裁目标和未剪裁目标的最小值,因此最终目标是未剪裁目标的下界(悲观界)。

取剪裁目标和未剪裁目标的最小值意味着我们将根据比率和优势情况选择剪裁目标或未剪裁目标

< > 在 GitHub 上更新