前面已经学习了REINFORCE和Actor-Critic两种经典的策略梯度算法。
强化学习笔记:策略梯度算法
此处基于参考资料1第12章和参考资料2第5章,学习Actor-Critic算法分支中的PPO算法。
概念
由上一节的策略梯度算法可知,使用梯度上升法最大化目标函数时应考虑合适范围。
如下图所示,如果梯度更新过大可能导致训练不收敛,梯度更新尺度应加以限制。

PPO算法中采用重要性采样技术,结合off-policy方式来更新策略以最大化目标函数。
比如目前策略是A,通过重要性采样技术多次使用策略B采样的数据优化参数策略A。
但是重要性采样技术需要两种策略产生的数据分布不能差异过大。
PPO算法限制了新旧策略的概率分布要在一定区间(PPO算法有两种,此处学习常用的PPO-裁剪算法)。
PPO算法的目标函数:

PPO算法中的clip函数:
根据参考材料1第12.3节,clip函数作为约束,将新旧策略的数据分布限制在一定范围。

PPO算法中的优势函数:
目标函数中A是优势函数(即函数构造中含有基线函数)。
根据参考材料1第11.6节,优势函数计算方法如下。

实际计算时可采用逆序递推方式计算。

案例
参考资料1第12.4节以车杆环境为例,给出了使用PPO-裁剪算法求解车杆环境的策略。
代码核心逻辑如下。

通过采样500次轨迹,可看到算法在第100次环境后就达到了较优策略,回报稳步收敛到500左右。
比之前介绍的REINFORCE和Actor-Critic两种算法收敛更稳定。

参考
- 1. 张伟楠、沈键、俞勇等《动手学强化学习》人民邮电出版社
- 2. 王琦、杨毅远、江季等《Easy RL :强化学习教程》人民邮电出版社