主页 > 消费环境 >AlphaGo使用的强化学习是人工智慧新星?让专家告诉你为什

AlphaGo使用的强化学习是人工智慧新星?让专家告诉你为什

归属:消费环境 日期: 2020-06-06 作者: 热度: 896℃ 222喜欢
AlphaGo使用的强化学习是人工智慧新星?让专家告诉你为什

本文由 AI 前线 编译与导读AI 前线针对 AI 爱好者、开发人员和科学家,提供最新 AI 技术分享乾货文与论文解读。英文原文 "Deep Reinforcement Learning Doesn't Work Yet",INSIDE 授权转载。

AI 前线导读

深度强化学习可以说是人工智慧领域现在最热门的方向,它之所以声名大振,与 DeepMind 团队用它在 AlphaGo 和 AlphaZero 上大获成功脱不了关係。

强化学习本身是一个非常通用的人工智慧方法,在直觉上让人觉得非常适合用来模拟各种决策任务。当它和深度神经网路这种只要给足 Layer 和神经元,可以逼近任何函数的非线性函数近似模型结合在一起,感觉就是无敌!

但本文作者 Alex Irpan 想要告诉大家,深度强化学习是个大坑,别着急入坑!它的成功案例其实不算很多,但每个都太有名了,导致不了解的人对它产生了很大的错觉,高估能力而低估了难度。Alex Irpan 目前是 Google 大脑机器人团队的软体工程师,他从柏克莱获得电脑科学学位,大学时曾在柏克莱人工智慧实验室参与科学研究,导师是深度强化学习领域知名人物 Pieter Abbeel。

这篇文章在推特上非常爆红。知乎网友 Frankenstein 在看完英文原文后表示:「读完大有如不见此文,万古如长夜之感。心里激动,一时难以自抑。 这篇文章是我入坑以来看到的深度强化学习方面最好的阶段性总结,强烈建议应该作为深度强化学习的第一课,看完以后大家再慎重考虑到底要不要入坑。」

AI 前线觉得很有必要将这篇文章介绍给更多。虽然标题写着劝退文,但并非真的要完全劝退大家,而是希望大家更加冷静地看待目前深度强化学习的研究进展。

以下为文章全文:

写在前面

有一次在 Facebook 上,我发表了这样一段话:

AlphaGo使用的强化学习是人工智慧新星?让专家告诉你为什

深度强化学习正在被大量的炒作。这并不是无缘无故的!强化学习是很奇妙的一种方法,原则上,一个高效能的 RL系统应该是可以完成一切任务的。将这种方法与深度学习的经验力相结合明显是最佳搭配。深度 RL 看起来是最接近通用人工智慧的系统之一,而打造 AGI 这梦想已经消耗了数十亿美元的资金。

不幸的是,目前深度强化学习仍然不起作用 。

当然,我相信它是有用的。如果我不相信强化学习,我也不会研究它。但是研究过程中也出现了很多问题,而且大部分都很难解决。人工智慧研究人员光鲜亮丽的演示背后,是大家看不到的无数鲜血、汗水和泪水。

我已经看到过很多次人们被这个领域的研究所诱惑。他们只不过第一次尝试深度强化学习,并且刚好没遇到问题,于是就低估了深度 RL 的难度。如果不经历失败,他们不会知道这到底有多难。深度 RL 会持续不断地打击他们,直到他们学会如何设定符合现实的研究期望。

这不是任何人的错,而是一个系统性问题。如果结果是好的,自然什幺都好说,但如果结果不太好,还想写出同样精彩的故事就没那幺简单了。问题是,负面的结果才是研究人员最经常遇到的。在某些方面,负面案例其实比正面案例更重要。

在后面的内容中,我将解释为什幺深度 RL 没有起到作用,什幺情况下它能起到作用,以及它如何在未来变得更可靠。我并不是为了让人们停止研究深度 RL 才写这篇文章。我这样做是因为我相信如果大家一起找到问题所在,就更容易在这些问题上取得进展。如果大家聚在一起讨论这些问题,而不是每个人自己一次又一次地掉进同样的坑里,就能更容易取得一致的意见。

我希望看到深度 RL 研究有更好的发展,有更多的人进入这个领域。但我也希望人们了解他们即将要面临的到底是什幺。

