深度强化学习课程文档

引入裁剪代理目标函数

Hugging Face's logo
加入 Hugging Face 社区

并获得增强文档体验

开始使用

引入裁剪代理目标函数

回顾:策略目标函数

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

Reinforce

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

然而,问题来自步长

  • 太小,**训练过程太慢**
  • 太大,**训练中存在过多的变异性**

使用 PPO,其思想是使用一个名为“裁剪代理目标函数”的新目标函数来约束我们的策略更新,该函数**将使用裁剪将策略变化限制在较小的范围内**。

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

PPO surrogate function

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

比率函数

Ratio

该比率计算如下

Ratio

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

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

  • 如果rt(θ)>1 r_t(\theta) > 1 , 则**在状态st s_t 下的动作at a_t 在当前策略中比在旧策略中更有可能**。
  • 如果rt(θ) r_t(\theta) 在 0 和 1 之间,则**当前策略的动作可能性低于旧策略**。

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

裁剪代理目标函数的未裁剪部分

PPO

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

PPO
近端策略优化算法

然而,如果没有约束,如果在当前策略中采取的动作比在之前策略中更有可能,**这将导致策略梯度出现大幅更新**,从而导致**策略更新过度**。

裁剪后的代理目标函数的裁剪部分

PPO

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

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

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

  • TRPO(信任区域策略优化)在目标函数之外使用KL散度约束来约束策略更新。但这种方法**实现起来比较复杂,并且需要更多计算时间**。
  • PPO使用其**裁剪后的代理目标函数**直接在目标函数中裁剪概率比率。
PPO

这部分裁剪版本是rt(θ) r_t(\theta) 在之间裁剪[1ϵ,1+ϵ] [1 - \epsilon, 1 + \epsilon] .

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

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

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

< > GitHub上的更新