特别节目·中文精读

皮特·阿比耳:深度强化学习

Pieter Abbeel: Deep Reinforcement Learning

深度强化学习研究者讲解机器人学习、模拟到现实迁移与样本效率的难题。

官方音频00:00 / --:--
中文精读由 AI 基于原始访谈改写,非官方翻译,可能存在偏差或错误;表述以原音频与官方文稿为准。说明

OpenAI 有一只单腿机器人,学会了后空翻。整个过程里没有人给它写过“后空翻”这条奖励函数,也没有人告诉它目标是什么。它只收到一类信号:人看完它刚才那段动作,说这次比上次好,或者说这次不如上次。

几十次比较之后,它翻出一个干净的后空翻。皮特·阿比耳(Pieter Abbeel)讲这件事时,把它当成强化学习最迷人的地方:人的心里装着一个目标,机器人对那个目标一无所知,两边靠“更好”和“更差”这两类偏好信号,最后收敛到了同一个动作上。阿比耳是伯克利机器人学习实验室的主任,深度强化学习这条线上最核心的研究者之一,也是让机器人学会抓取、飞行、操作的代表人物。

这件事的另一面,是强化学习今天最大的瓶颈。绝对分数难拿,相对偏好好拿。让人给一段动作打 1 到 10 分,他会犹豫半天;让他比较两段视频哪段顺眼,他脱口而出。OpenAI 的保罗·克里斯蒂亚诺(Paul Christiano)和同事做出的结果证明的就是:把打分换成比较,样本效率能好一大截。

让人形机器人打赢费德勒,卡在硬件还是软件

访谈从一个玩笑开始:什么时候能有机器人自主打赢费德勒?阿比耳把这问题拆成两半。在 AI 的很多难题里,缺的只有软件,可这件事上硬件同样差得远。波士顿动力的机器人开始接近了,但离“绕着球场跑动再挥拍”还早。他的估计是硬件还要 10 到 15 年。他特意提到场地:红土要滑步,可能比草地更难。

如果不强求人形,允许轮式底盘和特殊设计,时间会提前。挥拍这件事他反而乐观。球机在一侧发球,机械臂在另一侧挥拍,用强化学习加上一点仿真里的预训练,他觉得可行,只是不知道能做到多高的精度。人类选手能把球打在边线上,还带旋转。强化学习能不能学会给球加旋转,他说这问题把他问出兴趣来了。

“你把我问有兴趣了。”(皮特·阿比耳)

明知道里面没有学习,人还是会喜欢它

物理世界里最震撼阿比耳的,还是波士顿动力那些视频:跑上楼梯、做 parkour。他说不知道底下有多少是硬编码的,但光是身体层面的运动能力就已经很惊人。他在杰夫·贝索斯(Jeff Bezos)组织的 Mars 活动上见过 SpotMini,它在场上到处溜达,贝索斯一离开房间,它还得跟着走。今年早些时候他和 Spot 一对一待过一段时间。明知道里面没有多少学习,明知道原理,心理上还是会产生某种连接。

更极端的例子是 Pepper。在一场 Fidelity 组织的活动上,Pepper 被脚本化去主持几个环节,还被脚本化出一点小孩的性格,会突然插话,也像人一样抢着参与。阿比耳说那百分之百是写死的脚本,他还是很难不把它当成一个“人”。

实验室里还有 BRETT,全称是 Berkeley Robot for the Elimination of Tedious Tasks。所有人一律叫“他”,不叫“它”。一个性别代词,就让它在心理上更像人。

那这种心理能不能写进奖励函数?阿比耳说,如果能把“让人喜欢和它相处”形式化成一个目标,强化学习没有理由学不会,也没有理由不会自己变得越来越像人,或者像宠物。难点在于怎么拿到那个信号。数字形式的评分很难,比较形式的好恶却很容易:一个人说“你刚才那五分钟比前五分钟舒服多了”,这句话就已经是一个可用的奖励。

一百步动作换来的 3 分,能说明什么

阿比耳提到自己刚翻开萨顿(Sutton)和巴托(Barto)那本强化学习教材时的感受:这看起来像魔法,像是智能本身的定义。

稀疏奖励下的学习为什么可能?他先讲了反面。正因为信号这么弱,强化学习才需要海量样本。设想连续做一百个动作,第一次拿到 3 分,第二次拿到 2 分。单看这两个数字毫无意义,但两条轨迹之间有了相对关系:第二次那一百个动作整体上不如第一次。两条轨迹里都混着好动作和坏动作,分不出来是哪个起了作用。所以只能靠大量经历,把“一贯和好结果同时出现的动作”和偶然的噪声分开。

