论文信息
name_en: Proximal Policy Optimization Algorithms
name_ch: 近端策略优化算法
paper_addr: http://arxiv.org/abs/1707.06347
date_publish: 2017-08-28
if: IF 8.665 Q1 B1 Top EI
author: John Schulman
citation: 9685
读后感
PPO近端策略优化是一种强化学习算法,具体是对深度学习策略梯度方法的优化。
策略是强化学习中用于决定在每个时刻采取哪个动作的函数。近端约束用于限制策略的变化,以避免过于激进地改变策略。
文中介绍了两种方法:截断和KL散度,近端约束通常使用梯度截断来实现,即将梯度限制在一个特定范围内,让学习的步调不要太大。
介绍
一种改进版的强化学习策略梯度算法。它从与环境交互的数据中采样。不同于标准的策略梯度方法对每次采样执行一次梯度更新,文中提出了一个新的目标函数,可以实现多个epoch的minibatch数据更新,另外,它是TRPO的改进算法,相对TRPO更为简单,InstructGPT的强化学习用的就是PPO(ChatGPT可能也是)。
方法
优化算法
文章介绍了三种方法,其差别主要在损失函数,公式如下图所示:
第一种方法的目标是对神经网络theta调参,其中L表示损失Loss,At是时间步t的优势函数,注意这里的r不是奖励,而是新旧策略的变化,当策略不变时r=1:
第二种是本文中推荐的剪裁方法,它通过限制损失函数,从而限制了后续调参;其中epsilon是超参数,一般是0.2,它将变化范围限制在0.8-1.2之间(上图是论文的截图,我觉得括号位置好像写错了)。
第三种是将KL散度作为惩罚项加入了公式,以保证旧策略pi_old与新策略pi尽量相似,其中Beta是超参数,可以是固定的,也可以自动计算,文中还引入了一种自动计算Beta的方法,dtarg为超参数,先根据当前状态计算d,然后计算beta:
具体实现
PPO也属于一种A-C方法,即结合策略和价值的方法。为了同时优化价值和策略,设置最终的目标函数如下:
其中c1,c2是超参数,用于设置各方占比;CLIP指的是策略目标,即上面描述的裁剪方法;LV 是状态价值的差;优化的目标是最大化整体L,所以对其中的VF项做减法;和S是熵奖励,用于增强熵,以确保充分的探索。
具体算法如下:
其中优化的点是:使用并行的N个actors分别收集T时间步的数据;然后针对NT数据,通过K次epoch,用小批量数据M调整梯度,实验证明效果更好。
实验
三种方法对比效果如表-1所示:
其中Clipping在epsilon设为0.2时效果最好;对于KL散度方法,测试了通过dtarg自动计算beta和设固定beta两种方式,可以看到自动计算的方式略好。
与其它强化学习相比,从图-3可以看到,在大多数任务中PPO(Clip)都优于其它算法。除此以外,实验部分还针对连续领域及atari游戏对比了PPO与其它算法的效果。