在本文中,「强化学习」和「深度强化学习」相互替代使用。我批判的是深度强化学习的经验主义行为,并不是批判强化学习整体。我引用的论文通常用深度神经网路作为代替。虽然经验批判主义可能适用于线性 RL 或 tabular RL,但我不确定它们是否能推广到更小的问题。在複杂、高维的环境下,良好的函数逼近是十分必要的,RL 在这种环境下的良好应用前景推动了对深度 RL 的炒作。这种炒作是目前需要解决的问题之一。

这篇文章的走向是从悲观到乐观,虽然文章很长,但是如果你耐心阅读,我相信你一定会有所收穫。

下面首先介绍深度 RL 的失败案例。

深度强化学习的样本效率可能极低

深度强化学习最经典的实验基準是 Atari 游戏。在着名的深度 Q 网路论文中,如果你将 Q 学习、大小合适的神经网路和一些优化技巧结合,就可以让网路在一些 Atari 游戏中达到甚至超越人类水平。

Atari 游戏的运行速度是每秒 60 帧,你能估算出最先进的 DQN 想要达到人类的水平,需要多少帧吗?

这个问题的答案取决于游戏的种类,我们来看看 Deepmind 最近的一篇论文,Rainbow DQN 。这篇论文用模型简化法研究了对于原始 DQN 结构的几种改进,证明了将所有的改进结合起来可以达到最好的结果。在 57 种 Atari 游戏测试中,该模型在 40 种游戏中超过了人类的表现。下图展示了实验结果。

AlphaGo使用的强化学习是人工智慧新星?让专家告诉你为什

Y 轴是「人类标準化分数中值」,是透过训练 57 个 DQN  ,并以人类表现为 100%,对人工智慧的表现进行标準化得到的。以此为基础绘製了 57 场游戏表现的中位数。在 1800 万帧时,RainbowDQN 的表现超过了 100% 的阈值。这相当于大约 83 小时的游戏体验,再加上训练模型所需的时间,而大多数人玩通一个 Atari 游戏只需要几分钟。

请注意,1800 万帧其实已经很少了,考虑到之前的方法需要 7000 万帧才能达到与人类相当的水平,是 RainbowDQN 所需时间的 4 倍。至于 ,它永远无法达到 100% 的性能,即使经过 2 亿帧之后。

「规划谬误」一词的意思是:完成某件事花费的时间通常比你想像的要长。强化学习有它自己的规划谬误——学习一个 policy  需要的样本通常比你以为的更多。

这个问题不只在 Atari 游戏中出现。第二常见的基準实验是 MuJoCo,是设置在 MuJoCo 物理模拟器中的一组任务。在这些任务中,输入状态通常是一些模拟机器人每个关节的位置和速度。即使不用解决视觉问题,学习这些基準也需要 10^5 到 10^7 个步骤。对于这样一个简单的环境,这数字可以说是很大的经验量了。

DeepMind 的论文 ,用 64 个机器训练了超过 100 个小时来学习 policy。论文中没有说明「机器」是什幺,但我认为应该是指 1 个 CPU。

论文结果很酷。刚看到这篇论文时,我没想到深度 RL 竟然可以学习这些奔跑的步态。

不过与此同时,需要 6400 个 CPU 时的事实让人有点沮丧。并不是因为我没想到它需要这幺多的时间,而是深度 RL 仍然比实际应用级别的样本效率低了几个数量级。

这里有一个明显的对比:如果我们直接忽略样本效率呢?有几种情况很容易获取经验,比如游戏。但是,在这一点不成立的情况下,RL 面临着一场艰苦的战斗,而且不幸的是,现实世界中的大多数情况就属于这类。

如果你只关心最终的性能,许多问题更适合用其他方法解决

在寻找任何研究问题的解决方案时,通常会在不同的目标之间进行权衡。优化的目标可以是一个真正好的解决方案,也可以是良好的研究贡献。最好的情况是获得一个好的解决方案的同时需要做出好的研究贡献,但是很难找到符合这个标準并且可行的问题。

