2020CVPR《DD-PPO: LEARNING NEAR-PERFECT POINTGOALNAVIGATORS FROM 2.5 BILLION FRAMES》阅读笔记

我们提出了分布式去中心近端策略优化(DD-PPO,Decentralized Distributed Proximal Policy Optimization),这是一种在资源密集型模拟环境中进行分布式强化学习的方法。DD-PPO是分布式的(使用多台机器)、去中心化的(没有中央服务器)和同步的(没有任何计算是“过时的”),这使得它在概念上简单且易于实现。在Habitat-Sim中训练虚拟机器人进行的实验中,DD-PPO表现出近线性的扩展性。

这种大规模的训练使得智能体在未知环境中通过RGB-D相机和GPS+Compass传感器,在没有地图的情况下,实现几乎完美的自主导航。幸运的是,误差与计算之间呈现出类似于幂律的分布;因此,90%的峰值性能相对较早(1亿个步骤)和相对便宜(使用8个gpu不到1天)获得。最后,我们表明,学习到的场景理解和导航策略可以转移到其他导航任务中——这相当于对实体智能进行“ImageNet预训练+任务特定微调”。我们的模型在这些传输任务上优于ImageNet预训练的CNN ,并且可以作为通用资源(所有模型和代码都是公开可用的)。

1 INTRODUCTION

深度强化学习(RL)的发展需要依赖大量的训练样本,如果没有大规模的分布式并行化,就无法实现。因此,通过多节点分布式实现RL的规模化对于人工智能非常重要,这也是本文的重点。

分布式RL系统主要包含两个核心组件:(1)收集经验的工作节点(‘rollout workers’)。(2)优化模型的参数服务器( parameter server)。  另外,在过去几年中,许多研究提出了在丰富的3D模拟器中训练虚拟机器人(或“具体代理”),然后将学到的技能转移到现实中。不同于Gym或Atari,3D simulators需要GPU加速,所以"worker"的数量会受到限制,所需的智能体的高维输入(如像素等)和深度网络对“parameter server”产生了巨大的压力。因此,本文提出了一个简单的、同步的、分布式的RL方法——分散式(没有参数服务器)分布式(在许多不同的机器上运行)近端策略优化(DD-PPO)。

在DD-PPO中,每个"worker"轮流在资源密集型和GPU加速的模拟环境中收集经验,并优化模型。这个分布是同步的——有一个显式的通信阶段,workers将他们的更新同步到模型(梯度)。为了避免由于掉队者造成的延迟,我们提出了一个抢占阈值,一旦预先指定的其他工作人员完成经验收集,掉队者的经验收集将被迫提前结束。然后,所有工作人员开始优化模型。

(RL的异步分布(左)和通过分布式数据并行的同步分布(右)的比较。左:rollout worker收集经验并异步发送给参数服务器。右图:工作人员在收集经验、同步梯度和优化之间交替进行。我们发现这在资源密集型环境中非常有效。)

2 PRELIMINARIES: RL AND PPO

强化学习(RL)研究的是马尔可夫决策过程中的决策问题。在部分可观察的MDP (POMDP)中,智能体接收一个观察值o_t(例如以自我为中心的RGB图像),这个观察值并不能完全指定环境的状态(s_t),智能体采取一个动作a_t后获得奖励r_t,目标是在一个episode中最大化累积奖励。形式上,\tau是一组(o_t,a_t,r_t)序列,其中a_t\sim \pi(\cdot | o_t)s_{t+1} \sim \tau (s_t,a_t),折扣因子\gamma来平衡探索和利用之间的平衡,最优策略\pi^*由下式指定:

确定\pi^*的一种方法是近端策略优化(PPO) (Schulman等人,2017),这是一种基于策略梯度的在线算法。给定一个θ参数化的策略\pi _{\theta}和用它收集的一组轨迹(通常称为“rollout”),PPO更新\pi _{\theta}如下。设\widehat{A}_t=R_t-\widehat{V}_t,是对优势的估计,其中\widehat{V}_tR_t的期望值,是在当前策略下动作a_t的概率与用于收集“rollout”的策略之间的比率。然后通过最大化更新参数。

该裁剪目标将该比率保持在\varepsilon内,并作为信任区域优化方法;允许使用rollout进行多次梯度更新,从而提高样本效率。

3 DECENTRALIZED DISTRIBUTED PROXIMAL POLICY OPTIMIZATION

在强化学习中主要使用异步分布(见图2),在异步分布中,即使是很小的错误也可能导致崩溃,并且参数服务器和rollout worker需要单独的程序。而在监督学习中,主要采用数据并行的同步分布式训练。实现方法如下:在step k,worker n有一个“parameter”的copy \theta^k_n,计算梯度,通过下式更新\theta

其中“ParamUpdate”可以是任何一阶优化技术(如梯度下降),“AllReduce”执行对变量的所有副本进行简约(如平均),并将结果返回给所有的"workers"。分布式DataParallel的扩展非常好(接近线性扩展,最多可达32,000个GPU(Kurth等,2018)),并且实现起来相对简单(所有工作节点同步运行相同的代码)。

我们将这个方法调整为基于策略的强化学习(on-policy RL)如下:在 step k, a worker n有一个“parameter”的copy \theta^k_n;它使用\pi_{\theta_n^k}收集经验(rollout),通过任何策略梯度方法(例如PPO)计算参数梯度\bigtriangledown_\theta,将这些梯度与其他工作节点进行同步,然后更新模型:

在RL中使用这种方法的一个关键挑战是经验收集运行时间的变化性。在监督学习中,所有梯度计算大致需要相同的时间。在RL中,一些资源密集型环境可能需要模拟的时间显著更长。这会引入显著的同步开销,因为每个worker节点都必须等待最慢的工作节点完成经验收集。为了解决这个问题,我们引入了一个中断阈值,在这个阈值下,那些经验收集时间较长的worker节点的回合收集阶段被中断(提前结束),一旦其他workers节点的一定百分比p%(我们发现60%效果很好)完成了他们的回合收集;从而显著提高了扩展性。我们平等地权衡所有worker节点对损失的贡献,并限制中断前的最小步数为最大步数的四分之一,以确保所有环境都对学习做出贡献。

虽然我们只使用PPO检验了我们的方法,但其他基于策略的RL算法也可以轻松使用,我们相信这种方法可以适应离线策略下的RL算法。离线策略RL算法也在经验收集和优化之间交替,但它们在如何收集/使用经验和参数更新规则方面有所不同。我们的改进只是在优化阶段添加了同步,并在经验收集阶段添加了中断。

实现。我们利用PyTorch的(Paszke等,2017)DistributedDataParallel来同步梯度,并使用TCPStore - 一个简单的分布式键值存储来跟踪有多少工作节点已经完成了经验收集。有关详细说明和代码,请参阅附录E。

4 EXPERIMENTAL SETUP: POINTGOAL NAVIGATION, AGENTS, SIMULATOR

PointGoal Navigation (PointGoalNav).在一个新的环境中,一个agent被初始化为一个随机的起始位置和方向,并被要求导航到相对于agent起点位置指定的目标坐标;没有可用的地图,agent必须只使用它的传感器进行导航——在我们的例子中是RGB- D(或RGB)和GPS+Compass(提供相对于起点的当前位置和方向)。

一个episode的评价标准如下(Anderson et al, 2018a):设S表示“成功”(agent是否在距离目标0.2米的范围内停止?),l表示起始点到目标的最短路径长度,p表示agent路径的长度,然后用(归一化d倒数)Path Length SPL=S\frac{l}{max(l,p)}对success进行加权。值得强调的是,SPL是一个高度惩罚性的指标——为了实现SPL = 1,agent(在没有地图的情况下进行导航)必须与具有地图访问权限的最短路径预测器的性能相匹配!这里没有任何错误的余地 - 没有在十字路口上走错路,没有从死胡同折返,没有探索或偏离最短路径。一般来说,在新的环境中,这甚至可能是不可能的(特别是如果对手设计了地图)。

Agent.与Savva et al(2019)一样,智能体有4个动作,停止(表示智能体已经到达目标),向前移动(0.25m),向左(10◦),向右(10◦)。它接收256x256大小的图像,并使用GPS+Compass计算相对于其当前状态的目标坐标。RGB-D代理仅限于深度,因为Savva等人(2019)发现这一点表现最好。

我们的智能体架构(图3)有两个主要组件——一个视觉编码器和一个策略网络。

视觉编码器基于ResNet (He等人,2016)或SE (Hu等人,2018)-ResNeXt (Xie等人,2017),每层的输出通道数量减少了一半。我们使用2x2-AvgPool的第一层来降低分辨率(本质上是执行低通滤波+下采样)-我们发现这对性能没有影响,同时允许更快的训练。从我们最初的实验中,我们发现有必要将每个BatchNorm层(Ioffe & Szegedy, 2015)替换为GroupNorm (Wu & He, 2018),以解释在策略强化学习中看到的高度相关的输入。

该策略由具有512维隐藏状态的2层LSTM参数化。它接受三个输入:前一个动作、相对于当前状态的目标,以及视觉编码器的输出。LSTM的输出用于生成动作空间上的softmax分布和值函数的估计。详情见附录C。

Training.我们使用PPO与广义优势估计(Schulman et al, 2015)。我们将折扣因子γ设置为0.99,GAE参数\tau设置为0.95。每个worker从并行运行的4个智能体(都在不同的环境中)收集(最多)128帧的经验,然后执行2次PPO,每个epoch有2个小批量。我们使用Adam (Kingma & Ba, 2014),学习率为2.5 × 10−4。与流行的PPO实现不同,我们没有规范化优势,因为我们发现这会导致不稳定性。我们使用DD-PPO在64个gpu上对64个workers进行培训。

agent获得终端奖励r_T=2.5SPL,shaped奖励,其中∆geo_ dist为在状态s_t下执行动作a_t到目标的测地线距离变化量。

Simulator+Datasets.我们的实验使用Habitat进行,这是一个用于具身智能研究的3D模拟平台(Savva等人,2019)。Habitat是一个模块化框架,具有高性能和稳定的模拟器,使其成为模拟数十亿步经验的理想框架。我们使用了几种不同的数据来源进行实验。首先,我们利用Habitat Challenge 2019发布的训练数据,其中包括来自Gibson数据集(Xia等人,2018)的72个场景。然后,我们将这些数据与Matterport3D数据集(Chang等人,2017)中的所有90个场景进行了扩充,以创建一个更大的训练集(请注意,Matterport3D的网格倾向于更大且质量更好)。此外,Savva等人(2019)通过对每个网格重建进行0到5的质量评分,并过滤所有分割,以便每个分割只包含评分为4或更高的场景(Gibson-4+),使得之前未探索的所有评分较低的场景留下。我们研究了对原始训练分割中评分为2或更高的332个场景进行训练(Gibson-2+)。

5 BENCHMARKING: HOW DOES DD-PPO SCALE?

在本节中,我们将研究DD-PPO在两种不同的工作负载制度下是如何扩展的——同构的(每个环境所花费的模拟时间大致相同)和异构的(不同的环境所花费的模拟时间可能多或少几个数量级)。我们检查N个工人相对于1个工人每秒的经验步数。我们比较了中断阈值p%的不同值。我们在Nvidia V100 gpu和ncl2.4.7 Infiniband互连的集群上对我们的ResNet50 PointGoalNav智能体进行了深度基准测试。

同构。为了创建同质工作负载,我们在Gibson数据集的场景上进行训练,这需要非常相似的时间来模拟智能体步骤。如图4(左)所示,对于大于50%的中断阈值,DD-PPO表现出近似线性的扩展(线性=理想),256个GPU相对于1个GPU的速度提高了196倍,8个GPU相对于1个GPU的速度提高了7.3倍。

异构。为了创建一个异构的工作负载,我们在Gibson和Matterport3D的场景上进行训练。与Gibson不同的是,MP3D场景在复杂性和模拟时间上差异很大——最大的场景包含8GB数据,而最小的场景只有135MB。DD-PPO在100%的中断阈值(无抢占)下的可扩展性很差,这是由于大量的离散效应(一个部署比其他部署花费的时间要长得多);见图4(右)。然而,使用80%或60%的抢占阈值,我们可以实现几乎相同的均匀工作负载扩展!我们发现,尽管在以较低频率发生的大场景中学习,但使用这些中断阈值中的任何一个值训练的模型的性能没有下降。

7 RELATED WORK

一般情况下,模拟器中强化学习(RL)的计算可以分为4个角色:

1) Simulation:执行agent选择的动作,返回新的状态和奖励值;

2) Inference:将观察值作为输入,利用agent的策略返回动作、值估计等;

3) Learner:输入数据(rollouts),计算梯度以更新策略网络的参数。

4)Parameter server/master:维护参数,协调workers。

  • 23
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

初篱

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值