谢尔盖·莱文:机器人学与机器学习
Sergey Levine: Robotics and Machine Learning
探讨如何用深度强化学习让机器人获得技能,以及数据、仿真与现实部署之间的差距。
2004 年,斯坦福拍过一段机器人演示视频。
视频里,一台叫 PR1 的机器人走进客厅,把散落的玩具一件件收好放回原位,最后从冰箱里拿出一瓶啤酒,走到沙发前递给坐着的人。动作连贯,节奏自然,看起来像把十几年后的未来提前拍了出来。
这段视频在机器人学习圈子里流传很广,因为它有个包袱。
PR1 全程由人遥控。
Sergey Levine(谢尔盖·莱文)在 Lex Fridman 的播客里用这段视频回答开场那个问题:最先进的人类和最先进的机器人,差在哪里。他把差距切成两半。身体那一半,差距不大。只要愿意花钱、做工程,机器人可以跑得更快、力气更大,甚至抬得起一辆车。宽的那一半在脑子里。
「如果我们愿意花点钱、做点工程,身体这关几乎能抹平。但智能的差距,那条缝非常宽。」(Levine)
这期对话录制于 2020 年。Levine 是伯克利的教授,做深度强化学习、机器人学、计算机视觉,是最早一批把感知和控制塞进同一个神经网络做端到端训练的学者。
差距有多大,取决于世界有多乱
Levine 说,衡量这条缝有多宽的尺子,是环境的开放程度。
把机器人放进工厂,告诉它每个零件在哪,把动作轨迹硬编码进去,它能做到人类做不到的事,更快、更稳、更强。可一旦环境里出现变动,哪怕只是你厨房里那种程度的变动,它立刻就不行了。
这个判断的分量在于,它把「机器人离人有多远」换成了一个可以测量的变量:世界的意外程度。工厂里的世界是被锁死的,家务里的世界是完全敞开的。我们觉得拿杯子喝水是全世界最简单的事,恰恰因为那是所有事情里变量最多的一类。
Lex 顺势问了一个更哲学的问题:人类的认知能力里,先天和后天各占多少?如果全是后天学来的,AI 就更有希望。
Levine 说自己不是生物学家,只能从 AI 的角度回答,方法是绕开「人是怎么做到的」,去问「最少需要什么」。
他给的例子是:你从进化上被强烈激励去认脸,认得出母亲的脸,你就更可能活下来,所以人类认脸很强。但这不能说明认脸必须写进基因。更干净的实验是看人在完全超出进化经验的情境里表现如何。
现代生活天天在做这个实验。开车、坐飞机、用摇杆操控一条从没见过的机械臂,进化从来没有准备过这些东西。你会笨拙两秒钟,然后就能凑合着把它用起来。
「如果我告诉你,你的命取决于你能不能用这条机械臂去把店打开,你大概就能做到。哪怕你从没见过这个设备、从没用过这个摇杆。这跟进化没什么关系,给你这个能力的是你的灵活性。而现在的机器人系统,恰恰在这里塌掉。」(Levine)
常识不是知识库,是活出来的
Lex 追问了一句:我们能不能适应一个陌生的摇杆,是不是因为我们底下垫着一整座知识冰山?
Levine 认可冰山的存在,但他认为这座冰山很可能是一辈子攒出来的。
他说,现代机器学习真正的难题,是从海量无序的经验里蒸馏出某种像常识的东西。困难也许跟机器学习本身无关,根源在于我们把它想得太窄了。
「我们可能太死板地守着一种极度监督式的学习观念,就是输入输出、X 是对的 Y 是错的这种模型。真正需要的,也许是换一个视角:把世界看成一堆经验,它不一定提供任何刚性的监督,只是提供了大量『本来可能发生的事』。你从里面蒸馏出对世界的常识理解。」(Levine)
他接着说出了一个至今没有答案的问题:经验从哪里来,重要吗?
是把互联网上所有东西下载下来,塞进一个 21 世纪的巨型语言模型,然后看会发生什么?还是机器必须亲身去试、去观察自己动作的后果、自己选择去碰世界的哪一部分?
如果只是获取大量关于世界的样本,那效率可能很低。可如果机器在主动试错,它就等于在做一种粗糙的困难样本挖掘:它会去做自己认为有用的事,然后看到有时好有时坏的结果,用这些结果修正自己的模型。这样积累出来的数据,也许对建立常识异常有利。
他举的例子是一瓶水。你我都知道,把桌上这瓶水掀翻没什么好处,所以不会去做。一个对世界理解很差的系统,可能会觉得掀翻它能提高自己的效用,于是真的去掀。掀完之后它得到了一个负反馈,而这个反馈正好告诉了它不要做这件事。
「这就是那个不断自我改进的循环,它才是关键。这个循环很可能就是区分今天最好的方法,和明天最好的方法的东西。」(Levine)
Lex 顺着问:跳出已经奏效的策略、去探索完全陌生的区域,有多重要?
Levine 说这取决于具体问题,并且指出,这个问题正好触到了强化学习的一个分水岭。
经典强化学习把问题定义成最大化效用,理性智能体的每一个动作都服务于这个效用。
另有一种框架是:先让你随心所欲地探索世界,探索完了之后,再派给你一个任务。
「如果你不知道将来会被派去做什么,只是想让自己的准备尽可能充分,你可能会去追求某种覆盖度,攒下一整套认知工具。等到有一天有人跟你说,去给我把咖啡端来,你已经准备好了。」(Levine)
他说这是他自己偏爱的一种想法,但并不主流。这句话本身就有分量:一个领域里最活跃的研究者承认,他相信的方向还不是主流方向。
为什么机器人比下棋难
Lex 请他把镜头拉远,问机器人学到底要解决什么问题。
Levine 给了两个答案。
务实的那个是:造出一个能完成人类用户布置的任何任务的系统。只要在物理能力范围内,如果它能通过一点点额外训练或试错把任务做出来,就像一个人通过遥操作把机器人开动起来那样,机器人问题就算解决了。
第二个答案更接近他为什么选这一行。他在意的是机器人学能给人工智能的理解带来什么,机器人学本身要做到多好反倒是次要的。
接下来是他对计算机视觉、自然语言处理和机器人学根本差异的解释。
机器人学要求你扔掉很多拐杖。感知、控制各自的难题要处理,更重要的是它们之间的整合也要处理。过去几十年,主流的做法是模块化:各个子问题分别解决,然后拼起来,整体就能跑。而这十几年看到的情况是,把整件事当一个整体来研究,得到的解法可能和分开研究完全不同。
另一个差异是,机器人学把莫拉维克悖论(Moravec's paradox)照得特别清楚。
积分和微分学起来很吃力,但写个程序让它求导数、求积分,它能算一整天不出错。从杯子里喝水,人要轻松得多,对机器人却极难。
Levine 认为,当我们看到这种刺眼的不对称,通常意味着我们漏掉了某个重要的东西。盯着这些不对称看,就是找到那块拼图的路径。他说这不必发生在机器人学里,但机器人学碰巧挤满了这类不对称。
于是问题变成:为什么操纵物体这么难?
他的回答回到了监督信号。视觉的输入输出和监督关系非常干净,至少在某个抽象层次以前,它容易被塞进一个强监督的框架。机械臂操纵就很难这样处理。
「你可以试着搞一个标注数据集,里面写清楚每个时刻该发什么电机指令,然后在上面训练。但各种原因让它效果不佳,而且它跟人和动物学做事的方式也毫无相似之处。父母不会告诉你,为了走路,你的每块肌肉该怎么收缩。」(Levine)
人得到的是一些模糊的指引,真正细到低层的东西,基本都是自己摸出来的。而在电机控制里,那种「有人告诉你这是猫这是狗」的监督,明摆着不存在。
把感知和控制拆开会损失什么
2014 年,Levine 团队做了第一批用端到端强化学习从视觉学机械臂技能的工作。他说这在当时的机器人学界有点冒犯性,也争议不小。
他们要证明的只有一件事:在感知和控制结合的场景里,把它们当成一个整体来训练,效果比拆开更好。
实验任务很简单,机器人要把一个红色梯形块插进梯形的孔里。拆分方案是先用位姿检测器找到孔的位置,再控制机械臂把它送进去。端到端方案直接把像素映射成关节力矩。
他们观察到,端到端方案对感知部分的压力反而更小。模型不需要精确算出物体在三维空间里的位置,只要把误差分布成一种特定形状:水平方向的误差比垂直方向更重要,因为垂直方向可以一直往下压,压到压不动为止,感知误差造成的危害很小;而垂直于运动方向的误差危害大得多。
「如果你把这两件事合起来看,就可以在模块之间最优地分配误差,让每个部件都弱一点,整体性能反而更好。」(Levine)
这个结论听起来平淡,但它的意义在于可推广。Levine 提到,研究人和动物知觉启发式的人早就发现了类似的东西。最有名的叫凝视启发式(gaze heuristic):想接住一个飞来的球,你不必在脑子里解一整套微分方程去定位它在三维空间里的轨迹、估速度、算风阻。你只需要保持速度,让球在视野里的位置不动。它往下掉一点,你就加速;它往上飘一点,你就减速。照这个简单规则走,你会正好走到球落下的地方。
棒球手在用它,飞行员判断自己会不会和别人撞上时在用它,青蛙抓虫子也在用它。
没有标准答案的「代表性难题」
Lex 问:机器人学里有没有一个干净漂亮的代表性问题,解决了它就能推进一大步?
Levine 说自己没有好答案,原因恰恰在于这个领域考的是灵活性和适应性,把某件事做到极致解决不了问题。
「难点在于能迅速学会做某件任意的新事,好到能让你继续去做下一件任意的新事。」(Levine)
他举例说,如果这个问题放在 2016 年问,他会说抓取是最好的代表性问题。它有巨大的现实价值,做好了能赚很多钱,因为很多仓库想用机器人。而且它足够难,因为不同物体需要完全不同的抓取策略。
但现在情况变了。这几年人们把抓取做得相当好,好到他不确定再把它当作主要的牵引问题还能推进多少。
比较有意思的是真正奏效的方法路线。早期研究者几乎把抓取当成一个几何问题,这跟计算机视觉早期把识别当成逆向图形学如出一辙。抓取被当成逆向物理问题:先看清物体的形状,再用自己对物理规律的估计算出该把手指放在哪里。
而真正效果好的做法,是学习加大量仿真或者真实世界的试错。你不用再去解几何问题,也不用去解物理问题。
抓取难在哪?难在需要应对的物体种类极其庞大,对一类物体有效的策略换到另一类就失效。盒子抓得再熟,碰到塑料袋就得换一整套策略。物体的属性远不止几何形状,还有哪里好拿、哪里不好拿、哪里会弯、哪里会让东西翻转脱手、哪里能形成稳固的抓握。
软的东西如果你抓错了地方,它会整个翻过来,里面的东西全洒出去。
Lex 顺势点出,这些「洒出来」的细节,已经开始带上常识推理的味道了。他问:解决通用机器人问题,是不是必然要求常识,要求某种人类水平的通用智能?
Levine 把问题掉了个头。
「也许应该反过来看:研究机器人,能帮我们理解怎么把常识放进 AI 系统里。」(Levine)
他认为常识是一种涌现属性,是你不得不在某个具体的世界里活动、把事情办成,才会长出来的东西。
一个图像描述系统看世界的照片,然后打出英文句子,它确实在处理我们的世界。但你很容易构造出它违反常识的场景:给它一张穿着皮草大衣的人,它会说那是泰迪熊。
Levine 的判断是,这套系统并不真的住在我们的世界里。它住在由像素和英文句子构成的另一个世界里,那个世界里没有「冬天得穿上皮草不然会冷」这件事。
「原因可能就在这里:我们今天造的系统栖居在另一个宇宙里。如果我们造出的系统被迫去处理我们这个宇宙全部的一团乱麻,也许它们就必须获得常识,才能真正最大化自己的效用。而现在这些系统不必这么做,它们可以走捷径。」(Levine)
从最优控制到强化学习,只是名字变了
Lex 说,他原来的直觉是必须先把智能解决了才能解决机器人,而 Levine 把顺序倒过来了:机器人学是研究智能的最佳场所之一,因为它逼着你去碰多模态、多任务、知识聚合这些东西。
他接着问:机器人问题能不能纯靠学习解决,从零学起,不注入人类专家规则和启发式?
Levine 说这个二分法有点太锋利,因为写算法的人终究是人,跑 TensorFlow 的也是人。但就这个问题的精神来说,答案是肯定的:很多以前必须手工精细工程的问题,可以交给自动化优化。
然后他说了一句很像史前考古的话:这个想法一点都不新。人们琢磨用自动化优化来做控制,已经琢磨了很久很久。改变的更多是名字。
「今天我们会说,我的机器人在做机器学习、在做强化学习。1960 年代你大概会说,我的机器人在做最优控制。写下一组微分方程去做反馈极小化,和训练一个神经网络,这两者的差别也许没那么大,无非是把优化推得越来越深。」(Levine)
Lex 追问:深度学习让经验的累积变成了数据形式的深层表示,这感觉像知识,而不像最优控制。
Levine 认可这一点,并指出学习型系统与经典最优控制最大的区别:学习型系统原则上用得越多、做得越好。他认为这个差别极其有力。
关于符号主义的遗产,他给了一段极简的学科史。最初我们认为理性决策就是逻辑操作:把世界表示成逻辑,提出一个「我要让 X 为真,该采取什么动作」的查询,然后对符号表示做操作,得到答案。到了 1990 年代,人们不再写非真即假的谓词,改写成带概率的系统,本质上还是逻辑推理,只是概率逻辑推理。再后来,人们说,那就把模型里的概率也学出来吧。再后来,人们说,连节点都不必指定了,直接堆一个大神经网络上去。
在他看来,这些是同一条血脉的后代:用某种推断过程实现理性决策,用某种优化过程实现学习。
他还补了一个更具体的例子:训练一个大网络去预测机器人动作的后果,然后跑概率推断,把模型反过来用,找出能导致某个合理结果的动作。他说这看起来就像一种逻辑。你有世界模型,只不过它由神经网络表达;你在这个模型上做某种操作,回答一个查询。
解释性、验证,和会讲故事的机器
Lex 说,符号系统真正让人舒服的地方是可解释:你能跟上系统的推理链条,它讲的故事对你这个人类是有说服力的。而神经网络讲不出这样的故事。他半开玩笑地问,人类要求智能系统能讲出一个令人信服的故事来解释自己的决定,这会不会只是一种人的执念。
Levine 的回答把可解释性直接接到了性能上。你为什么要系统解释自己?因为当它搞砸的时候,你想知道为什么。
但这件事比看上去更麻烦。系统可能出错,然后它对自己出错原因的解释也可能是错的;也可能是代码里某个 bug 让它没做本该做的事。所以他把可解释性看成验证与确认这个更大问题的一个组件。
Lex 说这几乎是给整个可解释性领域做了总结,但他觉得还有另一个维度:讲故事。它跟错误无关,只是把错误当成故事里的素材。人生活在彼此的故事里,政治如此,学术也如此。
Levine 接着讲了一项实验。他的前合作者、现在 MIT 的教授 Jacob Andreas(雅各布·安德里亚斯)做的工作,把自然语言当成策略内部状态。
模型被要求完成任务,同时读入一句自然语言的指令,比如「去红房子」,然后就该去红房子。但 Andreas 做了件不一样的事:他把这句话不当作人的命令,而当作策略心智状态的表示。
于是当模型面对新任务时,它会去想各种可能的语言描述,逐个尝试,看哪个带来正确结果。它有点像在自言自语:这个任务我该怎么办?去红房子?不对。去蓝房间?不对。去绿植那儿?对了,那就去绿植那儿。
你可以读出它给自己编的那句话,那就是它认为自己该怎么解决问题的描述。语言就此变成了内部状态。
Lex 把这个想法推了一步:如果在奖励函数里再加上「这个故事有多令人信服」这一项呢?
他说这在今天这个假消息和社交媒体的世界里是有点吓人的念头:真相本身没那么重要,重要的是你多能让人相信你围绕事实讲出的那个故事。
强化学习到底是什么
Levine 给的定义很朴素:强化学习就是学习型控制的现代形态。
经典定义窄得多,字面意义上就是从强化里学,做一件事,然后得到奖励或惩罚。但今天这个词的用法更宽,泛指任何用数据让自己变好的控制系统。
控制的核心是动作,是现在做出理性决策,而理性决策就是最大化某种效用度量,并且是一个接一个地做下去。
这套框架能覆盖多宽?Levine 说几乎任何我们希望机器做的事都能表达成决策问题。图像分类是一个决策问题,只不过不是序列决策;控制化工厂是决策问题;决定 YouTube 上推荐哪个视频也是决策问题。
强化学习和监督学习的关系,在数学上说得很干脆:你完全可以把监督学习写成一个强化学习问题,把损失函数当成负的奖励。但监督学习有更强的假设,它假设有人真的告诉了你正确答案,假设数据是干净的。强化学习基本上是在放松这些假设。
不过他也提醒,这个视角在实践上没什么用。如果你手上确实是个监督学习问题,你该用监督学习的方法去解,因为那样更容易。
Lex 把差距摆了出来:监督学习已经在很多窄问题上干得很有效,强化学习更像 AI 的梦想,很吸引人,但影响面还没那么大。真正卡住的地方在哪?
Levine 说,一个还没解决的关键点是,强化学习算法能不能有效利用大量先验数据。
在很多我们想做理性决策的场景里,直接放一个到处乱试的策略去纯靠试错学习,是不太现实的。收集数据容易得多,比如你手上已经有一大堆积压的日志,是别的策略跑出来的。如果算法能从这些数据里学出一个像样的策略,再部署出去做点微调,那事情就好办多了。
问题在于,算法上很难做到这一点。
「一旦我们搞清楚怎么让强化学习从大数据集里有效地起步,应用会出现非常快的增长。」(Levine)
这就是离线强化学习(offline RL),也叫批量强化学习(batch RL)。Levine 说这几年这方面的研究很多,正在一步步逼近那个目标。
Lex 请他梳理一遍强化学习的方法分类。
Levine 的切入点是:强化学习在最根本的层面上,是学习能回答「如果……会怎样」的模型。如果采取这个我从没做过的动作,会发生什么?你从经验、从数据里学这件事,而且经常是在循环里学:建一个能回答反事实问题的模型,用它找出当前最好的动作,去试,看结果是否和预测一致。
不同方法就是做这件事的不同方式。基于模型的方法回答的是「会得到什么状态」,也就是做了这个动作世界会变成什么样。基于价值的方法回答的是「会得到什么价值」,也就是会得到多少效用。两者差别没那么大,都在回答同一类反事实问题。
麻烦在于,用今天的机器学习方法回答「如果……会怎样」非常难,因为它问的是没有发生过的事。如果只问发生过的事,你根本不需要学模型,重复上次奏效的做法就行了。
这也解释了为什么在线策略(on-policy)的过程虽然笨,却能工作:你问反事实问题,犯一些错误,真的去做那些错事,然后观察到反例,学会不再犯。
而如果你手上只有离线数据,想从里面合成出最好的策略,就必须真的去处理这些反事实的难题。
接着是几个基础概念。策略就是一个从世界观测映射到动作的模型或函数。状态是对世界当前配置的完整描述,观测是状态的一个快照、一个片段。在线策略和离线策略的区别在于数据怎么来的:从别人那儿来的数据,比如某个手工编程的系统早先跑出来的日志,叫离线数据;由你当前策略在环境里行动产生的数据,叫在线数据。在线数据对你更有用,因为如果当前策略做了坏决定,你会亲眼看到它坏。
但离线数据往往更容易拿到,因为它可能就是你手上所有的历史日志。
回到自动驾驶这种场景:路上已经有一大堆车,但它们不会享有按强化学习框架自由探索的奢侈。
为什么不能相信一个从没被问过的问题
离线强化学习最大的坑,Levine 讲得很直白。
你不能相信你的模型对任意动作给出的预测。如果数据集里从没出现过有人把车从路上打向人行道,那么当你问「如果我把车打向人行道会怎样」,你的价值函数或模型大概率会给一个错误答案。
要让它工作,你必须能判断某个动作的预测是否可信。他提到可以用分布估计、密度估计的方法:模型告诉你这个动作特别好,但这个动作跟我做过的任何动作都长得完全不一样,那它多半不靠谱。你可以在学习目标里加入正则项,让模型不要去回答自己没有能力回答的问题。
Lex 问突破口在哪,是数据集问题还是方法问题。
Levine 说离线强化学习现在主要是个算法问题,而这让他很兴奋,因为算法问题只需要一群聪明人凑在一起狠狠想,而数据问题或硬件问题需要实打实的工程投入。
他还指出,这些问题的内核和因果推断里的问题非常接近。你面对的是一个统计模型,它要对没见过的东西做预测。如果它泛化得好,预测就对;如果它抓住了虚假相关,泛化就会崩。你有一整套工具可用,可以找出哪些区域是可信的,也可以想办法让它泛化得更好,或者两者结合。
Lex 问:能不能混着来,比如九成五靠离线数据,然后用机器人出去试探一小下?
Levine 说这正是他在对话开头提的那座冰山。那 99% 的先验经验就是冰山,用来做离线强化学习。如果那种特定型号的门配那种特定的锁你从没开过,那就得上去摸两下,那 1% 用来搞定新任务。他说这套配方相当好用。
那么,强化学习里最美的想法是什么?Lex 自己承认这个问题有点浪漫。
Levine 的答案是:你可以在没有完整世界模型的情况下,获得一个近乎最优的控制器。
「这件事听起来像是废话,但你只要想一下试错学习就明白了。可从控制论的角度看它非常怪。经典做法是先写出方程,再在给定方程的条件下求解,找出性能最好的那个东西。强化学习理论给了我们一个数学上站得住的框架,去处理你根本不知道支配系统的方程是什么的情况。」(Levine)
深度为什么会起作用
深度强化学习就是把强化学习算法和高容量神经网络拼在一起。Levine 说,这个组合乍看有点随意,但它变得这么重要有具体原因。
强化学习面对的,是很多机器学习方法都遭遇过的一个问题的加剧版。
回到 2000 年代初或 90 年代末,那时很多机器学习方法有非常漂亮的数学性质,比如能化归成凸优化问题。但它们要求极其特殊的输入,要求有一种干净的表示,好比你那个多分类问题里的类别是线性可分的。这种表示叫特征。
很长一段时间里,监督学习领域的人为特征发愁,因为得有人把特征造出来。你不能把一张图直接塞进逻辑回归或者 SVM,得有人用写好的代码处理那张图。然后神经网络来了,它能自己学特征。于是学习可以直接作用在原始输入上,这对图像是好事,对其他还没人造出好特征的领域更是好事。
其中一个领域就是强化学习。因为强化学习里特征这件事,在没有神经网络的情况下极其晦涩。
「你很难想象,如果我下棋或者下围棋,能用来线性表示价值函数、甚至表示最优策略的特征到底是什么。我连从哪儿开始想都不知道。」(Levine)
人们试过各种办法,比如写下「马是不是在棋盘中央」这种专家棋手看的东西,然后列出一长串随手编出来的特征。这条路基本走不通。
象棋至少还有专家知道该看什么,机器人问题里连这个都没有。
那么这套表示能力的上限在哪?Levine 说这个问题不容易回答,因为当你想把系统推到极限时,先碰到的是别的瓶颈。
他举个例子:他没法让机器人学会在厨房洗碗,神经网络不够大只是表象;真正卡住的地方是,在真实世界里做试错学习、真的去收集那种大规模、高变化、高复杂度的数据时,你会撞上别的问题。
听起来最实际的一个是:把机器人放进你的厨房,让它试错学洗碗,它会把你的碗全打碎,然后就没碗可洗了。
你以为这是个工程细节,其实它背后有个很深的科学问题。换成一个人来做,人有常识。打碎一个碗,下一个就会小心一点。如果真的全打碎了,他会去买新的。这些都是我们学习过程里天然带上的脚手架:知道要多试几次,搞砸了会求助、会去翻资料。而这一切都在经典强化学习的问题表述之外。
还有一类同样重要但更隐形的脚手架:奖励函数从哪来。如果你要学倒一杯水,你怎么知道自己倒对了?这件事可能需要专门搭一整套计算机系统去判断,而这显得相当不优雅。
Levine 由此指向一个更尖锐的结论:这些问题暴露了问题表述本身的缺陷。
打碎盘子的问题
Lex 拿 AlphaZero 做了对比。在围棋里没有打碎的盘子,事情就是规模加算力,瓶颈是你愿意砸多少钱买计算,以及把算力扩起来有多难。
一到真实世界,盘子会碎,奖励函数要人写。那怎么办?
Levine 的回答是两条:更擅长复用数据,把冰山堆起来。期待一台机器孤立地、在真空里几分钟就掌握复杂任务,可能太乐观了。但它也不必如此。
「也许它真正需要的是拥有一段寿命,在这段时间里做很多事,而它做过的那些事,能让它更高效地做新事。」(Levine)
这类问题通常归在多任务学习或元学习的名下,但内核是同一个:用做别的事的经验,来学会如何快速高效地做新事。
Lex 把话题引到特斯拉 Autopilot。当时它正逼近一百万辆车的规模,其中 30% 到 40% 的时间在自动驾驶模式下运行,剩下的时间由人接管。这个场景里,出错的代价是人命。这些数据怎么用?
Levine 说,这类「系统要可靠、要知道自己能力边界在哪」的问题,和离线强化学习里的问题非常像。离线强化学习最大的麻烦,是你不知道什么时候该信任模型的预测;如果你在评估某种行为模式,而模型给不出准确预测,你就不该用它去改策略。
部署时是同一件事:我此刻该不该相信它。
「也许我们要做的就是把这一部分做得更好。这当然是个很深的研究问题,但很多人正在攻它,我对未来几年能有进展比较乐观。」(Levine)
仿真呢?Lex 问它是拐杖还是解药,是要想办法摆脱,还是要把仿真做得越来越真,让模型直接从仿真迁移到现实。
Levine 说仿真是当下非常实用的工具,能立刻让很多有用的东西跑起来。但长期看,机器必须能从真实数据里学,那是它们能持续变好的唯一途径。因为如果机器必须依赖仿真产生的数据,仿真本身最终就会变成瓶颈。
他把这条规则说得更一般:只要你的机器身上有任何一个由人搭出来的、不会随着数据自动改进的部件,它迟早会成为拖后腿的那个。全靠仿真,仿真就是瓶颈;全靠手工设计的控制器,控制器就是瓶颈。
「仿真很有用,很实用,但它取代不了利用真实经验的能力。」(Levine)
而且他强调,打碎盘子、奖励函数未知这些脚手架问题,在纯仿真环境里是永远碰不到的,只有在真实世界里跑才会暴露出来。
Lex 顺手扔了个球迷问题:我们是不是活在仿真里?
Levine 说他完全不知道。但他觉得仿真假说有意思的地方在于,它本质上是个很实际的工程问题:要造一个虚拟现实,逼真到人类不想离开,需要多久?
「我个人很喜欢虚拟现实,但它离那个程度还很远。可这个问题很干净,因为一旦我想花更多时间待在虚拟现实里而不是真实世界,那就意味着再过几年,大部分人都会住在虚拟现实里。仿真就是这么来的。你不需要真的去模拟量子引力,不需要模拟宇宙的每个细节。」(Levine)
他还把这个想法转回了强化学习:如果我们能造出足够真实、足够丰富的仿真,那条真假之间的界线就会模糊,前面说的那些问题也就跟着淡了。
不过他注意到了另一层:这种想法的推论有点怪。它等于说,造一个宇宙比造一个大脑更容易。
Lex 提出了他觉得更麻烦的那部分:仿真其他人类。人一进场景,机器人问题的复杂度立刻上一个台阶。Levine 承认这是个复杂的问题。
他说自己一段时间以来的希望是:如果造出那种多任务、利用大量先验数据、又能从自身经验里学的机器人系统,那么「和人打交道」这一块,也许能被当作和其他所有事一样的东西来处理。只要它有和人打交道的先验经验,又能从新任务里自己学,可能就够了。
如果不够,还有很多别的办法,这方面的研究也不少。但他觉得值得先试一把:理解「世界上别的存在有自己的目标、意图和想法」这件事,能不能从单纯学着做事、最大化效用的过程里自动涌现出来。
重力能不能从数据里学出来
Lex 提到 Levine 说过的一句话:不必把重力显式注入系统,它可以被学出来。
他追问:数据的边界在哪?你真的相信光靠数据就能学出万有引力定律?
Levine 说,谈到先验知识时最常见的思维陷阱,是以为只要我们知道某件事,就一定要告诉机器,让机器自己去发现是浪费。
「很多影响大量事件的重要因素,其实相当容易学。比如每次你松手东西都会掉下去,你学到的也许不是爱因斯坦版本,只是牛顿版本,但它挺好用,足够让你在这个世界里理性行动,因为你天天看到这个现象。所以那些在数据里显而易见的东西,我们不必手写进去,让机器自己发现反而更省事。」(Levine)
Lex 接着说,可这个世界里可能有很多局部的理论极小值,机器会掉进去出不来。
Levine 说这个担忧有道理,然后给出了一个很有分量的类比。在有些科学领域,人类文明本身就被困在这样的局部最优里。人们试图理解生物学和医学时,那些在日常生活里非常好用的原则,在理解医学时反而害了人。在现代科学方法出现以前,我们对身体运作的理解充满了迷信和古怪的想法。
所以这确实是一种失败。但他说,某种意义上这也是人类智能的失败。
顺着自我博弈的线索,Lex 问:AlphaZero 里那种自我提升的机制如此强大,能不能推广到机器人、推广到真实世界?
Levine 判断,推广的瓶颈和别处是同一个:你得先能造出通过与世界自然互动而持续变好的机器。一旦能做到,它们就可以出去和同伴玩、和人玩、和自然环境玩。在那之前,还有一堆别的问题要清掉,绕不过去。
他还指出自我博弈在棋盘上奏效的原因。棋盘游戏的规则充当了两个智能体互动之间的中介机制。涌现出什么样的智能行为,极其依赖于那个中介机制的性质。
聊到奖励函数时,Levine 承认经典强化学习把它当成一个不用管的外来物,奖励是从别处来的,你不去操心它。他认为这有点错误。
可以换个角度看奖励:把它当成一种沟通媒介,人怎么向机器人传达目标?也可以把它当成内在动机的媒介,问一个一般性的目标能不能本身就带来好的能力。
这块研究有时被叫做无监督强化学习。他们团队做的一些工作用的是信息论的量,比如最小化贝叶斯意义上的意外程度。这个思路最早由计算神经科学圈子的 Karl Friston(卡尔·弗里斯顿)等人提出。
他们的实验显示,只要行为方式让自己能对世界做出准确预测,就能学出相当有意思的技能。听起来有点循环,但这么做能让你发现世界里稳定的生态位。比如在俄罗斯方块里,正确地消掉一行能让你玩得更久,让棋盘保持整洁,这满足了某种对秩序的偏好,于是你在这个领域里获得了某种控制力。
那好奇心本身能不能当奖励?
Levine 说他更感兴趣的是另一个方向:发现新事物能不能是某个其他目标的涌现属性。为了新而新,未必是正确答案,但也许可以设计一个目标函数,让发现新事物成为它的自然结果。他说这是正在进行的工作,还没有清晰的答案。
关于意外后果,他给出了一个现在就能用的技术手段:定义目标时加一条「别做怪事」,可以量化成不要进入先验状态分布里概率极低的情境。他说这其实也是离线强化学习的一个好办法。只要你慢慢地、一点点地往外走。
他更担心的那种失败
Lex 提到了 Stuart Russell 关心的 AI 对齐问题:怎么保证 AI 系统的成功和人类整体的、更广泛的利益一致。
Levine 说自己没有好答案,但这个问题确实重要。然后他给了一个和主流叙事方向相反的判断。
比起目标被优化得太好带来的意外后果,他现在更担心目标被优化得不够好带来的后果。当这些技术被用到汽车、飞机这类安全攸关的系统上时,这会变成一个很紧迫的问题。他说总有一天我们会面对「目标被优化得太好」的问题,但现在更可能遇到的是「优化得还不够好」。
Lex 追问:就算离最优很远,在通往最优的路上,也可能出现意外后果吧?
Levine 承认意外后果当然会出现。他的意思是,眼下制约可靠性、安全性的瓶颈,在于系统需要工作得更好、把目标优化得更好。
至于人类水平智能的存亡威胁,他说强大技术当然都有存亡风险,这些风险会以很多形式出现:有恶意的人、有致命缺陷的系统、能力过强的系统。
但在这几种里,他此刻更担心前两种,尤其是恶意的人。
「纵观整个人类历史,制造麻烦的一直是有恶意的人。机器还没轮上。」(Levine)
他说自己现在能做的最好的事,是把技术做到最好,同时尽量推动这项技术被负责任地使用。
Lex 问,这些系统有没有什么能教给人类的?机器学习已经暴露了我们数据里的伦理缺陷,强化学习有没有教给我们关于自己的东西?
Levine 说自己不太确定学到了什么关于自己的东西。也许答案要等强化学习在医疗、教育、社交媒体这些领域被更广泛地用于决策支持之后才会浮现。到那时我们会看到,当系统与人有互动、有机会影响人的行为时,它会表现出什么。他说现在还不到时候,但接下来几年应该会有有意思的东西出来。
Lex 补了一句期望:这个观察窗口很可能在那些握着大数据的大公司手里,他希望有足够的透明度,让人们至少能知道某个结果背后有没有算法、算法为什么这么做。
苦涩的教训,和他自己的版本
Lex 提到 Rich Sutton 那篇《苦涩的教训》(The Bitter Lesson):AI 研究的大教训是,简单、通用、能利用算力的方法最终会赢。是不是说别搞花哨算法,等着算力变快就行?
Levine 说大方向他同意,但他的结论不一样:该做的是通用算法。
「如果结论是『通用自动化的方法加数据就能得到好结果』,那么合乎逻辑的推论就是,我们应该造通用的方法,并且把这些方法部署出去,让它们自己去收集经验。」(Levine)
他说目前的状态离这个结论还有距离,差距恰恰在于「让它们自己去收集经验」这一步。在仿真和棋盘游戏里这很容易,在真实世界里非常难。
Lex 说这个问题在对话里反复出现,Levine 的注意力显然锁在这里。真实世界里收集数据这一步,看起来既吓人,路径也不清楚。
Levine 的回应很轻:世界上有七十亿人,每个人一生中都得在某刻学会做这些事。那些经验就摆在那儿,我们应该能想办法把它收集起来。
他在研究生阶段才决定做 AI
关于影响他的书,Levine 说他的诚实答案是艾萨克·阿西莫夫(Isaac Asimov)的作品,他年轻时读得很受启发。他说不清具体影响在哪,但那是一个人工智能和机器人系统在社会里占据重要位置的未来图景,是人类试图去想象技术进步的极限形态会怎样写进我们的历史。他推荐大家去读,至少读起来很享受。
至于什么时候爱上这个领域,他的答案很晚,晚到研究生阶段。大约在 2009 到 2010 年之前,这件事都不在他的优先列表上,因为他当时不认为在自己有生之年能看到实质性的进展。
转折发生在他上了一门研讨课,授课的是 Pieter Abbeel(彼得·阿贝尔)教授。
他在开课的讲座上说了一件让他至今记得的话:以前常有研究生跑来找他,说想研究 AI,他会笑一笑,然后给他们一道数学题去做。但现在他真的开始觉得,这个领域在我们有生之年可能出现实质性进展。
「一个在这个方向上做了一辈子的人,突然这么说,那是有分量的。在某种程度上,这也许就是这个领域历史上的特殊时刻。」(Levine)
给想入门机器学习或强化学习的年轻人,他的建议是:不要害怕花时间去设想你希望看到的结果。
成功的事业、丰厚的薪水、某个基准上的最先进结果,这些都可以是结果,但他希望那不是主要的驱动力。他建议学生坐下来想一想:我到底想看到机器做什么?想看到机器人做什么?想看到一个自然语言系统做什么?把它当成一个未来产品的广告,一个你真的希望它在世界上存在的东西。
然后从那个画面往回推,想清楚需要哪些步骤。
「你希望看到的那件事,应该是一件我们真的能做、做出来会很酷的东西。可能是一台机器人管家,可能是一个特别棒的医疗决策支持系统,随便什么让你受到启发的东西。图像分类榜单上一个更好的数字,恐怕撑不起这个角色。这样想、然后往回推、去设想需要哪些步骤,会带来好得多的研究。它会让你重新审视那些假设,去攻那些别人没在攻的瓶颈。」(Levine)
他想造出一台跑到宇宙复杂度天花板上的机器
Lex 最后问了那个问题:什么给了你满足感、目的和意义?你自己的奖励函数是什么?
Levine 说,给他满足感的是一种确信:我正在处理一个真正重要的问题。他说把事情真的解决掉对自己来说反而没那么重要,重要的是把时间花在他相信真正重要的事情上,而且他为此相当努力地去挑选。
至于梦想长什么样,他给了一个具体的答案。
「我想看到机器活得越久就变得越好。表面上看,人们可能会觉得我们今天已经有了这样的机器,但我觉得并没有。宇宙的复杂度是无止境的,而到今天为止,我们造出的所有机器都没能一直提升到那种复杂度的极限。它们总会在某个地方撞墙。可能因为它们在仿真里,而那个仿真只是真实世界一个苍白得可怜的模仿;也可能因为它们依赖标注数据集。它们从来没有撞上过『能看的东西都看完了』这堵墙。所以我想造一台机器,让它尽可能地往前走,走到宇宙复杂度的天花板上去。」(Levine)
这段对话发生在 2020 年。今天回头看,他当时描述的几件事都成了这个领域的主线:离线的、可复用的先验数据,机器自己出去收集经验的闭环,以及「知道自己什么时候不可信」这个能力。
那台还在温室里遥控着收拾客厅、端啤酒的机器人,和这台被寄望跑到宇宙复杂度天花板上的机器之间,隔着的是整整一座常识的冰山。Levine 的判断是,这座冰山没法从外部灌进去,只能靠一台机器在一个真实的宇宙里,活得足够久,摔得足够多,一点一点长出来。
- 把「数据从哪来」当成第一性问题。无论是做研究还是做产品,先问清楚你的经验来自真实互动、别人的日志,还是仿真。这个来源决定了系统的上限,也决定了它最终会在哪里撞墙。
- 给系统加一个「我不知道」的输出。离线数据和自动驾驶共享同一个核心难题:判断某个预测是否可信。用密度估计或分布外检测把这件事做成显式模块,比事后解释划算得多。
- 少用纯仿真跑闭环,多用它做冷启动。仿真是很好的起点,但只要它不随数据改进,它迟早成为瓶颈。把真实数据回流当成必选项来设计,别把它当成可选项。
- 验证比解释更值得投入。与其追求让模型讲出漂亮的故事,不如把可解释性接到验证与确认上:它错了的时候,你能不能查出来为什么。
- 别在手写特征和手写奖励上过度投资。数据里显而易见的东西,让模型自己发现往往更省事。你的精力应该花在那些数据里看不出来的东西上,以及那些会卡住整个循环的脚手架上。
- 如果你在做长期研究,先设想终点再倒推。把你想看到的那台机器当成一个真实存在的产品来构想,然后倒推需要哪些步骤。这个习惯能让你避开热门基准上的小改进,找到别人没在攻的瓶颈。
本集资源与出处
- 视频在 YouTube 收看
- 音频官方 MP3 直链来自 lexfridman.com 官方播客 RSS
- 官网Lex Fridman 官网本集页面
- 文稿HappyScribe 版文稿