如果纯粹为了获得好的表现,深度 RL 的记录可能就没那幺光鲜了,因为它总是被其他方法打败。这是一个 MuJoCo 机器人的影片,用在线轨迹优化控制。正确的动作是在近乎即时、线上,而且没有离线训练的情况下计算的。而且它运行在 2012 年的硬体上 。

我认为这篇论文可以和那篇 DeepMind 论文相提并论。那幺两者之间的区别在哪里呢?

区别在于,Tassa 等人利用模型预测控制,可以用真实世界模型来进行规划。而无模型的 RL 不进行这样的规划,因此难度更大。另一方面,如果对模型进行规划有所助益,那为什幺要把问题複杂化,去训练一个 RL 策略呢?

同理,用现成的蒙地卡罗树搜寻就可以很容易地超越 DQN 在 Atari 游戏中的表现。下面是 Guo et al, NIPS 2014 论文中给出的基準数字。他们把一个训练好的 DQN 的分数和 UCT 人工智慧  的分数做对比。

AlphaGo使用的强化学习是人工智慧新星?让专家告诉你为什 AlphaGo使用的强化学习是人工智慧新星?让专家告诉你为什

这并不是一个公平的对比,因为 DQN 没有搜寻步骤,而 MCTS 能够用真实模型进行搜寻。然而有时候人们不在乎对比是否公平,人们只在乎它的有效性。如果你对 UCT 的全面评估感兴趣,可以看看原始的   论文附录。

强化学习理论上可以用于任何事物,包括模型未知的环境。然而,这种普遍性是有代价的:演算法很难利用特定讯息来帮助学习,这迫使人们使用多到吓人的样本,来学习本来硬是写程式就可以得到的规律。

无数经验表明, 除了极少数情况,特定领域的演算法均比强化学习的表现更快更好。 如果你只是为了深度 RL 而研究深度 RL,这不成问题,但是每当我把 RL 与其他任何方法进行对比时,都会觉得十分沮丧,无一例外。我非常喜欢 AlphaGo 的原因之一就是因为它代表了深度 RL 的一次毋庸置疑的胜利,而这样的胜利并不常见。

这一点让我越来越难给外行人解释为什幺我研究的问题又酷又难又有趣,因为他们往往没有背景或经验来理解为什幺这些问题这幺难。人们所认为的深度 RL 能做什幺,和它真正能做什幺之间横亘着一个巨大的解释鸿沟。我现在研究的是机器人。当你提到机器人时,大多数人们想到的公司是波士顿动力 。

他们可不使用强化学习。如果你看看该公司的论文,你会发现论文的关键字是time-varying LQR,QP 求解以及凸优化 。换句话说,他们主要用的还是经典的机器人技术,而实际结果证明,只要用对了这些经典技术,它们就可以很好地发挥作用。

强化学习通常需要奖励函数

强化学习一般假定存在奖励函数。通常是直接给定的,或者是离线手动调整,然后在学习过程中不断修正。我说「通常」是因为也有例外,例如模仿学习或逆 RL,但大多数 RL 方法把奖励函数奉为神谕。

更重要的是,想让 RL 做正确的事,奖励函数必须知道到底你想要什幺。RL 有过拟合奖励函数的倾向,会导致意想不到的结果。这就是为什幺 Atari 游戏是一个很好的基準。不仅是因为很容易从中获得大量的样本,而且是因为每场比赛的目标都是尽可能地得分,所以永远不用担心该如何定义奖励函数,而且每个系统都用相同的奖励函数。

这也是 MuJoCo 任务很受欢迎的原因。因为它们在模拟器中运行,所以你清楚地知道所有的对象状态 ,这使得奖励函数的设计容易许多。

在 Reacher 任务中,需要控制一个连接到中心点的两段手臂,任务目标是移动手臂到指定位置。下面是一个成功学习出策略的影片。

因为所有的位置都是已知的,所以奖励函数可以定义为从手臂末端到目标的距离,再加上一个小的控制损失。理论上来说,在现实世界中,如果你有足够的传感器来获取环境中精确的位置,你也可以这样做。

就其本身而言,需要奖励函数不算什幺,除非……

奖励函数设计难

增加一个奖励函数并不难。困难的是如何设计一个奖励函数,让它能鼓励你想要的行为,同时仍然是可学习的。

在 HalfCheetah 环境中,有一个双足机器人被限制在一个垂直平面内,只能向前跑或向后跑。

AlphaGo使用的强化学习是人工智慧新星?让专家告诉你为什

任务目标是学习跑步的步态。奖励函数是 HalfCheetah 的速度。

这是一个计划奖励函数 ,也就是说在状态离目标越来越近时,它增加奖励。另一种是稀疏奖励 ,即达到目标状态才给予奖励,而其他状态都没有奖励。计划奖励往往更容易学习,因为即使策略没有找到问题的完整解决方案,系统也会提供正反馈。

不幸的是,计划奖励可能会影响学习,导致最终的行为与你想要的结果不匹配。一个很好的例子就是赛龙舟游戏 ,预定的目标是完成比赛。可以想像,在给定的时间内完成比赛,稀疏奖励函数会 +1 奖励,而其他情况都是 0 奖励。

但游戏给出的奖励是只要到达关卡点就会加分,并且收集道具也会加分,而且收集道具给的分数比完成比赛得到的还多。在这样的奖励函数下,RL 系统的人工智慧即使没有完成比赛,也能拿到最高得分。因此也导致了许多意想不到的行为,例如人工智慧会撞毁船、着火、甚至走反方向,但它获得的分数比单纯完成游戏还要高。

RL 演算法是连续统一的,他们可以或多或少地了解他们所处的环境。最常见的无模型强化学习 ,几乎与黑盒子的优化方法相同。这些方法只有在 MDP  中才能求解出最优策略。RL 人工智慧只知道哪个给了 + 1 奖励,哪一个没有,剩下的都需要自己学习。和黑盒子优化一样,问题在于对 RL 人工智慧来说,任何给予 +1 奖励的都是好的,即使 +1 的奖励不是因为正确的理由而得到的。

一个经典的非 RL 例子是应用遗传演算法设计电路的时候,得到的电路中出现了一个 无连接的逻辑闸 。

AlphaGo使用的强化学习是人工智慧新星?让专家告诉你为什

所有的灰色单元都要有正确的行为,包括左上角的,即使它没有跟任何单元连接起来。

更多的例子可以参考Salesforce 2017 年的网誌文章 ,它们的目标是文本总结。它们的基準模型用监督学习训练,然后用自动度量方法 ROUGE 对总结效果进行评估。ROUGE 是不可微的,但是 RL 可以解决不可微的奖励,所以他们尝试直接用 RL 来优化 ROUGE。得到了很高的 ROUGE 分数,但是实际效果并不是很好。下面是一个例子:

Button was denied his 100th race for McLaren after an ERS ​​prevented him from making it to the start-line. It capped a miserable weekend for the Briton. Button has out-qualified. Finished ahead of Nico Rosberg at Bahrain. Lewis Hamilton has. In 11 races. . The race. To lead 2,000 laps. . In. . . And.

Paulus et al, 2017

所以儘管 RL 模型得到了最高的 ROUGE 评分:

AlphaGo使用的强化学习是人工智慧新星?让专家告诉你为什

他们最后还是用了另外一个模型。

还有另一个有趣的例子: Popov et al, 2017 的论文,也被称为「乐高积木论文」。作者用分散式 DDPG 来学习抓握策略,目标是抓住红色块,并把它堆在蓝色块的上面。

他们完成了这个任务,但中途遇到了一个彻底失败的案例。他们对于初始的抬升动作,根据红块的高度给出奖励,奖励函数由红块底面的 z 轴坐标定义。其中一种失败模式是,策略学习到的行为是把红块倒转过来,而不是捡起来。

显然这并不是研究人员预期的解决方案,但是 RL 才不在乎。从强化学习的角度来看,它因为翻转一个块而得到奖励,所以它就会将翻转进行到底。

解决这个问题的一种方法是给予稀疏奖励,只有机器人把这个块堆叠起来后才给予奖励。有时候这样能行得通,因为稀疏奖励是可学习的。但通常情况下却是没用的,因为缺乏正向强化反而会把所有事情複杂化。

解决这个问题的另一种方法是仔细地调整奖励函数,添加新的奖励条件,调整现有的奖励係数,直到你想学习的行为在 RL 演算法中出现。这种方法有可能使 RL 研究取得胜利,但却是一次非常没有成就感的战斗,我从来没觉得从中学到过什幺。

