作者:Kevin Vu,Exxact公司

翻译:陈之炎

校对:吴振东

本文约4800字,建议阅读10分钟

在强化学习模型中尝试不同的策略对于开发最佳应用程序至关重要,然而,资源的占地可能会对系统的能耗产生重大影响,从而引发我们对计算效率的再度思考。

深度学习的高昂成本

有没有因为空调太冷而穿上毛衣?在去睡觉之前忘了关掉另一个房间的灯?虽然在办公室所做的一切都可以通过笔记本电脑在家里完成,但是你每天依然会花费半个多小时的通勤时间去上班,目的只是为了 “填充办公室的空位”?

在强化学习中,通过样本和计算效率之间的反直觉权衡,选择正确的进化策略可能比看起来更为有效。

现代生活充斥了各式各样效率低下的事物,然而深度学习的能源成本并不是那么显而易见。在办公桌上搭建一个高功率的工作站,冷却风扇所吹出的热气流不断地提醒人们正在持续耗费大量的能量。但是,如果把工作推送给大厅下面的共享集群,那么要直观地感觉到设计决策对电费的影响程度,便显得有点困难了。如果在大型的项目中用到了云计算,那么能源的使用量和随之而来的后果就会离你关注的对象渐行渐远。但是,看不见、摸不着并不是一个项目可行的决策,在硕大规模的极端情况下,可能意味着这些项目的能源支出要比汽车的整个产品周期内的能耗更大。

训练深度学习模型的能耗需求

Strubell 等人关注了2019年训练现代深度学习模型的实质性能源需求,他们主要针对一种称为transformer的大型自然语言处理模型,其论文中考虑到的因素和讨论得出的结论,与在类似硬件上训练深度学习模型占用的时间基本一致。

他们估计:利用scratch训练具备大量变量的Vaswani transformer,释放出二氧化碳的量,大约为从纽约飞往旧金山航班释放出二氧化碳的量的10%。这个预估值在主要从云提供商公布的能耗假设基础上得出,且财务成本小于1000美元(云计算的假设)。对于商业项目来说,可能这是一笔划算的支出,但是如果把优化和实验等因素一并考虑进来之后,能耗账单便轻易地乘以10或更大的系数了。

Strubell和他的同事估计,在NLP模型开发中添加神经架构搜索(NAS)会增加数百万美元的价格成本,及与之对应的碳足迹。虽然许多大型的模型利用了专用硬件,如谷歌的TPU,进行训练,从而将能源成本降至30~ 80倍,使得训练价格略为降低,但这仍然是一笔巨大的支出。在本文所关注的强化学习领域,效率低下的训练的后果可能会使一个项目、产品或业务胎死腹中。

使用星际争霸II(Starcraft II)的DeepMind训练示例

在过去的44天时间里,经过Deepmind训练的代理,在多人实时策略游戏星际争霸II(Starcraft II)中,分别使用三个游戏种族都达到了大师的段位,Battle.net排名击败了99.8%的所有玩家。OpenAI的主要游戏大师项目Dota2进行了10个月(约800个petaflop/天)的实战训练,目的是为了击败人类玩家的世界冠军。

由于采用了TPU、虚拟工人等技术,要准确地估计这类游戏玩家的能耗成本的确有难度。训练出Alphastar和OpenAI Five的冠军,估计大约需要有1200万至1800万美元的云计算成本。显然,对于一个典型的学术或行业机器学习团队来说,这是遥不可及的。在强化学习领域,低效的学习会引发另一个危险:一个探索性和样本效率低下的中等复杂程度的强化学习任务,可能永远找不到可行的解决方案。

利用强化学习(NL)预测蛋白质结构

在这里,选取一个中等复杂程度的强化学习任务作为例子:从序列中预测蛋白质结构。一个由100个氨基酸连接在一起的小蛋白质,就像一条有100个链接的链,每个链接是21种独特的链接变体中的一种,根据每个链接之间的角度依次形成结构。假设每个氨基酸/链环之间的键角有9种可能的简化构型,则需要次迭代以查看每个可能的结构。这100个链接蛋白大致类似于一个强化学习环境,每个步长由100个时间步长和9个可能的动作组成,它们组合呈爆炸态势。

