当前位置:   article > 正文

PPO算法基本原理及流程图(KL penalty和Clip两种方法)_ppo算法流程图

ppo算法流程图

PPO算法基本原理

PPO(Proximal Policy Optimization)近端策略优化算法,是一种基于策略(policy-based)的强化学习算法,是一种off-policy算法。

详细的数学推导过程、为什么是off-policy算法、advantage函数设计、重要性采样Importance Sampling这些概念的详细介绍和注释请参考学习:李宏毅老师的强化学习系列课程,我也将学习笔记分享到另一篇博客中:PPO算法基本原理(李宏毅课程学习笔记)https://blog.csdn.net/ningmengzhihe/article/details/131457536,欢迎感兴趣的小伙伴共同交流呀!!!

KL penalty 和 Clip

PPO算法的核心在于更新策略梯度,主流方法有两种,分别是KL散度做penalty,另一种是Clip剪裁,它们的主要作用都是限制策略梯度更新的幅度,从而推导出不同的神经网络参数更新方式

采用KL penalty算法,那么神经网络参数按照下面的方式更新
在这里插入图片描述
采用Clip算法,那么神经网络参数按照下面的方式更新
在这里插入图片描述
那么采用KL penalty算法的PPO算法伪代码如下
在这里插入图片描述
在这里插入图片描述

采用Clip算法的PPO算法伪代码如下
在这里插入图片描述

算法流程图

下面的算法流程图是基于莫烦python的PPO算法代码实现,同时参考了网络代码的算法流程,它没有用到memory,每次更新ppo用到的数据是连续的transition(包括当前状态、执行动作和累积折扣奖励值),它采用两个actor网络(一个actor_old一个actor )
在这里插入图片描述
PPO类包含下面四个部分,也就是四个方法
在这里插入图片描述

(1)初始化

在这里插入图片描述

(2)选择动作

在这里插入图片描述

(3)计算状态价值

在这里插入图片描述

(4)更新/训练网络的update方法

在这里插入图片描述
KL penalty和Clip算法体现在更新actor网络方式不同,也就是下面流程图中的黄色框

KL penalty算法

Clip算法

actor网络和critic网络更新实现不固定,上述算法是actor网络和critic网络分开更新,有的actor_loss和critic_loss加权后一块儿更新网络(代码请见simple_ppo.py),它们网络结构设计也不同

具体哪种方式效果更好并没有理论依据,往往需要尝试跑代码再结合具体问题选择喽

参考资料

(1)论文:Emergence of Locomotion Behaviours in Rich Environments
(2)论文:Proximal Policy Optimization Algorithms
(3)莫烦Python
(4)PPO2代码 pytorch框架 - 知乎 https://zhuanlan.zhihu.com/p/538486008,这是一份可以跑通的代码,很赞
(5)B站李宏毅强化学习课程,讲解数学原理非常厉害
(6)这份教程是李宏毅强化学习的深入讲解,也和不错:ChatGPT和PPO(中文介绍)_哔哩哔哩_bilibili https://www.bilibili.com/video/BV1sg4y1p7hw/?spm_id_from=333.1007.top_right_bar_window_custom_collection.content.click&vd_source=1565223f5f03f44f5674538ab582448c

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/盐析白兔/article/detail/331459
推荐阅读
  

闽ICP备14008679号