【翻译原创】对on-policy deep actor-critic算法有影响的参数

自己翻译然后总结了下,markdown复制过来图片没了,懒得上传图片,想看有图片的详细见PDF

Published as a conference paper at ICLR 2021

Marcin Andrychowicz, Anton Raichuk, Piotr Sta´nczyk, Manu Orsini, Sertan Girgin, Raphaël Marinier, Léonard Hussenot, Matthieu Geist,Olivier Pietquin, Marcin Michalski, Sylvain Gelly, Olivier Bachem

Google Research, Brain Team

摘要

近年来,强化学习已成功应用于许多不同的连续控制任务上,目前业界领先的方法也需要对算法实现的细节进行设计,细节往往有多种方案可以使用,但这些选择通常没有在文献中得到广泛讨论,导致已发表的算法描述和它们的实现之间存在差异,这使得很难对RL的进步归纳出原因,因为无法确定这些选择对结果的影响,从而减缓了总体发展,为了填补这一空缺,该论文在on-policy deep actor-critic框架下进行了多项实验,通过不同的选择来说明对结果的影响,在五个不同复杂度的连续控制环境中训练了超过250000个代理,并提供了一些见解和使用的建议

介绍

目前深度RL算法on-policy中主要有TRPO、A3C、PPO,off-policy中主要有DDPG、SAC,这些算法已经有了成熟的应用,如四足动物运动、灵巧手、自动驾驶。这些论文中有许多深入研究了不同的算法思想,例如不同的损失函数和学习范式。然而,不太被注意到的是在RL的成功实现所依赖的复杂代码,其中包含大量的底层和上层设计选择,而这些选择通常在论文中没有讨论,虽然有人会认为这些设计的选择不太重要,但有证据表明,它们实际是算法良好性能的关键,甚至是驱动因素

虽然有开放的源码供研究者使用,但这仍然不够,目前文章中经常包含不同算法思路之间的一对一比较,但这些不同算法也是基于不同的代码库。这使得无法评估改进效果是由于算法思想还有其具体实现带来的,事实上,如果不了解底层代码的一些细节设计,就很难评价上层算法思想的先进性,因为性能很有可能取决于超参数的调整和实现层面的细节,总的来说,这使得强化学习的发展难以归纳原因,并减缓了进一步的研究

文章作者的贡献

该论文的主要目标是深入研究这种底层选择,并了解他们对agent性能的影响。

主要贡献如下:

  1. 在一个统一的on-policy deep actor-critic下实现了超过50种的选择
  2. 进行了大规模(超过250000个agent)的实验研究,涵盖了训练过程的不同方面
  3. 分析实验结果,为RL的训练提供实际见解和建议

研究设计

使用的环境

论文主要考虑的是连续控制场景下的强化学习设计,考虑使用当前策略产生经验和使用该经验改进策略来进行迭代的策略算法,这通常被认为是on-policy算法的标准工作方式,如PPO采用该种方式。采用OpenAI Gym中比较流行的五个连续控制环境

  • Hopper-v1
  • Walker2d-v1
  • HalfCheetah-v1
  • Ant-v1
  • Humanoid-v1

统一的on-policy deep actor-critic算法

采取以下方法来创建一个高度可配置的算法框架,并提供尽可能多的选择

  1. 研究了先前的工作和流行的代码库,列出了一个常用的选择清单,即不痛的损失函数(包括值函数和策略),架构选择如初始化方法,启发式技巧和所有相应的超参数
  2. 验证了当所有的选择都像OpenAI baselines一样是,PPO算法也有同样的性能

研究中选择参数的难点

论文主要目标是了解不同的选择如何影响agent的最终表现,并得出选择的建议,这具有挑战性的关键原因有两个

  • 首先,我们主要感兴趣的是对良好的超参数配置选择的见解,然而,如果所有的选择是随机抽样的,那么有一些参数所训练出来的agent性能就会非常差,几乎没有效果
  • 其次,选择之间可能有很强的相互作用,例如学习率和批量大小。这意味着需要对这些选择统一进行调整,而在实验中只改变单一的选择可能会得出错误的结论

基本的实验设计

作者围绕着他们怀疑选择之间相互作用的主题组创建了一些选择组,例如把所有与神经网络结构有关的选择组在一起,还把adam学习率包括在所有的组中(因为怀疑它可能与其他选择相互影响)