当然,强化学习代理不会随机抽取所有可能的游戏状态。相反,代理将通过进行最佳猜测、定向探索和随机搜索的组合来生成学习轨迹。这种生成经验的方法,称之为典型的“on-policy”学习算法。对能找到局部最优方法的代理来说,可能会永远停留在那里,重复相同的错误,永远解决不了整个问题。

从历史上看,强化学习尽可能地将问题表述为类似监督学习的问题,并从中获益,例如让学生带着三个绑在头上的摄像头徒步旅行,左边的摄像头生成一个带有训练标签 “右转”的图像,而右边的摄像头被标记为“左转”,中间的摄像头标签为 “笔直前行”。

最后,将获得一个带标记的数据集,适合于训练导航森林小径(quadcopter to navigate forest trails)。在下面的章节中,我们将讨论类似的概念(例如,模仿学习)和基于模型的RL如何能够大大减少代理学习任务所需的训练示例的数量,以及为什么这并不总是一件有益的事。

 事半功倍:让强化学习代理从示例中学到最好的东西

深度强化学习是机器学习的一个分支,它受到动物和人类认知、最优控制和深度学习等多个领域的启发。有一个明显的类似动物行为的实验,其中动物(代理)被放置在一个特定情形之下:它必须学会通过解决一个问题来获得食物 (奖励)。在动物开始将一系列动作与食物奖励相关联之前,只需要举出几个类似的示例,然而,为了实现代理参数的稳定更新,对于每个epoch,深度强化学习算法可能需要考虑10到10万个时间步长。

大多数强化学习环境都是按步长制定的。环境会生成一个观察,在此基础上,由代理来决定应用于环境的动作。环境根据其当前状态和智能体(Agent)选择的操作进行更新,在本文中将其称为时间步长。学习所需的时间步长或“样本”越少,算法的效率就越高。

大多数现代强化学习算法的重要程度取决于其核心,这是一种试错的形式。对于一个未使用明确的探索技术的Agent,其随机活动偶尔也会做出一些正确的事情(random activity should occasionally do something right),否则,如果没有得到积极奖励的话,这个Agent可能会与环境(本质上)永远互动下去。事实上,近端策略优化是一种在一系列基准中实现竞争性能的算法,在OpenAI的程序生成的环境套件中,在硬探索模式下完全失败。可以想象,对于广泛的相关任务来说,这将是一个问题。

学习玩电子游戏的Agent可能会经历一个积极的奖励与随机行动(又叫按钮砸),这是便是Atari套件是受欢迎的强化学习基准的原因。对于更为复杂的任务,比如:如何打一个复杂的结,机器人不太可能偶然找出解决方案。无论允许多少次随机交互,达到预期的结果的可能性都不会很大。

正如以前在学习魔方操作的讨论中所看到的,通过手动编程打绳结的自定义绑结机器人,从scratch开始学习这样做的强化学习Agent仍然无法实现。不言而喻,人类也不会通过scratch学习打结。如果将一个蹒跚学步的孩子独自留在满是解开鞋带的运动鞋的房间里,他自己很难打出标准的“兔子”结(“bunny rabbit” knot)。与思维实验中的蹒跚学步的孩子一样,强化学习Agent可以从示例中更好地学习,以便完成诸如打结这样的复杂任务。

利用强化学习教机器打结实例

通过将物理绳索的自主学习与真人演示相结合,伯克利的研究人员解决了教机器打结的问题。首先,这一部分可以模拟:机器人与桌面上绳子的随机交互,目的是为了了解它们是如何工作的,从而学习出一个合理的模型。在Agent的自主学习周期里,显示出了想要的动作:打一个简单的结。在不出错的情况下,Agent能够模拟所需的动作。自主学习世界动力学模型(在上面的例子中,一个带有绳子的台面)和人类要做的动作紧密结合。模仿学习和相关的逆强化学习代表了一些最符合样本效率的RL方法。