然后策略梯度做的是一件很简单的事:让高奖励时经常出现的动作更可能发生,让低奖励时经常出现的动作更不可能发生。听起来过于朴素,但它在实际任务里学到的东西,比纸面推演能解释的要多。

ReLU 网络是一片逐步铺开的线性控制器

伯克利做深度强化学习大约起步于 2011 到 2013 年,闫端(Yan Duan)最早在推动。当时他们脑子里的图景是这样的:ReLU 这类整流网络给出的东西,本质上是分段的线性反馈控制。

线性反馈控制在控制文献里极其成功。阿比耳举过直升机的例子:悬停状态下,直升机是一个动力学非常复杂的系统,可一个相对简单的线性控制器就能把它稳住。被控对象复杂,控制结构却可以很简单,这在工程里反复被验证过。

网络的额外好处是拼接。以前这块工作要靠人手工做:这里放一个线性控制器,那里放一个,中间用有限状态机切换。网络学的是自己决定什么时候用哪一块。两层网络里,隐层某个单元从激活切到失活,相当于沿着某个方向切一刀,这个方向不一定和坐标轴对齐。空间就这样被一刀一刀慢慢铺满,而且相邻的那些线性控制器共享大量参数,也就是共享了大量已经学到的经验。

阿比耳说,这是他当年敢于期待深度强化学习能成的核心直觉:它吃着线性反馈控制极其好用的红利,同时用铺砖的方式补上了线性控制做不到的部分。

肌肉收缩是高频的,读博的决定是低频的

这套直觉搬进真实世界,就会撞上时间尺度的问题。

人影响世界的方式,说到底是一串高频的肌肉纤维收缩和放松。但“决定读一个博士”这种决策,跟肌肉动作之间隔了不知道多少层抽象。做出决定到看到结果要十年,中间还有无数分叉。现有算法根本没有能力把最终的结果归因到当初那个决定上。

这就是信用分配(credit assignment)的死结。阿比耳认为,要解开它,需要目前完全不存在的层级推理能力。调参补不上这个缺口,缺的是一个还没有被发明出来的机制。

二三十年前的推理系统能想很远,只是没接地

层级推理这四个字,容易让人以为是个新问题。阿比耳提醒,二三十年前就有能在很长时间跨度上做推理的系统,问题是它们不接地。世界的逻辑描述、动力学描述,全部由人手工设计,接不到感知上,接不到真实物体上。这套系统在纸面上想得很远,落到现实里立刻失焦。

深度学习补上的正好是这一环。它让机器能从传感器数据里看懂世界里有什么。所以现在是把两边接起来的时机,他给出了两条路线。

第一条是把深度学习嵌进传统方法,端到端训练,让深度网络的输出变成一种表征,再喂给传统的动力学系统去做规划。值迭代网络(Value Iteration Networks,阿维夫·塔玛 Aviv Tamar 等人的工作)是这条线上的代表。

第二条是信息论的思路。所谓采取一个高层动作,就是选一个隐变量,这个隐变量在相当程度上决定了未来一段时间里会发生什么。决定去加油站加油,五分钟后人到没到,从当初那个高层动作大致就能判断出来。这条路线他们做了很久,进展很小。

撞墙之后,阿比耳回头问了一个更朴素的问题:要层级到底是为了什么?答案落在两件事上,更好的信用分配,和更快的学习。

“我们不知道层级该怎么设计,但我们知道想从它身上得到什么。那就直接把它当优化目标,看它会不会自己长出来。”(皮特·阿比耳)

这就是 RL²(由闫端领衔)的做法。在迷宫导航任务里,确实长出了东西:走廊里稳定地直着走,这本身就是一个“选项”;到了岔路口才决定转不转;甚至出现了“别去走过的地方”这种倾向。阿比耳说这算有生命迹象,只是还没能扩展到真实世界的复杂度上。

他同时承认,自己更希望这类问题能用数学解决。一个能形式化的结论可以跳过大量实验,而研究过程本身就像强化学习,要试很多次才撞到一次成功。可惜这些年大多数进展还是一步一步试出来的,那种能一眼看穿两年实验量的方程,还没有出现。

AlexNet 真正的价值在于学到的东西能复用

迁移学习是阿比耳眼里最难也最重要的问题之一。他在这件事上的态度有点分裂。

