如何让AI学习常识 未来又在何方
- 来源:中国信息化周报 smarty:if $article.tag?>
- 关键字: smarty:/if?>
- 发布时间:2018-06-07 10:16
我们看一下今天的AI系统,如今所有的应用,不管是影像、声音或者是图像的识别,或者语言间的翻译等,这些内容AI都需要通过监督学习来获得。比如说向它展示一些车的图像,告诉它这些都是车,下次再向机器展示车的图像,它就会告诉你答案是车。所以你可以看到,监督学习,对于计算机的学习非常重要。
我们现在有监督学习,或者说深度有监督学习,就是组合起来一些可以训练的模块,形成端到端的一个学习过程,一端是原始的输入,另一端就可以得到结果。通过这种方式,计算机会更好地了解我们的世界。
我们知道神经网络是非常庞大且复杂的,只有在算力很强的计算机上才可以运用。在深度学习变得普遍之前,我们需要确保机器学习的系统可以顺利应用。
比如说我们在2009年、2010年纽约大学的一个合作项目中,即利用ConvNets进行语义分割。我们可以看到,它能识别图像,能把马路上的建筑、天空以及路上的车和人等等在像素级别上分开。当时的识别技术还算不上非常完美。
但在几年后,我们可以看到有一些公司利用上述技术做了一些工作,系统可以识别出道路上的车辆和行人,这也是实现智能驾驶的重要组成部分。随着深度学习的发展、网络的深度越来越深,越来越多的人相信深度学习是可以奏效的。
随着网络深度的不断增加,识别ImageNet图像的错误率也在不断下降,现在已经表现得比人还要好。在ImageNet上的表现已经太好了,以至我们现在都已经不再把它作为首选的评价标准了。我们现在也在研究更复杂的问题,不只是识别图像,还要能够进行本地化处理。
Mask R-CNN是我们在Facebook人工智能研究院所做的研究,可以看到它的表现非常好,不仅仅可以识别出对应的物体是什么,还可以对图像进行精细的分割。只是部分可见的东西都可以分得清。
可微分编程:深度学习与推理的联姻
我们再来看一下可微分编程。
实际上我们可以从另外一个角度来理解深度学习。深度学习并不是一定需要构建一个固定架构的神经网络然后训练,它也可以是写程序代码,但程序代码可以被解释为神经网络。这样的程序里会带有一些参数,然后可以通过训练来优化这些参数,这些参数的最终取值也就取决于训练数据。当然我们也需要写第二个程序,计算输入关于参数的导数的梯度,就可以往正确的方式调整这些参数的值了,这样动态改变了最终网络的结构,它也就可以适应不同的任务。这就是可微分编程。
这是几年前所开展的一项典型工作,用记忆模块增强神经网络,网络的结构也就是动态的。这样的做法也会影响未来用什么样的工具开发神经网络。
这是另外一个关于动态计算的例子。如果你要建立一个系统能够回答复杂问题的话,比如在一副图中,红色的立方体,是不是要比别的大一些?或者立方体有没有比某个颜色的东西更多?这是几年前Facebook和斯坦福大学合作的研究,它的关键思想是,通过循环神经网络LSTM输入问题,问题会被编码成向量的形式,然后向量再被另一个网络解码,解码后的结果像是一种程序,程序解释后的结果是几个模块连接形成的计算图。这样最终就解答了这个问题。
比如对于问题“立方体有没有比黄色的东西更多”,我们首先需要一个立方体的检测器,然后需要检测黄色东西的检测器,分别数出来都有多少,最后对比两个数字得到了结果。动态计算就可以端到端地训练出执行这样任务的程序。决定它的组成结构的也就是用来训练它的数据。
刚才看到的都是一些已经做到的深度学习成就,那么我们还需要看一下,距离达成“真正的AI”我们还缺了什么。现在我们已经可以构建出更安全的车辆或者说自动驾驶车辆,我们有更好的医学影像分析、还不错的翻译软件、差不多能用的聊天机器人。但我们还做不出来有“常识”的机器人、做不出真正有智慧的个人助理、做不出可以替代洗碗机的管家机器人。我们缺了一些重要的东西。
强化学习是缺的那块拼图吗?
有的人会说,答案就是强化学习。强化学习当然也很有力,但是它只能在游戏的、虚拟的环境里发挥。所以强化学习并不适合解决现实生活中的问题。
机器需要学习常识
我们想想婴儿是怎么学习的?比如我们给婴儿看一张图,那个小车漂浮在空中,虽然下面没有任何支撑,但是并没有掉下来。不到6个月大的婴儿看到这张图片并不会觉得惊讶,但是更大的婴儿已经知道了没有东西支撑的话是会掉下来的,看到这张图片就会很惊讶。这是他们在生命的最初几个月学到的一些概念,也就假说认为这就是“常识”萌芽的时期。
动物也有一定程度的常识,比如这只幼年的猩猩。我们给它变了个魔术,在杯子里放了东西然后把它变没了。猩猩本来期待着东西还在里面的,当它看到东西不见了的时候就笑得躺在地上了。这只猩猩就对这个世界有着较为准确的认知模型。
那么我们需要做的,也就是让机器具备对这个世界的模型,我把这个称作“自我监督学习”或者“预测学习”。机器要尝试预测自己看到的东西的各个方面,这也可能就是能让机器像人类一样高效地学习的关键。
这种学习主要靠观察,没有监督,和世界只有很少的互动;它们除了接收,还要可以规划和行动。这正是构建自动化机器的关键。
所以不管下次的变革在哪里,我觉得都不会是监督学习,当然也不会是纯强化学习。它应该会有某种自我监督或无监督学习。而且也会在这样的变革当中出现一些常识性的学习。
我总结一下,这也就是我们近期在Facebook做的预测学习如何预测、推理以及计划,也就是学习“常识”。它的核心思想是,自动的智能机器人应当有一个内部的世界模型,可以在它做出行动之前自己进行模拟,预知自己的动作的结果。这是一种最优控制中常见的方法,但在机器学习中就不那么常见了。这里我们遇到的问题也就是如何让人工智能学会对世界建模,从而用这个模型帮助自己规划现实世界中的行为。
预测的时候还需要处理不确定性,在桌子上立一支笔,然后松手,它就会倒下来。我们只确定它会倒下来,但是不确定具体会倒向哪个方向。这种时候我们也就需要对抗性训练,训练模型不只给出一个答案,而是多个可能的答案。这里需要两个模型,一个模型做预测,另一个模型来评判哪些结果还不错、哪些结果是现实世界不太可能发生的。
所以,对抗性训练也就是我们希望可以帮助建立预测机器的方法。预测应当是智慧的核心,我相信能训练出具有预测能力的模型也就能在未来几年中为我们带来大的进步。
关于AI 未来发展的预测
对于AI学术研究的趋势,监督学习和强化学习即便不会被取代,也会被自我监督学习和无监督学习明显地增强;学习具有预测能力的模型也会成为未来几年内的研究热点,这能让我们从无模型的强化学习来到基于模型的强化学习以及模仿学习,它们的效率都会提升很多,所需的尝试次数也会少很多。
另一件事是,让模型具有推理的能力,但同时还和深度学习是兼容的。就是让深度学习方法可以做符号表示方法可以做的事情,把符号换成了向量,把逻辑变成了可微分的程序操作。目前的固定结构的网络会变成动态的、由数据决定的网络结构。这也会需要在计算方法方面有新的探索,从而成为系统性的问题。深度学习本身我认为也会有一些进化,它们操作的不再是数值或者高维向量,而是操作图结构之类的复杂数据结构,更多的深度学习理论也可能会出现。
(本文根据YannLeCun的公开演讲整理而成,未经本人确认。)
■Facebook首席AI科学家 Yann LeCun