绑结是一项比较深奥的任务(显然超出了许多学习算法的能力),但我们可以通过它,来对不同学习算法应用于更多标准任务的样本效率进行比较。在谢尔盖莱文伯克利的深层RL课程第21课,第29页幻灯片中,通过对比公开发表的HalfCheetah 任务的结论,给出了各种RL算法的相对样本效率。alfCheetah是一个2D运动任务,用机器人模糊地模拟猫的动作。HalfCheetah可以在Mujoco(需要付费许可)和Bullet(开源,免费)物理模拟器中实现。

根据幻灯片的内容,我们期望总时间步长对应的进化策略的样本失效率最低,基于模型/逆向强化学习的效率最高。下面转载了幻灯片中的估值,以及文献中的具体示例。

HalfCheetah机器人在Py Bullet中仿真,目标尽可能快地前行。虽然是在3D中呈现,但运动被限制在2D平面上。就像猎豹一样,却只有半个身子。

表1:各种RL算法的相对样本效率。

样本效率在同一类算法中的实现之间有很大的差异,我发现幻灯片中的估值相对于文献中的特定示例来说可能有些夸大。特别是,OpenAI的进化策略论文提出了一种比TRPO具备更高的样本效率的方法,即一种策略梯度方法,用它来与TRPO作比较。报告称:HalfCheetah 的解决方案花费了300万个时间步长,远远低于Levine的10亿个步长的估值。

此外,UberAI实验室发表的一篇相关论文,将遗传算法应用于Atari游戏,其样本效率约为10亿个时间步长,约为Levine课程估值的5倍。

在某些情况下,多即为少——从进化中学习

在上面讨论的示例中,进化策略是样本效率最低的方法之一,通常需要比其他方法至少多出10倍的步长来学习给定的任务。另一个极端情况是,基于模型方法和模仿方法则需要最少的时间步长来学习相同的任务。

乍一看,它似乎是与基于进化的方法相反的案例,但当你对计算进行优化而不是对样本效率进行优化时,会发生一件有趣的事情。由于运行进化策略的开销减少,甚至不需要反向传播通行证,实际上它们需要较少的计算,从本质上来看,计算也是平行的。由于群中的每一episode或单个Agent不依赖于其他Agent/节点的结果,因此学习算法变得相对并行。有了高速的仿真器,它可以在更短的时间内(根据墙壁上的时钟来测量)解决给定的问题。

InvertedPendulumSwingup任务的起始状态和目标状态。绿色胶囊沿着黄色杆滑动,目的是使红色杆平衡直立。

为了对计算效率进行粗略的比较,我在PyBullet中对推车式摆动任务(cart-pole swing-up task )倒置摆摆子BulletEnv-v0上运行了几个不同学习算法的开源实现。具有代表性的进化算法和协方差矩阵自适应的源代码,可在Github上找到,而其他算法都是OpenAI的深度RL资源的一部分。

策略体系结构均保持不变:一个前馈密集的神经网络,共16个神经元,每个神经元有两个隐藏层。我在一个单核Inteli5,2.4GHz CPU上运行全部算法,可以得到对比结果:在没有任何并行化加速情况下,训练时间存在差异。值得注意的是,OpenAI在10分钟内利用进化策略对1,440名工人进行了MujoCo类人训练,得出如下结论:如果具备并行CPU核,并行能真正实现提速,的确有利可图。

表2:不同的学习方法的wall-clock时间和样本效率对比表

上表很好地说明了不同算法所需资源之间的相对关系:样本效率最高的算法(soft actor-critic)需要大约一半的步长,但消耗了34倍的CPU时间。双延迟DDPG(又称TD3)和soft actor-critic算法的稳定性低于其他算法。

