这篇文章是根据我的书9章2节改编的, 与 python 进行深入学习 (曼宁出版物)。它是关于目前的深度学习的局限性和它的未来的一系列两个职位的一部分。第二部分将于2017年7月18日公布。
这篇文章的目标是那些已经有深入学习经验的人 (例如, 读过1章到书8的人)。我们假设有很多预先存在的知识。
深入学习: 几何观
深入学习最令人惊讶的是它是多么的简单。十年前, 没有人料到我们会通过使用梯度下降训练的简单参数模型来实现机器感知问题的惊人结果。现在, 事实证明, 所有你需要的是足够大的参数模型训练的梯度下降足够多的例子。费曼曾经说过宇宙, "这并不复杂, 它只是很多"。
在深入的学习中, 一切都是一个向量, 即一切都是一个几何空间的点。模型输入 (可以是文本、图像等) 和目标是第一个 "量化", 即变成一些初始输入向量空间和目标向量空间。深度学习模型中的每个层都对经过它的数据进行简单的几何变换。在一起, 模型的层链形成一个非常复杂的几何变换, 分解成一系列简单的。这种复杂的转换尝试将输入空间映射到目标空间, 一次一个点。此转换由层的权重参数, 这是基于模型当前的执行情况进行迭代更新的。这个几何变换的一个关键特征是它必须是可微的, 为了我们能通过梯度下降学会它的参量是需要的。直观地说, 这意味着从输入到输出的几何变形必须是平滑和连续的, 这是一个重要的约束。
将这个复杂的几何变换应用到输入数据的整个过程可以在3D 中可视化, 想象一个人试图 uncrumple 一个纸球: 皱巴巴的纸球是模型开始时的输入数据流形。在纸球上的人所操作的每个动作都类似于一个简单的由一层操作的几何变换。完整的 uncrumpling 手势序列是整个模型的复杂变换。深学习模型是 uncrumpling 复杂的高维数据流形的数学机器。
这就是深入学习的神奇之处: 将意义转化为向量, 进入几何空间, 然后逐步学习复杂的几何变换, 将一个空间映射到另一处。所有您需要的是足够高维度的空间, 以便捕获原始数据中的关系的全部范围。
深度学习的局限性
可以用这个简单的策略实现的应用程序空间几乎是无穷大的。然而, 对于目前的深层学习技术, 更多的应用已经完全无法实现--甚至给出了大量的人类注释数据。比方说, 例如, 您可以组装一个由产品经理编写的、由一个工程师组成的团队为满足这些要求而开发的相应源代码的数据集, 其中包括对软件产品的功能的英语语言描述。即使有了这些数据, 您也无法训练一个深入的学习模型来简单地读取产品描述并生成相应的代码库。这只是许多人中的一个例子。一般情况下, 任何需要推理的编程, 或者应用科学方法--长期规划, 和算法, 比如数据操作--都无法达到深入的学习模式, 不管你向他们扔了多少数据。即使学习一个具有深神经网络的排序算法是非常困难的。
这是因为一个深的学习模型是 "只是" 一连串简单的, 连续的几何变换映射一个向量空间到另一个。它所能做的就是将一个数据流形 x 映射到另一个流形 y 中, 假设存在一个从 x 到 y 的学习连续变换, 以及一个稠密的 x: y 的取样, 用作训练数据。因此, 即使一个深的学习模式可以被解释为一种程序, 相反多数节目不能被表达作为深刻的学习模型-对于多数任务, 或者存在没有对应的 practically-sized 深层神经网络解决任务, 或者, 即使存在一个, 它可能不学习, 即对应的几何变换可能是太复杂的, 或者可能没有适当的数据可供学习。
通过堆叠更多的层和使用更多的培训数据来扩展当前的深层学习技术, 只能表面上减轻其中的一些问题。它不会解决更深层次的问题, 即深入学习