7. 卷积神经网络¶
无论是单色还是彩色,图像数据都表示为像素的二维网格。因此,每个像素分别对应于一个或多个数值。到目前为止,我们都忽略了这种丰富的结构,而是通过展平(flattening)将图像视为一维向量,而不考虑像素之间的空间关系。这种极其不令人满意的方法是必需的,以便将所得到的一维向量馈送到全连接的多层感知机中。
由于这些网络对特征的顺序是不变的,因此无论我们是保留与像素的空间结构相对应的顺序,还是在拟合多层感知机参数之前对设计矩阵的列进行置换,我们都可以得到类似的结果。理想情况下,我们希望利用我们先前的知识,即相邻的像素通常是相互关联的,来为从图像数据中学习构建有效的模型。
本章介绍卷积神经网络(convolutional neural networks,CNNs) (LeCun et al., 1995),它是一个强大的神经网络家族,正是为此目的而设计的。基于CNN的架构现在在计算机视觉领域无处不在。例如,在ImageNet数据集上(Deng et al., 2009),只有使用卷积神经网络(简称ConvNets)才带来了显著的性能提升(Krizhevsky et al., 2012)。
现代CNNs(通常这么称呼)的设计灵感来自于生物学、群论和大量的实验调整。除了在实现精确模型方面的样本效率外,CNNs在计算上也往往是高效的,这既是因为它们比全连接架构需要更少的参数,也因为卷积很容易在GPU核心上并行化(Chetlur et al., 2014)。因此,从业者经常尽可能地应用CNNs,并且它们越来越多地成为一维序列结构任务(如音频(Abdel-Hamid et al., 2014)、文本(Kalchbrenner et al., 2014)和时间序列分析(LeCun et al., 1995))上有力的竞争者,而在这些任务中,传统上使用循环神经网络。一些对CNNs的巧妙改造也使其应用于图结构数据(Kipf and Welling, 2016)和推荐系统中。
首先,我们将更深入地探讨卷积神经网络的动机。接下来是构成所有卷积网络骨干的基本操作的介绍。这些操作包括卷积层本身、填充(padding)和步幅(stride)等细节、用于聚合相邻空间区域信息的汇聚层(pooling layers)、每层使用多个通道,以及对现代架构结构的仔细讨论。我们将以LeNet的完整工作示例来结束本章,这是在现代深度学习兴起之前第一个成功部署的卷积网络。在下一章中,我们将深入研究一些流行且相对较新的CNN架构的完整实现,这些架构的设计代表了现代从业者常用的大多数技术。