一边是已经足够惊人的成绩。2012 年 AlexNet 在图像识别上变好,只是个开头。紧接着大家发现,在 ImageNet 上学到的东西可以微调去解新任务。这一点在当时反而是更大的事情:以前的机器学习通常是一次性的,为一个场景学一个模型,学完就完了。“学到的东西能复用”这件事,是迁移学习到今天为止影响范围最大的一次成功。

后来规模变大,又把这件事放大了一轮。语言模型先做预测任务,再把学到的东西复用到别的任务上。UNREAL 那类工作一边做强化学习一边挂上辅助目标,在迷宫导航里学到的不只是走法。阿比耳说这些结果已经很说明问题。

另一边是他的困惑。什么算泛化?泛化有几个层级?这条线该画在哪里?他说自己在这上面很分裂。看得见的进步是真的,概念上的模糊也是真的。

能预测行星轨道的模型,遇到闯入的恒星就废了

他有一个区分“学会精通”和“学会泛化”的例子。

当前的深度学习拿来预测太阳系行星的相对运动,能预测得不错。可如果突然有一颗大质量天体闯进太阳系,它就不会知道接下来会发生什么。物理学家做的事情不一样:他们要找到能解释这一切的最简解释,不断追问还能不能更简单。整个宇宙动力学的终极方程,是这种追问的极限形态。深度学习没有往这个方向推。

统计学家弗拉基米尔·瓦普尼克(Vladimir Vapnik)梦想找到学习的 E=mc²,一门关于学习的通用理论。阿比耳觉得这个追求有意思,但他心里的版本更像是模块化原则。有证据表明大脑相当模块化,先天失明的人会把通常处理视觉的脑区挪作他用,说明一部分脑区可以被重新征用。新皮质占了很大一块,看起来也相当模块化。如果谁能设计出同样模块化的东西,让它自己成长、自己变得更能干,这个方向不算不现实。

自我对弈漂亮在哪:一局里总有一方赢

自我对弈(self-play)之所以美,在于它顺手解决了强化学习最头疼的信号问题。

普通强化学习里,如果你从来没成功过,就一点信号都拿不到。自我对弈里你在两边,一局里总有一方赢、一方输,对比天然存在:一个版本的“我”比另一个版本的“我”强。每下一局都有信号。所以只要一个问题能被改写成自我对弈,学习速度就远好于普通环境。

可惜目前自我对弈主要还用在有天然对手的游戏里。如果机器人搭建一间小屋这种事也能写成自我对弈,会快得多,但没人知道怎么写。写不成就只能设计细粒度奖励,不只奖励达成目标,还要奖励中间取得的进展。这样做很耗人力。

既然奖励要花这么大力气设计,为什么不干脆演示一遍?阿比耳顺势把话头引到了模仿学习上。

十分钟教一个技能,和让机器人看懂你的手

最直接的一种演示是遥操作。人在这边操控,机器人在那边真实地经历整个过程。信噪比很高。阿比耳说十分钟就能教会一个基本技能,比如抓起瓶子放到指定位置,不管瓶子从哪个位置开始都能放过去。

更有意思的是第三人称。机器人不动手,只看着你做,然后自己完成那一步翻译:把“你的手在做什么”映射成“我的手该做什么”。你不能用它控制你的手,你只能看。阿比耳把 2018 年的一次重要突破归在这条线上,由切尔西·芬恩(Chelsea Finn)领衔,他形容这几乎是给示范做了一次机器翻译:人的示范被翻译成机器人该执行的动作,背后是元学习,从很少的示范里学到这种翻译关系。这打开了很多加速学习的口子。

自动驾驶不太需要区分第一人称和第三人称

莱克斯自己研究自动驾驶,问这套第三人称的办法能不能用过去。阿比耳说,开车这件事上,第一人称和第三人称的区分并不重要。

原因在于难的地方已经很清楚了:从当前位置到前方几米的一个点,这件事被研究得很透,动力学也好理解。区别只在谁在打方向盘。机器人操作就完全不同,接触力非常复杂,视角的区分在那里才有意义。

至于驾驶该用模仿还是强化学习,模仿给出的信号更足,短板也明显:标准形态的模仿学习里没有目标概念。纯粹反应式的行为克隆,泛化能力有限,遇到训练分布之外的场景就没辙。逆强化学习这类带目标推断的版本会好不少。阿比耳的意思很清楚:一个没有目标概念的策略,很难泛化到你真正需要的那种程度。

与其造一个完美仿真器,不如造一群不太完美的

仿真和模仿、强化学习的关系,阿比耳给了一个角度。

