PyTorch深度学习实战
上QQ阅读APP看书,第一时间看更新

1.1 深度学习革命

为了理解深度学习带来的范式转变,让我们回顾一下其发展历程。过去10年,被称为机器学习的一类系统重度依赖于特征工程。特征是对输入数据的转换,它有助于下游算法(如分类器)在新数据上产生正确的结果。特征工程包括提出正确的转换,以便下游算法能够完成任务。例如,为了在手写数字的图像中区分1和0,我们会利用一组过滤器来判断图像上的边缘方向,然后训练一个分类器,在给定边缘方向分布的情况下预测正确的数字。另一个有用的特征可能是封闭圆圈的数量,比如对于数字0和8,特别是对于有2个圈的数字8。

另一方面,深度学习实现的是从原始数据中自动找到这样的表征,以便成功执行任务。在区分1和0的例子中,过滤器会在训练中通过迭代地查看成对的例子和目标标签来改进。这并不是说特征工程不适合深度学习,反而我们经常需要在学习系统中注入某种形式的先验知识。无论怎样,神经网络提取数据并根据实例提取有用表征的能力,正是深度学习如此强大的原因。深度学习实践者的重点不是手工制作这些表征,而是操作数学实体,以便能够自动地从训练数据中发现表征。通常,这些自动创建的表征比手工创建的更好!与许多颠覆性技术一样,这一事实导致了视点的转变。

在图1.1的右侧,实践者通过深度学习,将原始数据输入到一个自动抽取分层特征的算法中,以优化算法在任务上的表现为目标,其结果将与实践者自己定义特征工程驱使算法实现其目标一样好。

通过图1.1的右侧,我们已经大致了解了成功执行深度学习任务需要做些什么。

  • 我们需要一种方法来提取我们手头的所有数据。
  • 我们需要定义深度学习机。
  • 我们需要通过一种自动化的训练方法来获得有用的表征,并使机器产生预期的输出。

让我们更详细地了解一下我们一直提到的训练问题。在训练期间,我们使用一个评判标准、一个模型输出的实值函数和一份参考数据,给模型的期望输出和实际输出之间的差异提供一个分数(通常分数越低越好)。训练包括通过逐步修改我们的深度学习机,甚至是在训练过程中没有看到的数据,从而使评判标准的分数越来越低,直到它获得较低的分数。

图1.1 随着数据和计算需求的增加,深度学习不再需要手工提取特征