影响PPO算法性能的10个关键技巧(附PPO算法简洁Pytorch实现)

   日期:2024-12-26    作者:n1p0t 移动:http://ljhr2012.riyuangf.com/mobile/quote/27877.html

0.引言

影响PPO算法性能的10个关键技巧(附PPO算法简洁Pytorch实现)

PPO算法(Proximal Policy Optimization)[1]是目前深度强化学习(DRL)领域,最广泛应用的算法之一。然而在实际应用的过程中,PPO算法的性能却受到多种因素的影响。本文总结了影响PPO算法性能的10个关键技巧,并通过实验结果的对比,来探究各个trick对PPO算法性能的影响。同时我们将代码开源在了github上,分别提供了PPO算法的离散动作空间实现和连续动作空间实现(见下面github链接中的4.PPO-discrete和5.PPO-continuous(包括了Gaussian分布和Beta分布

PPO算法的核心是使用如下策略损失函数

以上便是PPO原始论文的核心内容。其实在PPO的原始论文中,除了利用GAE计算优势函数外,并没有提到其他的实现细节和技巧。但是在实际的各种代码实现,例如Open AI Baseline、Open AI Spinning Up中,却包括了许许多多的“trick”,实验表明,这些trick都会在一定程度上影响PPO算法的性能。我在参考了《PPO-Implementation matters in deep policy gradients A case study on PPO and TRPO》[3]这篇论文,以及下面这篇博客后

通过自己的亲身实践,总结了影响PPO算法性能最关键的10个trick,如下表所示

Trick 1Advantage NormalizationTrick 2State NormalizationTrick 3 & Trick 4Reward Normalization & Reward ScalingTrick 5Policy EntropyTrick 6Learning Rate DecayTrick 7Gradient clipTrick 8Orthogonal InitializationTrick 9Adam Optimizer Epsilon ParameterTrick 10Tanh Activation Function

在这一节中,我们将逐一介绍上述PPO-max中10个trick的具体实现细节,并通过对比实验来探究这些trick究竟对PPO算法的性能有什么影响。(注:下面的实验讨论均已连续动作空间下Gaussian分布为例

Trick 1—Advantage Normalization

在论文《The Mirage of Action-Dependent Baselines in Reinforcement Learning》[4]中提出了对advantage进行normalization的操作,可以提升PG算法的性能。具体代码实现层面,对advantage做normalization的方式主要有两种

(1)batch adv norm:使用GAE计算完一个batch中的advantage后,计算整个batch中所有advantage的mean和std,然后减均值再除以标准差。

(2)minibatch adv norm:使用GAE计算完一个batch中的advantage后,不是直接对整个batch的advantage做normalization,而是在用每次利用minibatch更新策略之前,对当前这个minibatch中的advantage做normalization。( 这篇博客中使用的就是minibatch adv norm

Trick 2—State Normalization

state normalization的核心在于,与环境交互的过程中,维护一个动态的关于所有经历过的所有state的mean和std, 然后对当前的获得的state做normalization。经过normalization后的state符合mean=0,std=1的正态分布,用这样的状态作为神经网络的输入,更有利于神经网络的训练。

具体实现方式如下


特别提示:本信息由相关用户自行提供,真实性未证实,仅供参考。请谨慎采用,风险自负。


举报收藏 0评论 0
0相关评论
相关最新动态
推荐最新动态
点击排行
{
网站首页  |  关于我们  |  联系方式  |  使用协议  |  隐私政策  |  版权隐私  |  网站地图  |  排名推广  |  广告服务  |  积分换礼  |  网站留言  |  RSS订阅  |  违规举报  |  鄂ICP备2020018471号