由于缺乏开源工具,在运行表2中的实验时没有考虑基于模型的RL算法。对基于模型的RL的进一步研究受到封闭源开发和缺乏标准环境的影响,但许多科学家为基于模型的RL算法标准化做出了不懈的努力。他们发现,大多数基于模型的RL方法能够在大约25,000个步长中解决 “钟摆”的任务,与上表中报告的策略梯度方法(policy gradient methods)类似,但是,训练时长却是策略梯度方法(policy gradient methods)方法的100到200倍。

虽然深度学习似乎仍然倾向于“花哨”的强化学习方法,但基于进化的方法一直在卷土重来。OpenAI的“进化策略是强化学习的一个可扩展的替代”自 2016年起,参与了2017年的大规模演示遗传算法:学玩Atari游戏。在没有高级RL算法的花哨的数学装饰情况下,进化算法的概念十分简单:创建一个人群并为群中每个人设置某些任务,最好的玩家可以成为下一代种子,循环重复,直到满足性能阈值。由于它们背后的一些简单的概念和它们固有的并行化潜力,可以发现进化算法将是您最稀缺的资源:可以大量节省开发人员时间。

对计算和样本效率需要了解的几点附加说明

在单个任务上,不同RL算法之间的计算和样本效率的直接比较并不完全公平,因为实现起来可能存在许多不同的变量。一种算法可能收敛得更早,但却达不到其它、较慢的算法相同的分数,在通常情况下,我可以和你打个赌,在任何已发表的RL项目中,作者花费了比任何其它算法更多的精力来优化和实验他们的新方法。

通过上文讨论的例子,对于从强化学习Agent中期望获得什么这一问题,给出了一个很好的答案。基于模型的方法虽然很有前途,但与其他选项相比并不成熟,不值得为之付出额外的努力。或许,神奇的是:进化算法在各种任务上都表现得很好,不应该被忽视,即便它们被认为是“过时的”或“太简单”。当考虑到所有可用资源的价值及其消耗时,进化算法的确可以提供最好的回报。

原文标题:

2 Things You Need to Know about Reinforcement Learning – Computational Efficiency and Sample Efficiency

原文地址:

https://www.kdnuggets.com/2020/04/2-things-reinforcement-learning.html

编辑:于腾凯

校对:林亦霖

译者简介

陈之炎,北京交通大学通信与控制工程专业毕业,获得工学硕士学位,历任长城计算机软件与系统公司工程师,大唐微电子公司工程师,现任北京吾译超群科技有限公司技术支持。目前从事智能化翻译教学系统的运营和维护,在人工智能深度学习和自然语言处理(NLP)方面积累有一定的经验。业余时间喜爱翻译创作,翻译作品主要有:IEC-ISO 7816、伊拉克石油工程项目、新财税主义宣言等等,其中中译英作品“新财税主义宣言”在GLOBAL TIMES正式发表。能够利用业余时间加入到THU 数据派平台的翻译志愿者小组,希望能和大家一起交流分享,共同进步。

—完—

