TRPO的优化方式比较复杂,对于某些模型结构无法使用,例如模型使用了dropout或policy跟value function模型参数进行了共享。PPO算法基于TRPO的目标函数进行了简化,使用目标函数的一阶导数进行policy的更新,并且更新时可以进行多次迭代,重复使用现有的数据更新policy。

先看TRPO的目标函数(是surrogate的)

PPO,Proximal Policy Optimization Algorithms 论文阅读

其复杂的优化方式主要来源于那个hard的KL散度约束, 为了简化求解,可以将约束去掉,将KL作为惩罚项加到目标函数中,成为如下形式:

PPO,Proximal Policy Optimization Algorithms 论文阅读

优化这个公式就很简单了,可以使用梯度的方法去优化。 这个目标函数存在的问题就是那个惩罚权重PPO,Proximal Policy Optimization Algorithms 论文阅读不太好确定,这也是为什么TRPO没有采用这个目标函数的原因。作者给出了个动态调整PPO,Proximal Policy Optimization Algorithms 论文阅读的方法。先设定一个KL散度的目标值PPO,Proximal Policy Optimization Algorithms 论文阅读,通过比较当前KL散度值与PPO,Proximal Policy Optimization Algorithms 论文阅读的大小来动态调整PPO,Proximal Policy Optimization Algorithms 论文阅读,公式如下:

PPO,Proximal Policy Optimization Algorithms 论文阅读

还是很直接的,PPO,Proximal Policy Optimization Algorithms 论文阅读小了就减小KL的惩罚,大了就增大KL的惩罚。 但这个不是本文提出的最好方法,作者发现比这个更好的方法是使用如下目标函数,对TRPO目标函数进行clip:

PPO,Proximal Policy Optimization Algorithms 论文阅读

其中PPO,Proximal Policy Optimization Algorithms 论文阅读 是重要性采样的比值 PPO,Proximal Policy Optimization Algorithms 论文阅读,因此PPO,Proximal Policy Optimization Algorithms 论文阅读。上面公式将PPO,Proximal Policy Optimization Algorithms 论文阅读前的权重clip到PPO,Proximal Policy Optimization Algorithms 论文阅读PPO,Proximal Policy Optimization Algorithms 论文阅读是设定的一个参数,论文用PPO,Proximal Policy Optimization Algorithms 论文阅读。当PPO,Proximal Policy Optimization Algorithms 论文阅读时,需要增加PPO,Proximal Policy Optimization Algorithms 论文阅读,因此PPO,Proximal Policy Optimization Algorithms 论文阅读,其上界为PPO,Proximal Policy Optimization Algorithms 论文阅读,如下图左边。当PPO,Proximal Policy Optimization Algorithms 论文阅读时,需要降低PPO,Proximal Policy Optimization Algorithms 论文阅读,因此PPO,Proximal Policy Optimization Algorithms 论文阅读,其下界为PPO,Proximal Policy Optimization Algorithms 论文阅读,如下图右边。下图红点为起始的PPO,Proximal Policy Optimization Algorithms 论文阅读值,也就是PPO,Proximal Policy Optimization Algorithms 论文阅读PPO,Proximal Policy Optimization Algorithms 论文阅读不会大于设定值。可以理解成PPO,Proximal Policy Optimization Algorithms 论文阅读超过阈值的那些数据就不会用到了,梯度会倾向于更新policy使得policy调整PPO,Proximal Policy Optimization Algorithms 论文阅读在阈值内的那些数据的结果。

PPO,Proximal Policy Optimization Algorithms 论文阅读

 上面目标函数的目的就是让policy的更新不会与之前差别太大,类似TRPO的trust region。在spinningup中将上式进行了一点修改,改成了下面目标函数:

PPO,Proximal Policy Optimization Algorithms 论文阅读

PPO,Proximal Policy Optimization Algorithms 论文阅读

其中

PPO,Proximal Policy Optimization Algorithms 论文阅读

PPO,Proximal Policy Optimization Algorithms 论文阅读PPO,Proximal Policy Optimization Algorithms 论文阅读函数变为下式,PPO,Proximal Policy Optimization Algorithms 论文阅读不会大于PPO,Proximal Policy Optimization Algorithms 论文阅读,跟上面的目的一样:

PPO,Proximal Policy Optimization Algorithms 论文阅读

 当PPO,Proximal Policy Optimization Algorithms 论文阅读PPO,Proximal Policy Optimization Algorithms 论文阅读函数变为下式,PPO,Proximal Policy Optimization Algorithms 论文阅读不会小于PPO,Proximal Policy Optimization Algorithms 论文阅读,跟上面的目的一样:

PPO,Proximal Policy Optimization Algorithms 论文阅读

 PPO总的算法流程:

PPO,Proximal Policy Optimization Algorithms 论文阅读

其中第6步跟第7步是可以多次迭代更新参数的, 第6步更新时还增加了一个更新后KL散度的计算,使其KL散度不会大于某个设定的阈值,大了的话就early stop跳出迭代。

相关文章: