加入收藏 | 设为首页 | 会员中心 | 我要投稿 河北网 (https://www.hebeiwang.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 建站 > 正文

荟萃三大类无模子强化进修算法,BAIR开源RL代码库rlpyt

发布时间:2019-10-08 23:48:38 所属栏目:建站 来源:机器之心编译
导读:克日,BAIR 开源强化进修研究代码库 rlpyt,初次包括三大类无模子强化进修算法,并提出一种新型数据布局。 2013 年有研究者提出行使深度强化进修玩游戏,之后不久深度强化进修又被应用于模仿呆板人节制,自此往后大量新算法层出不穷。个中大部门属于无模子
副问题[/!--empirenews.page--]

克日,BAIR 开源强化进修研究代码库 rlpyt,初次包括三大类无模子强化进修算法,并提出一种新型数据布局。

2013 年有研究者提出行使深度强化进修玩游戏,之后不久深度强化进修又被应用于模仿呆板人节制,自此往后大量新算法层出不穷。个中大部门属于无模子算法,共分为三类:深度 Q 进修(DQN)、计策梯度和 Q 值计策梯度(QPG)。因为它们依靠差异的进修机制、办理差异(但有重合)的节制题目、处理赏罚差异属性的举措集(离散或持续),因此这三类算法沿着差异的研究蹊径成长。今朝,很少有代码库同时包括这三类算法,许多原始实现仍未果真。因此,从颐魅者凡是必要从差异的出发点开始开拓,隐藏地为每一个感乐趣的算法或基线进修新的代码库。强化进修研究者必需花时刻从头实现算法,这是一项贵重的小我私人实践,但它也导致社区中的大量一再劳动,乃至成为了入门障碍。

这些算法具备许多配合的强化进修特点。克日,BAIR 宣布了 rlpyt 代码库,操作三类算法之间的共性,在共享的优化基本架构上构建了这三类算法的实现。

GitHub 地点:https://github.com/astooke/rlpyt

rlpyt 库包括许多常见深度强化进修算法的模块化实现,这些实现是在深度进修库 Pytorch 中行使 Python 说话写成的。在大量已有实现中,rlpyt 对付研究者而言是越发全面的开源资源。

rlpyt 的计划初志是为深度强化进修规模中的中小局限研究提供高吞吐量代码库。本文将扼要先容 rlpyt 的特性,及其与之前事变的关联。值得留意的是,rlpyt 基于论文《Recurrent Experience Replay in Distributed Reinforcement Learning》(R2D2)复现了 Atari 游戏规模中的近期最佳功效,不外它没有行使漫衍式计较基本架构来网络逊??需的数十亿游戏视频帧。本文还将先容一个新的数据布局——namedarraytuple,它在 rlpyt 中普及用于处理赏罚 numpy 数组荟萃。更多技能接头、实现详情和行使声名,拜见论文《rlpyt: A Research Code Base for Deep Reinforcement Learning in PyTorch》。

论文地点:https://arxiv.org/abs/1909.01500

rlpyt 库的重要特性和手段包罗:

  • 以串行模式运行尝试(对 debug 有辅佐);
  • 以并行模式运行尝试,具备并行采样和/或多 GPU 优化的选项;
  • 同步或异步采样-优化(异步模式通过 replay buffer 实现);
  • 在情形采样中,行使 CPU 或 GPU 举办实习和/或分批举措选择;
  • 全面支持轮回智能体;
  • 在实习进程中,执行在线或离线评估,以及智能体诊断日记记录;
  • 在当地计较机上,启动对尝试举办栈/行列(stacking / queueing)配置的措施;
  • 模块化:易于修改和对已有组件的重用;
  • 兼容 OpenAI Gym 情形接口。

rlpyt 库中的已实现算法包罗:

  • 计策梯度:A2C、PPO
  • DQN 及其变体:Double、Dueling、Categorical、Rainbow minus Noisy Nets、Recurrent (R2D2-style)
  • QPG:DDPG、TD3、SAC

replay buffer(支持 DQN 和 QPG)包括以下可选特性:n-step returns、prioritized replay、sequence replay (for recurrence)、frame-based buffers(从多帧视察功效中仅存储奇异的 Atari 游戏帧)。

加快尝试的并行计较架构

采样

无模子强化进修的两个阶段——采样情形交互和实习智能体,可凭证差异方法并行执行。譬喻,rlpyt 包罗三种根基选项:串行、并行-CPU、并行 GPU。

串行采样最简朴,由于整个措施在一个 Python 历程中运行,且有利于 debug。但情形凡是基于 CPU 执行,且是单线程,因此并行采样器行使 worker 历程来运行情形实例,以加快整体网络率(collection rate)。CPU 采样还在 worker 历程中运行智能体的神经收集,以选择举措。GPU 采样则将全部情形视察功效分批,然后在 master 历程中选择举措,这样可以或许更充实地操作 GPU。这些设置详见下图。

集合三大类无模型强化学习算法,BAIR开源RL代码库rlpyt

情形交互采样图示。(左)串行:智能体和情形在一个 Python 历程中执行。(中)并行-CPU:智能体和情形在 CPU 上运行(并行 worker 历程)。(右)并行-GPU:情形在 CPU 上运行(并行 worker 历程),智能体在焦点历程上运行,以担保分批举措选择。

另外,尚有一个选项是 alternating-GPU 采样,纵然用两组 worker:一组执行情形模仿,另一组守候新举措。当举措选择时刻比批情形模仿时刻稍短时,则也许带来加快。

优化

同步多 GPU 优化通过 PyTorch 的 DistributedDataParallel 模块实现。整个采样器-优化器栈在每个 GPU 的差异历程中被复制,模子在反向撒播进程中对梯度执行规约(all-reduce),从而实现隐式地同步。在反向撒播的同时,DistributedDataParallel 器材自动低落梯度,以便在大型收集上实现更好的扩展,详情见下图。(采样器可所以上文先容的恣意串行或并行设置。)

集合三大类无模型强化学习算法,BAIR开源RL代码库rlpyt

同步多历程强化进修。每个 Python 历程运行一个完备 sample-algorithm 栈副本,「同步」则通过 PyTorch 中的 DistribuedDataParallel 在反向撒播进程中隐式地实现。支持 GPU(NCCL 后端)和 CPU(gloo 后端)模式。

异步采样优化

(编辑:河北网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读