1.3 深度学习
本书的内容由很多句子组成,这些句子由单词组成,这些单词又由单字组成,单字[1]则由线条和曲线组成,而这些线条和曲线由微小的墨点组成。在教孩子学习阅读的时候,我们往往从最小的部分开始,然后逐渐提高难度:首先是字,然后是词,再接着是句子,最后才是完整的书。(至于线条和曲线,孩子们往往能自己学会识别。)这种分层的结构是人类学习复杂概念的一种自然方式。每上升一层,我们都会丢掉一些细节,让概念变得更加抽象。
深度学习把这些原理应用到了机器学习之中。深度学习是机器学习的一个子领域,它采用了一个特定的模型:一族通过某种方式连接起来的简单函数。由于这类模型的结构是受到人类大脑结构的启发而创造出来的,因此我们通常把它们称为神经网络(neural networks)。神经网络中的函数链条能够将复杂的概念分解为多个层次的更简单的概念,这就是深度学习的核心思想。例如,深度学习模型的第一层,可以用来学习如何获取原始数据,并用基本的方式来组织它(如将多个点组合成直线)。后面每一层都将前面一层组织成更高级、更抽象的概念。我们把学习这种抽象概念的过程称作表征学习(representation learning)。
深度学习的神奇之处在于,我们并不需要事先了解中间层的概念具体是什么。如果选择的模型层次足够多(即深度足够深),并提供足够数量的训练数据,它就能在训练过程中逐步将原始数据组织为越来越高级的概念。那么训练算法怎么知道应当使用哪些概念呢?它并不需要知道。它只需要找到能够更好地匹配训练样本的数据组织方式就可以了。至于生成的表征是不是能够符合人们对数据的印象,那就无法保证了。图1-9展示了如何将表征学习融入深度学习的流程中。
图1-9 深度学习和表征学习
深度学习的这种强大能力是有代价的:深度学习模型需要学习的权重数量非常巨大。回顾一下前面处理身高-体重数据集的简单模型ax + b,这个模型只有两个权重需要学习。而用于处理图像标签应用的深度学习模型,则可能有上百万个权重。因此,深度学习需要更大的数据集、更强的计算能力以及更多的训练实践。深度学习与传统机器学习各有其适用的情形。在下列几种情形中,深度学习是一个不错的选择。
- 应用的数据格式是非结构化的。图像、音频和书面语言都是深度学习的理想处理对象。采用简单模型来学习这些数据也不是不可能,但通常需要非常复杂的预处理过程。
- 有大量的可用数据,或者有办法获得更多数据。通常,模型越复杂,训练所需的数据就越多。
- 有足够强的计算能力或充足的时间。深度学习模型在训练和评估过程中都需要更多的计算量。
而在以下的情形中,应当选择参数较少的传统模型。
- 应用的数据是结构化的。如果输入看起来更像是数据库记录,那么通常可以直接应用简单模型。
- 想要一个描述性的模型。使用简单模型,能够看到最终学习到的具体函数,因而可以直接检查不同的输入对输出的影响。这样做能让开发者更方便地了解应用在真实世界中的工作情况。但是在深度学习模型中,特定输入与最终输出之间隔着绵长曲绕的神经连接,使得我们很难对模型做出描述或解释。
由于深度学习指的是模型类型,因此前面讲到的几个不同的机器学习分支,都可以应用它。例如,在监督学习中,根据拥有的训练数据的不同,我们可以在简单模型或深度学习模型之间做出选择。