强化学习必知二要素:计算效率和样本效率相关推荐

  1. 股票操作之强化学习基础(二)(Q-learning、Sarsa、Sarsa-lambda)

    股票操作之强化学习基础(二)(Q-learning.Sarsa.Sarsa-lambda) 1. Q-learning Q-learning是强化学习一个比较基础的算法,很多强化学习的升级算法都是在q ...

  2. 从单层感知器到深度学习以及深度学习必知的框架

    从单层感知器到深度学习以及深度学习必知的框架 一 单层神经网络(感知器) 1.结构 下面来说明感知器模型. 在原来MP模型的"输入"位置添加神经元节点,标志其为"输入单元 ...

  3. 强化学习系列文章(二十七):VPG+Beta分布在CartPoleContinuous环境中的应用

    强化学习系列文章(二十七):VPG+Beta分布在CartPoleContinuous环境中的应用 在第七篇笔记(https://blog.csdn.net/hhy_csdn/article/deta ...

  4. 强化学习系列文章(二十三):AirSim Python API图像与图像处理

    强化学习系列文章(二十三):AirSim Python API图像与图像处理 参考网址:https://microsoft.github.io/AirSim/image_apis/#segmentat ...

  5. 强化学习系列文章(二十八):进化强化学习EvoRL的预实验

    强化学习系列文章(二十八):进化强化学习EvoRL的预实验 最近在研究强化学习解决离散空间的组合优化问题时,接触到了很多进化算法,实际体验也是与RL算法不相上下.进化算法也常用于优化神经网络的参数,C ...

  6. 海格里斯货架厂:设计阁楼式货架方案时必知三要素

    随着现代仓储行业的兴起及发展,我们可以看到阁楼式货架对库房的空间的应用于率是极高的,而阁楼式货架也是轻小货物仓库采购货架时优先考虑的仓储货架,不过如何设计一个更好的阁楼式货架方案也是每个企业或者说每个 ...

  7. MATLAB强化学习实战(十二) 创建自定义强化学习算法的智能体

    创建自定义强化学习算法的智能体 创建环境 定义策略 自定义智能体类 智能体属性 构造函数 相关函数 可选功能 创建自定义智能体 训练自定义智能体 自定义智能体仿真 本示例说明如何为您自己的自定义强化学 ...

  8. 深度强化学习笔记(二)马尔可夫决策过程

    地址:https://datawhalechina.github.io/easy-rl/ 马尔可夫决策过程 上图介绍了在强化学习里面 agent 跟 environment 之间的交互,agent 在 ...

  9. 对比表示学习必知的几种训练目标

    对比学习的主要思想就是相似的样本的向量距离要近,不相似的要远.对比学习在有监督/无监督场景下都取得了非常亮眼的成绩,所以是我们炼丹的必备知识.早期的对比学习是只有一个正样本和一个负样本进行对比,最近的 ...

  10. 深度强化学习-强化学习基础(二)

    基本概念: 强化学习对于初学者来说会有专业名词,先对其进行解释. 状态(state):状态是环境中的一个位置信息,状态是做决策的唯一依据. 状态空间(state space):所有可能存在状态的集合, ...

最新文章

  1. 30 个 Redis 基础知识
  2. asp 强制转换浮点数值_C/C++中浮点数的编码存储
  3. 在Spring使用AWS SQS创建消息驱动Bean
  4. Redis 6.0 的客户端缓存是怎么肥事?一文带你了解!
  5. 华为的数字化转型与数据治理
  6. 新技术将让硬盘密度再提五倍
  7. git clone 多个_软件测试知识点 | 测试过程常用的Git命令
  8. AOJ2025 Eight Princes
  9. HP大中华区总裁退休感言(孙振耀 )
  10. labview入门系列2
  11. Pandas一键爬取解析代理IP与代理IP池的维护
  12. 局域网考勤python_Python3.7实现中控考勤机自动连接
  13. 英语聊天时“好的”、“我知道了”、“收到”、“嗯嗯”之类的怎么说?
  14. 台式计算机能分享热点吗,台式机能做wifi热点吗
  15. Kubesphere之ks-installer介绍
  16. HTTP协议网络请求状态码
  17. 台式电脑主板插线步骤图_机箱上的跳线接在主板那些位置?台式电脑主板接线示意图解教程...
  18. 【电子器件笔记4】电感参数和选型
  19. Directshow的优点与缺点
  20. 【C语言】随机数函数rand和srand

热门文章

  1. 关于51芯片及引脚功能介绍与总结
  2. /*CS5460_Note_1*/
  3. LANP 环境搭建,git配置,ftp配置等
  4. Vue最全知识点集合
  5. X1000对于camera控制部分的翻译
  6. 风雨萧关道【电视专题片解说词】
  7. 从职高到杭电、浙大、MIT计算机博士!
  8. 【前端工程化】使用tippy.js代替自定义的popover/tooltip
  9. Tableau详细安装教程【踩坑】
  10. tableau 常用函数整理