在深度学习中,一切都是一个向量,即一切都是几何空间中的一个点。模型输入(它可以是文本、图像等)和目标首先被“向量化”,即变成一些初始输入向量空间和目标向量空间。深度学习模型中的每个层都对通过它的数据进行一个简单的几何变换。同时,模型的层链形成一个非常复杂的几何变换,分解成一系列简单的几何变换。这种复杂的转换尝试将输入空间映射到目标空间,一次一个点。该变换由层的权重进行参数化,这些层根据模型当前执行的程度进行迭代更新。这种几何变换的一个关键特征是,它必须是可微分的,这是为了使我们能够通过梯度下降,这是学习其参数所必需的。直观地讲,这意味着从输入到输出的几何变形必须是平滑和连续的——这是一个重要的约束。
深度学习模型是用于解决高维数据的复杂流形的数学机器。
深度学习的魔力:将意图转化为向量,转化为几何空间,然后逐步学习将一个空间映射到另一个空间的复杂几何变换。所有你需要的是,具有足够高维度的空间,以便捕获在原始数据中找到的关系的全部范围。
一般来说,无论你投入多少数据,--只要是任何需要推理的东西,比如编程,或应用科学方法,或是类似算法的数据操作,都无法使用深度学习模型。**即使学习一个具有深度神经网络的分类算法也是非常困难的。
这是因为,一个深度学习模型是“简单的”连续的几何变换链,将一个向量空间映射到另一个空间。所有它会做的是,将一个数据流形X映射到另一个流形Y,假设存在从X到Y的可学习的连续变换,以及X:Y的密集采样的可用性作为训练数据。所以,即使一个深度学习模型可以被解释为一种程序,相反的是,大多数程序不能表示为深度学习模型——对于大多数任务,要么没有相应的实际大小的深度神经网络来解决任务,要么即使存在,它可能不可学习,即相应的几何变换可能太复杂,或者可能没有可用的数据来学习它。
通过堆叠更多层次、使用更多的训练数据,以扩展当前的深度学习技术,只能表面缓解其中的一些问题。深度学习模型可以表述的东西非常有限,而且大多数希望学习的程序不能被表达为数据流的连续的几何变形,这不能解决根本问题。
特别需要说明的是,我们要强调一下“对抗样本”,它是深度学习网络的输入样本,旨在欺骗模型进行错误分类。你已经意识到,可以在输入空间中进行梯度上升,以生成最大限度地激活某些卷积网络过滤器的输入。类似地,通过梯度上升,可以稍微修改图像,以便最大化给定类的类预测。通过拍摄一只熊猫,并添加一个“长臂猿”梯度,我们可以得到一个神经网络将这只熊猫分类为长臂猿。这证明了这些模型的脆弱性,以及它们运行的输入到输出映射与我们自己的人类感知之间的深刻差异。
简而言之,深度学习模型对他们的输入没有任何理解,至少在任何人类意识层面上没有。我们对图像、声音和语言的理解基于我们的感觉运动经验。机器学习模型是无法获得这种经验的,因此不能以任何人为本的方式“理解”他们的输入。通过注释大量的训练示例,填充我们的模型,我们让他们学习几何变换,将数据映射到这个特定的一组示例上的人类概念,但是这个映射只是我们脑子中原始模型的简单草图,从我们的经验中开发出来的具体智能体——就像一面镜子中的一个昏暗的形象。
作为一名机器学习从业者,始终要注意这一点,而不要陷入陷阱,认为神经网络了解他们所执行的任务——他们不会的,至少不会对我们有什么意义。他们接受了不同于我们教给他们的、不同的、更有限的任务训练:仅将训练输入点对点地映射到训练目标。如何向他们展示任何偏离训练数据的东西,他们将以最荒谬的方式被打破。
局部泛化与极端泛化
在深度学习模型所做的输入与输出之间的简单的几何变形,以及人类思考和学习的方式之间似乎存在着根本的区别。人类不仅提供了具体的体验感,而且还提供了明确的训练实例。除了不同的学习过程之外,底层表征的性质存在着根本的区别。
人类的能力可远比应激反应,比如深度网络或者也许是昆虫复杂多了。他们对自己目前的状况,对自己的情况提取复杂、抽象的模型,并且可以使用这些模型预测未来不同的可能性,并执行长期规划。他们有能力将已知概念融合在一起,以代表以前从未经历过的事情——比如说想象穿牛仔裤的马,或想象如果他们赢得彩票,他们会做什么。这种处理假设的能力,扩展我们的心理模型空间远远超出了我们可以直接体验到的一切,执行抽象和推理过程,这可以说是人类认知的特征。 我称之为“极端泛化”:适应异常的、在情境之前从未经历过、使用非常少的数据,甚至没有新数据得能力。
这与深度网络形成了鲜明的对比,我称之为“局部泛化”:如果新的输入与训练时间内的差异甚微,则从深度网络输入到输出的映射快速停止。例如,给定学习适当的发射参数,以使得火箭登陆月球的问题。如果你使用深度网络进行此项任务,无论是使用监督学习还是强化学习进行训练,都需要数千,甚至数百万次的启动试验样本,即你需要将其暴露给输入空间的密集采样,以便学习从输入空间到输出空间的可靠映射。相比之下,人类可以利用他们的抽象力来提出物理模型,并得出一个精确的解决方案,只需一次或几次试验即可成功试射火箭。同样,如果你开发出一个控制人体的深度网络,并希望它学会安全地通过一座城市,而不会受到汽车的撞击,那么该网络会导致该人体在多种情况下都要死亡数千次,直到可以推断出这辆车和危险的,并制定适当的回避行为。进入一个新城市,网络必须重新学习大部分的知识。另一方面,人类能够学习安全行为,而不必再次死亡,这要归功于假设情境的抽象建模。
简而言之,尽管我们在机器感知方面取得了进步,但我们仍然离类人AI非常远:我们的模型只能执行局部泛化,适应与过去数据非常相似的新情况,而人类认知能够极端泛化,迅速适应新奇的情况,或为长期未来的情况进行规划。
-这就是你应该记住的*:迄今为止,深度学习唯一真正的成功是,使用连续的几何变换将空间X映射到空间Y的能力,给出了大量的人为标注的数据。基本上,做好这一切,是改变每个行业的游戏规则,但从类人AI的角度来看,仍然有很长的路要走。
为了解决这些限制,并开始与人类大脑进行竞赛,我们需要简单的输入到输出的映射,以及推理和抽象能力上的进步。对各种情况和概念进行抽象建模的基础是计算机程序。我们以前说过,机器学习模型可以被定义为“可学习的程序”;目前,我们只能学习属于所有可能程序的一个非常狭窄和特定子集的程序。但是,如果我们可以以模块化和可重复使用的方式学习任何程序怎么办?
Ref. Francois Chollet