深度学习有很长的一段路要走!Keras作者谈机器学习的局限性

阅读原文请点击

摘要: 迄今为止,深度学习唯一真正的成功之处,是在给出了大量的人为标注数据之后,使用连续的几何变换将空间X映射到空间Y。 做好这一切,是每个行业游戏制定者必备的能力,但对于人类级别的AI,仍然有很长的路要走。

深度学习:几何视角

深度学习最令人惊讶的地方是它相当得简单。十年前,没有人会想到通过,使用梯度下降训练的参数模型能够让我们在机器感知方面得到如此惊人的成果。现在,事实证明,你唯一需要的,是使用足够多的实例来进行梯度下降训练,并获得足够大的参数模型。费曼曾经这么描述宇宙:“它并不复杂,只是包含了太多的东西”。

在深度学习中,一切都是向量,一切都是几何空间中的一个点。模型输入(它可以是文本,图像等等)和目标首先会被“向量化”,例如转换成某种初始输入向量空间和目标向量空间。深度学习模型中的每一层都对通过它的数据进行简单的几何变换。模型的多个层链接在一起形成非常复杂的几何变换,同时又可以分解成一系列简单的几何变换。这种复杂的转换会将输入空间映射到目标空间。该变换使用层的权重来进行参数化,这些层根据模型当前执行的程度进行迭代更新。这种几何变换的关键特征是它必须是可微分的,这是为了使我们能够通过梯度下降来学习其参数。这意味着从输入到输出的几何变换必须是平滑而连续的,这是一个显著的局限性。

将这种复杂的几何变换应用到输入数据的整个过程,可以想象成是一个试图将纸球弄平的人:皱巴巴的纸球是各种各种样的输入数据。而人抚平纸球的每个动作类似于每一层的简单几何变换。而抚平纸球的手势就是整个模型的复杂变换。深度学习模型是用于解决高维度数据复杂流形的数学机器。

这就是深度学习的魔力:将意念转化为向量,转化为几何空间,然后逐步学习将一个空间映射到另一个空间的复杂几何变换。

机器学习的局限性

通过这种简单策略实现的应用的空间几乎是无限的。然而,即使拥有大量人为标注的数据,目前还是有很多的应用是无法通过深度学习来实现的。比方说,你可以搜集成千上万条软件产品的功能列表,就像是由产品经理编写,并由一个软件开发团队来编写相应的代码那样。但是,即使有这些数据,你也无法训练出一个深度学习模型来阅读产品描述并生成相应的代码。一般来说,任何需要推理编程、或应用科学方法的长期规划,以及像数据操作这样的算法,都无法用深度学习模型来实现。即使是学习深度神经网络的排序算法也是非常困难的。

这是因为深度学习模型只是“简单的”连续将一个向量空间映射到另一个向量空间的几何变换链。假设存在从X到Y的可学习的连续变换,则它的唯一功能就是把X:Y的密集采样的可用性作为训练数据,将一个数据流行X映射到另一个流行Y。所以,深度学习模型可以解释为一种程序,但反回来,大多数程序都不能表示为深度学习模型。对于大多数任务来说,要么不存在相应大小的深度神经网络可以解决此任务,要么即使是存在,也是不可学习的。例如,相应的几何变换可能太复杂,或者可能没有可用的数据来学习。通过堆叠更多层次和使用更多的训练数据来扩展当前的深度学习技术,只能在表面上缓解一些问题。而且,深度学习模型可以表示的方面非常有限,大多数希望学习的程序也不能被表达为数据流连续的几何变换,这些问题并不能从根本上得到解决。

拟人机器学习模型的风险

当代人工智能存在一个非常现实的风险,那就是高估了深度学习模型的能力,不知道这个技术能做些什么。人类思想的一个根本特征是“思想理论”,我们倾向于把意图、信念和知识延伸到周围的事物上。在石头上画一个笑脸,则会在我们的思维里出现“开心”二字。如果把这种思想应用到深度学习上,就意味着,当我们成功地训练出一个能够为图片生成描述性文字的模型时,就会认为该模型“理解”了图片,并生成描述性文字。但是,当训练数据中的图像产生轻微偏离时,就可能会导致模型生成非常荒谬的文字。

 