下面给出了「乐高积木」论文的奖励函数之一。

AlphaGo使用的强化学习是人工智慧新星?让专家告诉你为什

我不知道他们到底花了多少时间来设计这个奖励函数,但是根据术语的数量和不同係数的数量,我猜是「相当多」。

在与其他 RL 研究人员的交流中,我听到了一些趣闻,是由于奖励函数定义不当而造成的新奇行为。

有位同事正在教一个 RL 人工智慧通过一个房间。如果它离开边界,这事件就终止了。他没有对事件的这种结束方式加任何惩罚。结果最后学到的 policy 是自我毁灭式的,因为消极的奖励太丰富了,而积极的奖励很难获取,在它看来,快速死亡以 0 奖励结束,比长时间活动可能造成负奖励更可取。

一位朋友正在训练一个模拟机械手臂伸到桌子上方的某个点。这个点是根据桌子定义的,而桌子没有固定在任何东西上。RL 人工智慧学会了重重地拍桌子,使桌子翻倒,这样一来它也算移动到目标点了。而目标点正好落到了机械臂的末端。

一位研究人员在使用 RL 训练模拟机器手臂拿起锤子并把钉子钉进去。最初,奖励定义为钉子被钉到洞里的深度。结果,机器人没有拿起锤子,而是用自己的四肢把钉子钉进去了。于是研究人员增加了奖励项,鼓励机器人拿起锤子,然后重新训练策略。虽然他们得到了拿起锤子的策略,但是机器人只是把锤子扔在了钉子上而不是使用锤子。

诚然,这些都是「听别人说的」,但是这些行为听起来都很可信。我已经在 RL 的实验中失败了太多次,所以我不会再怀疑这一点。

我知道有人喜欢用迴纹针优化器的故事来危言耸听。他们总喜欢猜测一些特别失调的 AGI 来编造这样的故事。现在每天都有很多真实发生的失败案例,我们没有理由去凭空想像那样的故事。

即使奖励函数设计得很好,也很难避免局部最优解

前文给出的 RL 例子有时被称为「奖励作弊」。正常情况下,AI 会通过正常的手段最大化奖励函数。然而,有些情况下,AI 可以通过作弊的手段,直接把奖励函数调到最大值。有时一个聪明的、现成的解决方案比奖励函数设计者所预期的答案能得到更多的奖励。

奖励作弊是一个例外,更常见的情况是由于探索-利用权衡不当而导致的局部最优解。

下面是一个归一化优势函数的实现影片,在 HalfCheetah 环境中学习。

AlphaGo使用的强化学习是人工智慧新星?让专家告诉你为什

在局外人看来,这个机器人太蠢了。但是这是因为我们站在第三方的视角,而且我们知道用脚跑步要好得多。但是 RL 并不知道啊!它收到状态 ,然后做出行动 ,然后知道它得到了正向奖励,就是这样。

我猜测学习过程发生了以下几件事:

下面是另外一个失败範例,来自 Reacher 专案:

在这个过程中,初始随机权重倾向于输出高度正或高度负的动作输出。这使得大多数动作尽可能输出最大或最小加速度。超高速旋转非常容易:只需要每个关节输出高强度的力。一旦机器人开始行走,就很难以一种有意义的方式脱离这项策略——想要脱离这个策略,必须採取几个探索步骤来阻止混乱的旋转。这当然是可能的,但在这次试验中并没有发生。

这些都是一直以来困扰强化学习的经典的探索-利用问题。由于数据来自于当前的策略,如果当前的策略探索太多,得到的是垃圾数据,那就什幺也学不到;如果利用太多,智慧体也无法学到最优行为。

有几个不错的想法可以解决这个问题——内在动机、好奇心驱动探索、基于计数的探索等等。这些方法中有许多是在 80 年代或更早的时候提出的,其中有几个在深度学习模型中重新得到应用。然而,据我所知,没有一个方法能在所有环境中持续奏效,他们总是有时有用,有时没用。如果有一个到处都能奏效的探索技巧,那就太好了,但我认为这种万能技术在很长一段时间内都不能实现。不是因为人们没有尝试,而是因为探索-利用困境真的太难了。

引用维基百科的一段话:「最初二战中盟军的科学家认为,这个问题太棘手了,应该丢给德国,让德国科学家也浪费自己的时间。」 

我将深度 RL 想像成一个恶魔,故意曲解你的奖励函数,然后积极寻找最懒的可行局部最优解。当深度 RL 有效时,它可能过度拟合环境中奇怪的模式。

「深度 RL 广受欢迎的原因是它是机器学习中唯一允许在测试集上进行训练的研究领域」

强化学习的好处是:如果你想在一个环境中表现很好,可以随意的过拟合。缺点是,如果你想推广到其他环境中,可能表现会很差。

DQN 可以解决很多 Atari  游戏,但它是通过对单一目标进行集中学习来完成这项任务的——它只在某一个游戏的表现很好。但最后学习到的模式无法推广到其他游戏,因为它没有经过这种训练。你可以通过微调训练好的 DQN,让它去玩新的 Atari 游戏 ,但也不能保证它能够迁移,而且人们通常不期望它能迁移。

原则上在各种各样的环境下进行训练应该能使这些问题消失。在某些情况下,可以轻易得到这样的环境。例如导航,可以在环境中随机採样目标位置,并使用通用值函数来通用化 。这是一项很有前途的研究,然而我不认为深度 RL 的通用化能力足以处理不同的任务。OpenAI Universe 试图用分布式来解决这个任务,但据我所知,目前他们也没有太多进展。

除非 RL 系统达到了那样的通用化能力,否则 RL 所学习到的策略应用範围会一直受限。举一个例子, 想一想这篇论文: Can Deep RL Solve Erdos-Selfridge-Spencer Games? 。环境是 HalfCheetah。我们将奖励函数修改的更稀疏了一些,但这些细节并不太重要。Y 轴是每一段的奖励,X 轴是时间间隔,使用的演算法是 TRPO。

AlphaGo使用的强化学习是人工智慧新星?让专家告诉你为什

较深的曲线是 10 个随机种子表现性能的中值,阴影区域是第 25 到第 75 个百分点。这个曲线是支持论文演算法的一个很好的论据。但另一方面,第 25 百分点离 0 奖励十分接近。这意味着大约 25% 的实验是失败的,只是因为随机种子。

监督学习也会有变化,但变化不会这幺大。如果有监督学习的代码运行结果有 30% 低于随机结果,我会很自信肯定是数据加载或训练过程哪里出错了。如果我的强化学习程式码比不过随机结果,我不知道是有地方出错了,还是参数不对,或者我只是运气不好。

AlphaGo使用的强化学习是人工智慧新星?让专家告诉你为什

这张照片来自 “Why is Machine Learning ‘Hard’?”?》。核心论点是机器学习给失败情况空间增加了更多维度,从而成倍地增加了导致失败的原因。深度 RL 又在此基础上增加了一个新维度:随机性。你唯一能解决随机问题的方法是通过在这个问题上投入足够的实验来抵消噪音。

当你的训练演算法样本效率低下且不稳定时,它会严重降低你的研究速度。也许只需要 100 万步。但是当你给这个数字乘上 5 个随机种子,再乘上参数调整,你需要不计其数的计算才能验证所提假设的有效性。

或许这些能让你觉得好受些:我研究手头的工作已经好一段时间了,我花了 6 个星期的时间,让一个从头开始的策略梯度在一系列 RL 问题上获得了 50% 的成功率。我有一个 GPU 集群供我使用,还有一些每天一起吃午饭的朋友可以一起交流,他们在该领域已经工作了几年了。

另外,我们从监督学习中学到的 CNN 设计似乎不适用于强化学习,因为强化学习的瓶颈在于信用分配或监管比特率,而不是表示能力不足。ResNet、batchnorm,或者是很深的神经网路在这里都无法发挥作用。

[监督学习] 是主动想要发挥作用的。即使你搞砸了,你也会得到一些非随机的反馈。RL 是必须被迫发挥作用的。如果你搞砸了什幺,或者调整得不够好,你极有可能得到比随机情况更糟糕的策略。即使一切都很好,也有 30% 的可能得到一个很差的策略,没什幺理由。

长话短说,你的失败更多是由于深度 RL 太难了,而不是因为「设计神经网路」的困难。

——Andrej Karpathy 在 Hacker News 上发表的文章

随机种子的不稳定性就像是煤矿中的金丝雀。如果纯粹的随机性足以导致每次实验结果之间如此大的差异,那幺可以想像代码中实际的差异该有多大。

不过我们不需要去想这个问题,因为 “Deep Reinforcement Learning That Matters”这篇论文已经给出了结论:

我的理论是,RL 对初始化和训练过程的动态非常敏感,因为数据都是在线收集的,而唯一的监督是一个标量奖励。一个在好的训练样例上得到的策略会比一个没有好的训练样例的策略能更快地引导自己。一个不能及时发现好的训练样例的策略会崩溃,什幺也学不到,因为它相信它尝试的任何方向都会失败。

那幺 RL 已经成功做到的事呢?

深度强化学习确实做了一些非常酷的事情。DQN 虽然是旧新闻,但当时绝对轰动。单个模型能够直接从原始像素中学习,而不需要对每个游戏单独进行调优。而且 AlphaGo 和 AlphaZero 也是非常令人印象深刻的成就。

然而,在这些成功之外,很难找到深度 RL 在真实世界创造实际价值的案例。

我试图思考深度 RL 在现实世界的用途,却发现非常困难。我想在推荐系统中找到些东西,但那些演算法仍然以协同过滤和上下文老虎机为主。

到最后,我能找到的最好的是两个 Google 项目: 降低资料中心耗电,以及最近发布的AutoML Vision。

我知道奥迪正在做一些深度 RL 相关的项目,他们在 NIPS 上展示了自动驾驶的 RC 汽车,声称使用了深度 RL。我知道有一些很棒的工作,优化大型 Tensorflow 图的设备放置 ;Salesforce 的文本摘要模型。融资公司肯定在用 RL 做实验,但目前还没有确切的证据。Facebook 已经在聊天机器人中用深度 RL 完成了一些很棒的工作。每个网路公司应该都想过在广告服务模型中加入 RL,但是出于商业保密,我们并不知情。

在我看来,或许深度 RL 是一个不够强大,不能广泛应用的研究课题,也可能它是可用的,只是应用了它的人没有公开。我认为前者更有可能。

如果你问我图像分类的问题,我会告诉你预训练的 ImageNet 模型。对于图像分类问题,我们处在一个连电视剧《硅谷》的製作团队都能开发出识别热狗的软体的世界。但在深度 RL 领域几乎是不可能发生同样的事情。

鉴于目前的限制,什幺时候深度 RL 能有作用?

首先,真的很难说。想用 RL 解决所有事情,等同于试图用同样的方法来解决非常不同的环境下的问题。它不能一直起作用才应该是正常的。

话虽如此,我们可以从目前强化学习成功的项目列表中得出结论。这些项目中,深度 RL 或是学习了一些质量极优的行为,或是学习到了比以前更好的行为。

这是我目前的列表:

从这个列表中,我们可以看出使学习更容易的一般属性。下面的属性都不是学习必需的,但是满足的特性越多绝对是越好的:

OpenAI 的 Dota2 机器人只玩了初级游戏,只在 1V1 在线设置中玩了影魔对影魔,使用有程式码的项目结构,并且调用了 Dota2 API 来避免解决感知问题。SSBM 机器人达到了超人的表现,但它只是在 1v1 比赛中,与 Captain Falcon 在 Battlefield 上,而且不限时。

这不是在讽刺这些机器人。如果你连一个简单的问题都不知道是否能解决,为什幺还要研究一个困难的问题呢?所有研究的趋势都是先演示最小的概念证明,然后再推广它。OpenAI 在扩展他们的 Dota2 的研究工作,也在将 SSBM 机器人扩展到其他角色。

如果你想进一步了解如何设计一个好的奖励函数,可以搜寻「合适的评分规则 」。Terrence Tao 的 blog 中介绍了一个可行的例子。

而对于可学习性,除了多次尝试看看是否有效,我没有别的建议。

如果需要定义奖励,至少应该形式丰富。在 Dota2 中,最后的补刀 ,以及治愈会有奖励。这些奖励信号频率很高。对于 SSBM 机器人,造成伤害时会给予奖励,每次成功的攻击都会给出信号。行动与结果之间的延迟越短,反馈环形成越快,强化学习就越容易找到高回报的途径。