然后,每个实验中训练大量的模型,在这些模型中随机抽取相应组中的选择,所有其他的设置都被设置为竞争性基本配置的设置,该配置接近于放大到256个并行环境的默认PPO配置,这有两个效果:(1)确保训练模型集包含良好的模型,(2)保证模型有不同的潜在相关选择的组合

对每个选择进行两种不同的分析

  • 有条件的95分位值
    对于该选择的每个潜在值,看一下使用该值的采样配置的性能分布,并选取基于二项式近似的置信区间的第95百分位数进行报告
  • 前5%配置中的选择分布
    进一步考虑每个选择在该实验中训练的前5%配置中的价值分布。推理如下:根据实验的设计,每个选择的值都是均匀随机分布的,因此,如果某些值在性能好的模型中占比过高,这表明特定的选择对保证良好的性能很重要

性能评估

对于每个选择配置,用独立的随机种子训练三个模型,每个模型训练100万 steps (Hopper, HalfCheetah, Walker2d) 或200万 steps (Ant, Humanoid)。通过冻结策略和计算100个 episode的平均未折扣回报来评估每10万步的训练策略。然后,我们将这些分数进行平均,得到种子的单一性能分数,它与学习曲线下方面积成正比,一个超参数配置的性能得分最终被设定为3个种子性能分数的中位值,以此减少训练噪声的影响

结果的鲁棒性

虽然采取3个随机种子来计算单个选择配置的性能指标,但必须注意的是,文章中报告的所有实验结果都是基于3个以上的随机种子

实验

Policy Losses

研究

研究了不同的策略损失:

vanilla policy gradient (PG),V-trace,PPO,AWR,V-MPO,AWR (β → 0)

这项研究的目的是为了更好的理解本文所考虑的策略损失函数在RL中的重要性,作者的目标不是提供一个一般性的声明说其中一个损失比其他的好,因为其中一些是专门为其他环境设计的

解释

图1展示了不同策略损失训练期间平均得分的95分位数,其中PPO在5个环境中的4个环境的表现比其他损失更好,并且也是HalfCheetah上表现最好的损失之一。由于在这个分析中对损失的超参数进行了随机抽样,可能会让人认为该方法偏向于对超参数不太敏感的选择,同时可能有一些损失对超参数很敏感,但很容易找到好的设置。但是作者继续做了实验表明,即使为每个损失设置最佳的超参数,PPO在最难的两个任务Humanoid 和Ant上依旧优先于其他损失

也许毫不奇怪,PG和V-trace在所有任务中的表现都比较差,这也许是因为它们无法处理在迭代中变为off-policy的数据,或者由于相对于batch size的大经验池,总的来说,存在于所有其他策略损失中的信任区域优化对于良好的样本复杂性至关重要

进一步观察PPO的 ϵ \epsilon ϵ取0.2和0.3时在所有环境中都表现得相当好,但取更低0.1或更高0.5只在部分环境中表现得更好

建议

使用PPO策略损失,开始时 ϵ \epsilon ϵ设置为0.25,但是也可以试一下更低和更高的值

Networks Architecture

研究

研究了神经网络架构的差异带来的影响,考虑与网络结构和规模、激活函数、网络权重初始化相关的选择

解释

如图2所示,独立的价值和策略网络在五个环境中的四个环境具有较好的表现,为了避免分析不良模型的其他选择,在本实验的其他部分只关注具有独立价值和策略网络的agent。

关于网络大小,策略MLP的最佳宽度取决于环境的复杂性,太低或太高的值会导致性能的显著下降,而对于价值网络,如图3所示,使用更宽的网络似乎没有坏处。此外,在一些环境中,使价值网络比策略网络更宽是有益,例如在HalfCheetah上,策略网络每层有16-32个单位,价值网络有256个单位,就能取得最佳效果。在所有测试环境中,两个隐藏层似乎对策略网络和价值网络都很有效。

至于激活函数,如图4所示,我们观察到tanh激活函数表现最好,而relu最差

有趣的是,初始策略对训练性能有惊人的影响,关键的秘诀是在训练开始时初始化策略,使动作分布以0为重心分布为[-1,1]区间,并具有相当小的标准偏差。图5显示,性能对初始化动作偏差非常敏感,0.5在所有的环境中表现得最好,只有Hopper环境中是更高的值表现得更好。此外,网络权重初始化方案似乎不那么重要。

建议

使用soft plus将网络输出转换为动作标准差,并在其输入中加入一个负偏移,以减少动作的初始标准差,如果可以的话,可以尝试对这个偏移量进行调整。

使用tanh作为激活函数(如果网络不是太深),并将样本从正态分布转换为有界的动作空间