Failure of a deep learning-based image captioning system.

“对抗性的例子”使得这个风险尤为突出,那就是向深度学习网络输入特殊的样本,试图欺骗模型产生错误的分类。你应该已经意识到,可以在输入空间中执行梯形上升,以生成最大限度地激活某些ConvNet过滤器的输入。类似地,通过梯度上升,可以稍微修改一个图像,以使给定类的类预测最大化。通过拍摄一只熊猫,并添加一个“长臂猿”梯度,我们可以得到一个将这只熊猫分类为长臂猿的神经网络。这证明了这些模型的脆弱性,以及输入输出映射和我们人类感知之间的深层差异。

 

An adversarial example: imperceptible changes in an image can upend a model's classification of the image.

简而言之,深度学习模型对输入的内容并不理解,至少不是以人类的方式去理解。我们对图像、声音和语言的理解,植根于我们作为实体人类的感官体验之中。机器学习模型无法获得这种经验,因此不能以人类的方式去“理解”他们的输入。

 

Current machine learning models: like a dim image in a mirror.

作为一名机器学习从业者,始终要注意这一点,不要错误地认为神经网络理解他们所执行的任务。他们接受的训练比我们想要教他们的并不完全相同:仅仅是一个点一个点的从训练输入到训练目标进行映射。在训练数据中添加一些特殊的内容,可能会让模型产生荒谬的结果。

局部泛化与极端泛化

深度学习模型在输入与输出之间所做的几何变换,与人类思考学习的方式之间似乎存在着本质的区别。人类在亲身体验中学习,而不是在训练中学习。除了学习过程不同之外,潜在的表现性质也存在着本质区别。

人类的能力并不只是将即时刺激映射成即时反应,就像深度网络或者昆虫那样。他们对自己及他人
目前的状况维持着一种复杂并且抽象的模型,使用这些模型可以预测未来,并进行长远规划。他们有能力将已知概念融合在一起,来表示出以前从未经历过的事情,比如说穿牛仔裤的马,或者想象自己中了彩票之后会做什么。这种处理假设、扩展心智模型空间的能力远远超出了我们直接能够感受到的。简单地说,进行抽象和推理是人类认知的特点。我称之为“极端泛化”:几乎不使用或者根本不使用新数据,就能适应新奇的或者从未经历过的新情况的能力。

这与深度网络形成了鲜明的对比,我称之为“局部泛化”:如果新的输入与在训练时间内看到的东西差异非常小,则从深度网络输入到输出的映射就会快速停止。例如,对于通过学习适当的发射参数来让火箭登陆月球这个问题。如果你使用深度网络来实现这个任务,无论是使用监督学习还是强化学习进行训练,都需要成千上万次的启动试验。相比之下,人类可以利用自己的抽象力来提出物理模型(火箭科学),并得出一个精确的解决方案,只需一次或几次试验即可让火箭飞到月球上。
同样的,如果你开发出一个控制人体的深度网络,并希望它学会驾驶一辆车安全地穿过一座城市,并且不与其他车辆相撞,那么这个网络需要在各种情况下让人死掉数千次,直到可以推断出车和危险,并制定适当的避让行为。如果放到另一个城市,则网络必须重新学习大部分的知识。而另一方面,人类无需一而再再而三的死亡就能够学会安全驾驶,这归功于人类假设场景的抽象建模能力。

 

Local generalization vs. extreme generalization.

简而言之,尽管我们在机器感知方面取得了进步,但我们离人类级别的AI还很远:我们的模型只能执行局部泛化,适应与过去数据非常接近的新情况。而人类认知能够极端泛化,迅速适应各种新的情况。

结论

迄今为止,深度学习唯一真正的成功之处,是在给出了大量的人为标注数据之后,使用连续的几何变换将空间X映射到空间Y。 做好这一切,是每个行业游戏制定者必备的能力,但对于人类级别的AI,仍然有很长的路要走。

阅读原文请点击

猜你喜欢

转载自1369049491.iteye.com/blog/2385039