案例研究:神经架构搜寻

我们可以结合一些原理来分析神经架构搜寻的成功。从最初ICLR 2017 版 ,在 12800 个样本后,深度 RL 能够设计先进的神经网路结构。诚然,每个样本都需要训练一个收敛的神经网路,但这仍然是非常有效的。

如上所述,奖励是验证準确性。这是一个非常丰富的奖励信号——即使一个神经网路设计的结果只将精度从 70% 增加到到 71%,RL 仍然会考虑这一点。此外,有证据表明,深度学习的超参数接近线性无关。 NAS 不完全是调整参数,但我认为神经网路设计决策与调整超参数类似。这对学习来说是个好消息,因为决策和性能之间的相关性很强。最后,奖励不仅很丰富,它也体现了我们训练模型时关心的是什幺。

这些点的结合让我明白了为什幺它「只」需要大约 12800 个训练好的网路来学习更好的网路,而在其他环境中需要数以百万计的样例。这个问题的许多方面都对 RL 有利。

简而言之:深度 RL 目前还不能直接使用。

未来发展

有一句老话——每个研究者都在学习如何讨厌他们的研究领域。儘管如此,研究人员还是会继续努力,因为他们太喜欢这些问题了。

这也是我对深度强化学习的大致感受。儘管我有保留意见,但我认为人们应该用 RL 去尝试不同的问题,包括那些可能行不通的问题。否则我们还有其他办法让 RL 变得更好吗?

我觉得深度 RL 的有效性只是时间问题。当深度 RL 足够完美,能更广泛的使用时,它能做到非常有趣的事情。问题在于它该如何走到那一步。

下面我介绍了一些我认为的未来发展趋势。未来依然基于进一步的研究,因此我提供了这些研究领域相关论文的引用。

该领域

机器人在 sim-real 迁移中取得了很大的进步。

Pieter Abbeel 在演讲中喜欢提到的一点是,深度 RL 只需要解决我们希望在现实世界中需要解决的任务。应该有一种现实世界的先验,能够让我们快速学习新任务,代价是非现实任务中较慢的学习成本,但这是非常值得的。

困难在于,这样的真实世界先验是很难设计出来的,但依然是可能的。我对元学习最近的工作很有兴趣,因为它提供了数据驱动的方法来生成合理的先验条件。例如,如果我想用 RL 设计仓库导航,我会用元学习来学习一个好的导航先验,然后根据特定仓库机器人的要求对先验进行调优。

最近这方面的研究工作可以在BAIR 的 blog 中找到。

从环境角度来说,有许多选择。OpenAI Gym  目前使用者最多,但是  Arcade Learning Environment、 Roboschool、 DeepMind Lab、 DeepMind Control Suite 以及 ELF 都是很好的环境.

最后,虽然从研究的角度来看深度 RL 并不令人满意,但是它的经验问题对于实际用途可能并没有影响。假设一个融资公司使用深度 RL。他们用美国股票市场过去的数据训练了一个交易人工智慧,使用 3 个随机种子。在现场的 A / B 测试,一个收入减少了 2%,一个相同,另一个收入多出 2%。在这个假设中,复现性不影响结果,你只要部署收入多出 2% 的模型的就好。交易人工智慧可能只在美国的表现性能好,没关係,如果在全球市场推广效果不佳,不要部署在那里就好。取得非凡的成就和别人能複制的成功之间还有较大的差距,可能前一点更值得重点关注。

我们现在走到哪一步了

从许多角度来说,我对深度 RL 当前的状态都感到很烦恼。然而,人们对它有着强烈的研究兴趣,可谓是前所未见。Andrew Ng 在他的  Nuts and Bolts of Applying Deep Learning 的谈话中很好的总结了我的想法,短期很悲观,但长期的乐观也平衡了这一点。深度 RL 现在有点混乱,但我仍然相信它是未来。

也就是说,下一次有人再问我强化学习是否可以解决他们的问题时,我仍然会告诉他们:不,不行。但我也会告诉他们等几年后再问我,到那时,也许它就可以了。