使用一个宽值MLP(没有与策略共享的层),但要调整策略的宽度

Normalization And Clipping

研究

文章研究了不同归一化方案带来的影响:观察值归一化、值函数归一化、每一个mini batch优势归一化以及观测状态裁剪

batch是一次运行所有数据集,只更新一次梯度下降,m过大,计算依然很慢。
minibatch是一次运行一个minibatch,更新一次梯度,整个数据集,会更新多次,通常来说,运行更快。

解释

如图6所示,输入归一化对于除Hopper外的所有环境的良好性能都是至关重要的

如图7所示,令人惊讶的是,值函数归一化对性能的影响也非常大,它对HalfCheetah和Humanoid的良好性能至关重要,对Hopper和Ant略有帮助,而对Walker2d的性能则大打折扣,作者也不确定为什么价值函数的尺度会那么重要,但怀疑它是通过改变价值函数拟合的速度来影响性能的

与观察状态和价值函数归一化相比,每一个minibatch 优势归一化似乎对性能没有太大影响

同样,文章发现没有证据能表明裁剪归一化后的观测值对性能提升有帮助

建议

始终使用观测状态归一化,并尝试值函数归一化是否能提高性能

Advantage Estimation

研究

文章比较了最常用的优势估计器:N-step、GAE和V-trace以及它们的超参数,此外还改变了所使用的并行环境数量,因为它改变了每一步中收集的经验片段长度

解释

如图9所示,GAE和v-trace的表现似乎比N-step表现更好,这表明结合多个事件步长的价值估计器是有意的,在实验中,没有发现GAE和V-trace之间有明显的性能差异,两者在λ=0.9时均表现良好,根据具体环境调整这个值可能会导致适度的性能提升

建议

使用GAE优势估计器,并设置λ=0.9

Training Setup

研究

文章研究了数据采集与minibatch处理之间的关系:使用并行环境的数量、在每个迭代中收集的过渡样本数量、数据的复用次数、minibatch的大小以及如何将数据分为minibatch

解释

不出所料,如图10所示,多次复用经验似乎对良好的样本复杂性至关重要。通常对于简单的模型,计算是非常容易的,随着我们增加并行环境的数量,在一些环境中性能急剧下降,正如图11所表达的,尽管如此,如果有足够多的cpu核,用更多的环境进行训练,通常会在单位时间内有更多的训练

如图12所示,在测试的范围中,增加批次大小似乎并没有伤害到样本的复杂性,这表明应该增加它以获得更快的迭代速度,另一方面,每次迭代中收集的过渡样本数量对性能的影响相当大,如图13所示

最后比较了处理minibatch的不同方法,结果表明常规的优势估计会降低性能,而在每一次计算开始时重新计算优势可以部分缓解问题

建议

多次复用经验

在数据每次转移给minibatch前,对其进行重新排列,并在每个数据通道中重新计算一次优势

使用多的并行环境并增加批处理数量来提升训练速度(两者可能损害样本复杂性)

Timesteps Handling

研究

文章研究了与处理时间段有关的选择:折扣系数、跳帧,以及如何处理由于步数限制而导致的episode终止

解释

图15显示,性能在很大程度上取决于则扣系数γ,γ=0.99在所有环境中都表现得相当好。

如图16所示,跳帧在5个环境中的2个环境有提升。

加入时间步长条件来终止episode的选择适合并不影响性能。

建议

折扣因子时最重要的超参数之一,应该根据环境进行调整(从γ=0.99开始)

如果可能的话,尝试frame skip

没有必要以特殊方式处理环境的步长限制

Optimizers

研究

文章研究了RL中常用的两个基于梯度的优化器:Adam、RMSprop以及它们的超参数

解释

如图17所示,优化器之间的性能差异似乎相当小,没有一个优化器在不同的环境中始终胜过其他优化器

不出所料,学习率对性能的影响非常大,Adam优化器的默认值为0.0003,在所有的任务中都表现良好,同时Adam在加入动量后表现更好

对于RMSprop,动量的差别较小,但我们结果表明,它可能会稍微提高性能,同样没有发现不同的 ϵ \epsilon ϵ系数值之间有任何区别。将学习率线性衰减到0,可以提高5个任务中4个任务的性能,但收益非常小,除了Ant,它提升了15%

建议

使用Adam优化器,动量 β 1 \beta_1 β1=0.9,并调整学习率(0.0003是一个安全的默认值)

线性衰减的学习率可能会提高性能,但它不是那么重要

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值