- 原文地址:The limitations of deep learning
- 原文做者:Francois Chollet
- 译文出自:掘金翻译计划
- 本文永久连接:github.com/xitu/gold-m…
- 译者:CACppuccino
- 校对者:whatbeg lileizhenshuai
这篇文章清晰地展示了深度学习自己真正的意义,让咱们更透彻地了解它的同时,也明白了它的局限之处,距离着人类层次的 AI 还有着太长的路要走。在文章的最后一部分,做者更是表达出了本身对于将来的 AI 之路的思考与展望。html
这篇文章修改自个人书《Deep Learning with Python (manning出版社)》的第九章第二部分。这是关于当前的深度学习的局限性与将来展望的两篇系列文章之一。前端
这篇文章的目标受众是那些已经在深度学习领域有着必定的经验(例如,那些已经读完 1-8 章的人们)。咱们默认你已经知道了不少前置的知识。 python
译者注:阅读此文章无需特别丰富的经验,实际上只要知道深度学习的大概运行模式便可react
深度学习最使人惊讶的地方在于它的简单程度。十年以前,没有人会想到咱们可以只是运用梯度降低算法训练简单的参数模型,就能在机器感知方面取得如此巨大的成果。如今来看,你只须要经过梯度降低方法,用 足够多 的样例去训练一个参数 足够多 的参数模型(就能够取得你想要的结果了)。就如 Feynman 曾经对宇宙的描述同样,“它并不是复杂,只是数量巨大”android
在深度学习中,全部东西都是一个向量,换言之,全部东西都是几何空间中的一个点。输入的模型(能够是文本,图像等等)和目标都会首先被“向量化”,也就是说,转化为初始的输入向量空间和目标向量空间。深度学习模型的每一层都对经过的数据,进行着一次简单的几何变换。而合并在一块儿,链在一块儿的各层模型造成了一个很是复杂的几何变换,分解成单一的以后又变的很是简单。这个复杂的变换试图将输入映射到输出,每次处理一个点。这个变换被各神经层的权重参数化,而权重则在每次迭代时基于当前模型的运行情况进行更新。这个几何变换的关键特征就是,它必须可导(可微),这样咱们才可以经过梯度降低算法学习它的参数。直观地看,这意味着从输入到输出的几何变换必须是平稳且连续的 —— 这是一个重要的限制条件。ios
对于输入的复杂几何变换过程,能够在 3D 下画出一我的,在尝试平整一张卷成球的纸,来达到视觉化的目的:皱起来的纸球表明着模型中的输入副本。每次人对纸的动做都与每次单个神经层的简单几何变换类似。这样看,平整纸球的一套动做就是整个模型的几何变换,而当这些动做(几何变换)连在一块儿时,看起来会很是复杂。深度学习模型其实是一个数学机器,将多种高维数据平整化。git
这就是深度学习的神奇之处:将“意义”转变为向量到几何空间中,并逐渐地学习复杂的几何变换,将一个空间映射到另外一个。你只须要有足够维度的空间,来获取原始数据中的全部存在的关系。github
咱们能够将这个简单的策略应用到各个领域。不过,也有不少领域不在当前深度学习所能达到的范围,即便给它大量的人工注释过的数据。例如,你能够对一个软件的特征进行成百上千次不一样的描述,像一个项目经理那样写,同时包含相对应的一组软件工程师开发出来的源代码来知足这些需求。即便有了这些数据,你也不能训练出一个深度学习模型来简单地阅读产品描述并生成一个正确的代码库。而这只是众多例子中的一个。整体上来说,任何须要推理类的编程,科学的长时期规划,算法类的数据操做都处在深度学习模型以外,不论你给予模型多少数据都没用。即便让深度神经网络学习一个排序算法也是很是困难的。算法
这是由于一个深度学习模型“只是”一系列简单、连续的几何变换,将一个几何空间映射到另外一个。假设 X 到 Y 存在着一个可学习的连续变换,同时有足够密集的 X:Y 的训练数据做为样例,它所能作的一切就是将数据副本 X 映射到另外一个副本 Y。因此尽管一个深度学习模型能够被看做是一种程序,反过来大部分程序并不能表示成深度学习模型 —— 对于大多数任务,要么实际上不存在相关的深度学习模型来解决这种任务,或者即便这里存在一个,可能也是不可学习的,也就是说,相关的几何变换可能过于复杂,或者这里可能没有合适的数据来进行学习。编程
经过增长更多的神经层和使用更多的训练数据,来扩大当前的深度神经网络的规模,只能在一些问题中取得必定的进步。这种方法并不可以解决更多的基础性问题,那些问题在深度学习模型的能力以外,它们没法被表示,而且惟一的学习途径又不可以被表示对一个数据副本的连续几何变换。
一个目前 AI 领域很是现实的问题,就是错误地阐释深度学习模型的职能,并高估了它们的能力。人类意识的一个基本特征就是“理论思惟”,咱们倾向于将意图、信仰和知识投影在咱们周围的东西上。在一个石头上画一个笑脸能让它“快乐”起来 —— 在咱们的意识中。应用在深度学习中,这意味着当咱们可以成功地训练出一个能够添加标题描述图像的模型时,咱们会相信那个模型理解了图片的内容,同时也理解所生成的标题。接着,咱们会对模型由于任何轻微的异常于训练数据的图片而生成的荒谬的标题感到惊讶。
特别地,这个是被强调的“对抗样例”,是被设计用于欺骗模型使它错误归类的。你已经注意到了,对输入空间扩充来产生可以最大化一些卷积网络滤波器(convnet filter)的输入,例如 —— 这是咱们在第五章中介绍的滤波器可视化技术的基础(注:在 Deep Learning with Python中),还有第八章的 Deep Dream 算法。类似地,经过梯度增长,模型能够经过轻微地修改一幅照片来最大化给定的种类的预测空间。经过给熊猫照一张照片,并给它加入“长臂猿”的梯度,咱们能够获得一个将这只熊猫归为长臂猿的神经网络。这证实了这些模型的脆弱之处,以及它们所进行的输入输出映射与人类意识的巨大不一样。
简而言之,深度学习模型一点也不理解它们的输入,至少从人类的角度来看(人类的理解)。咱们对于图像、声音和语言的理解是基于咱们人类的感受——这是体如今全地球的生物身上的。机器学习模型是没有这方面的经验的,也所以没法以人类的方法“理解”它们获得的输入。经过标注大量的训练样例并代入训练模型,咱们使得它们可以学习到几何变换,从而将这一集合中的例子映射到人类的概念之中,不过这个映射只是咱们的意识中最简单最原始的草图,是从咱们经验中的体现 —— 就如镜子中的黯淡影像通常。
做为一个机器学习的实践者,老是要注意这个,并且永远不要陷入陷阱,相信神经网络懂得它们所处理的任务 —— 它们并不懂,至少不是像咱们同样理解。它们所被训练于的任务,范围远远窄于咱们所但愿真正教给它们的东西:仅仅是将训练的目标与输入映射,点对点。若是给它们展现任何偏离它们的训练数据集的东西,它们就会以极为荒谬的方式“坏掉”。
看起来,深度学习模型的将输入经过几何变换获得输出的过程与人类的思考学习有着根本上的区别。不只仅是人们经过自身的经验而不是清晰的训练样例来学习。除了不一样的学习过程,二者根本性差别还在于底层表示的本质不一样。
人类不止于可以针对刺激当即产生回应,就像深度神经网络或者一个昆虫会作的那样。它们针对着本身目前的状态,它们本身,其余的人,维护着复杂而抽象的模型,而且可以运用这些模型来预测可能的将来状况,进而有一个长期规划。它们有能力将所知的概念整合去表述一些它们从未见过的东西 —— 好比画一个穿牛仔裤的马,或者想象若是他们赢了彩票他们会干什么。这种可以处理假象,将咱们的思惟模型空间扩展至咱们可以直接经历的以外的能力,能够说是定义人类认知的特征。我管它叫作“极端泛化”:一种从未经历过某些状况,但可以运用很是少许的数据甚至没有新的数据,来适应新事物的能力。
这与深度神经网络所作的事情彻底相反,我叫它“局部泛化”:神经网络将输入输出映射的过程若遇到了偏离以前训练集的内容,即便差异不大,也会出现问题。考虑一下这个例子,学习可以使火箭在月球着陆的参数。若是你使用深度神经网络来解决这个任务,无论使用监督学习仍是增强学习,你须要给予模型成千上万次的发射试验数据,也就是说,你须要将它暴露给密集采样的输入空间,来习得一个可靠的输入到输出空间的映射。偏偏相反的是,人类能够用他们抽象的能力创建物理模型——航空科学——并仅仅经过不多的试验得出一个能使火箭安全到达月球的解决方案。类似地,若是你想开发出一个深度网络来控制人的身体,并但愿可以学会如何在一个城市中安全地行走而不被车撞倒,神经网络则会须要死亡成千上百次才能识别出车辆和危险,并生成避开的动做。若被放到一个新的城市中,神经网络会须要从新学习大部分以前的东西。另外一方面,人类却不须要死亡一次就可以学习到安全的规避动做,这归功于他们可以在假象状况下抽象出模型的能力。
简而言之,尽管咱们有在机器感知方面的进步,咱们仍然离人类层次的 AI 有着很是远的距离:咱们的模型目前只可以进行局部泛化,适应于与过去数据很是相近的状况,而人类感知却具备极端泛化的能力,快速适应全新的情形,或者对将来的状况进行长期规划。
你应该记住:目前深度学习成功的地方只在于接受大量的人工注释的数据,经过连续的几何变换,将空间 X 映射到 空间 Y。这对于几乎全部的工业领域都是革命性的变化,但离人类层次的 AI 还有很长一段路要走。
要想移除一些限制并与人类的大脑相比,咱们须要将直接的输入输出映射去掉,改而关注于推理和抽象。一个可能的对不一样状况和概念进行抽象建模的基质是计算机程序。如咱们以前所说(在Deep Learning with Python中),机器学习模型能够被定义为“有学习能力的程序”;现在咱们只有很小的一部分程序具备学习能力(对于全部的计算机程序来讲)。但若是咱们以模块化和可重复化来学习任意的程序呢?让咱们在下一篇文章中看看将来的路多是什么样子。
个人第二篇在此:The future of deep learning(深度学习的将来)
做者:@fchollet, May 2017
掘金翻译计划 是一个翻译优质互联网技术文章的社区,文章来源为 掘金 上的英文分享文章。内容覆盖 Android、iOS、React、前端、后端、产品、设计 等领域,想要查看更多优质译文请持续关注 掘金翻译计划。