一条路是把仿真器做得越来越准。另一条路是造一批仿真器,每一个都不够准,单独在里面训练都迁移不到真机,但同时在全部仿真器里训练,就会出现一个在所有仿真器里都表现好的策略。真机无非是又一个略有偏差的仿真器。

“说不定我们本来就活在一个仿真里,那真机也就是其中之一。”(皮特·阿比耳)

驾照只考绕街区一圈,我们却不敢这么信自动驾驶车

说到安全,阿比耳先谈最实际的一层。机器人物理上很强壮,一次失误就可能造成伤害,车可以看成会跑的机器人,风险同理。这一层是很工程的问题:这个机器人犯错,后果是什么。“机器比人聪明之后怎么办”那类长期担忧,是另一个层面的事。仿真在这里派上很大用场。

他拿驾照考试做了个对比。加州郊区的路考,绕街区开一圈,路边停车,过一个停车标志,基本就结束了。人类驾驶这么复杂的能力,被这么短的测试代表了,我们接受了这种代表性。换成一辆自动驾驶车做完这套流程,没人会信它能上路。所以真正缺的是面向机器人的单元测试,这一类测试目前还没有。

问题在软件更新时更尖锐。自驾驶系统升级了一版,怎么确认新版本在所有维度上都更强,没有把坏行为悄悄带进来?阿比耳说这个问题目前还没有真正的解法,是值得专门研究的方向。

善良是被预置的,还是能被优化出来

访谈末尾聊到善良。

阿比耳提到吴恩达(Andrew Ng)让他看到善良的价值。人的偏好里有一部分是进化预置的:痛、饿、渴,我们天生就知道要躲开,这不是被教出来的。进化把这些写进身体里,正是因为把它们写进去,学习才变得容易。同时人类又非常部落化,对自己人很宽厚,对外人要专门去学。

史蒂芬·平克(Steven Pinker)在《人性中的善良天使》里描述了暴力长期下降的趋势。无论人们怎么分阵营,长期看人类是越来越能相处。这是一种跨越很多代的缓慢优化。

那能不能把善良教给机器人?阿比耳用狗来回答。狗有推理能力,水平也不低,但远不到人类水平,可是很多人从狗身上得到的幸福感很高。回家时狗扑上来,那天就顺了;狗被带走几天,回家的那一刻就没那么高兴。建立强烈的感情联结,不需要人类级别的推理。至于这种联结对人是不是好事,那是另一个问题。

马斯克说过爱是答案。莱克斯顺着提了个改法:爱是目标函数,强化学习是答案。阿比耳的回答是,也许吧。

把整场对话串起来看,阿比耳的判断其实相当克制。机器人打赢费德勒还要等硬件,层级推理还没有发明出来,安全测试还没有解法,迁移学习到底算不算泛化也说不清。他反复回到同一个位置:如果一件事能被形式化成目标,学习就没理由做不到。剩下的工作,是把目标写对,以及找到足够便宜的信号来源。

  • 奖励信号能用比较就别用打分。绝对评分采集成本高、噪声大,“这一段比上一段好”这种相对判断几乎零成本,文中独腿机器人学会后空翻就是靠这个。设计人类反馈流程时,先把评分表换成二选一。
  • 先问一个问题能不能改写成自我对弈。只要能拆出两个互相竞争的自己,每局都有胜负,信号就不再稀缺。游戏之外的场景值得花时间试一次这种改写,收益远大于调超参。
  • 奖励塑形做不动时,改成演示。与其设计逐步进展的奖励,不如花十分钟遥操作示范一次,信噪比高得多。有条件的团队可以再往第三人称示范上走一步,让机器只观察、不经历。
  • 仿真别追求单个完美,追求一组有偏差的。同时在一批都不够准的仿真器里训练,逼策略学出对全部偏差都成立的行为,真机就是其中一个略有不同的样本。
  • 给模型建回归测试集,尤其在更新之后。人类靠一圈路考代表驾驶能力,机器需要更严格的东西。每次上线前确认新版本在所有维度上都不弱于旧版本,别让坏行为悄悄混进来。
  • 把“层级”当优化目标而不是手工架构。既然说不清层级该长什么样,就先定义想从它身上获得的东西,比如更快的收敛,然后让结构自己涌现,再从结果里反推它学到了什么。
  • 先在大规模预测任务上预训练,再迁移。从 ImageNet 微调到语言模型,这条路的收益被反复验证过。手上的任务规模不够时,先把数据用在通用表征上。
  • 给形式化推导留出时间。实验本身就像强化学习,要试很多次才成功一次。一个能写下来的定理或界,可以跳过两年的试错,这笔账值得算。

本集资源与出处