第 9 章:卷积网络(Convolutional Networks)
9.1 卷积运算(The Convolution Operation)
卷积是一种对两个实值函数进行的运算。作者用一个飞船定位的激光传感器例子来引入这个定义:传感器输出 \(x(t)\) 是飞船在时刻 \(t\) 的位置函数,为了抑制噪声,希望对最近的若干测量做加权平均,使得较新的测量权重更大。若用加权函数 \(w(a)\) 表示 \(a\) 时刻之前的测量所占权重,那么"在每个时刻都施加这种加权平均"得到的位置平滑估计函数为
这就是卷积,标准记号为 \(s(t)=(x*w)(t)\)。在该例中 \(w\) 须为合法的概率密度函数,否则输出就不再是加权平均;同时 \(w\) 在所有负参数处必须为零,否则就会用到"未来"的测量。脱离这个例子的特定条件,卷积对任何使上述积分有定义的函数都有意义,也用于加权平均之外的其它目的。
卷积网络术语中,卷积的第一个参数(本例的 \(x\))通常称为输入,第二个参数(本例的 \(w\))称为核,输出有时称为特征图(feature map)。由于连续时间在计算机中并不现实,时间需要被离散化。假设 \(x\) 和 \(w\) 仅在整数时刻有定义,则离散卷积为
机器学习应用中,输入和核通常是参数由学习算法调节的多维数组(作者称之为张量);由于每个元素都须显式存储,通常假设它们在有限集合之外都为零,从而可以把无限求和实现为对有限多个数组元素的求和。
实际中常常同时在多个轴上做卷积。例如用二维图像 \(I\) 作输入、二维核 \(K\),则
卷积满足交换律,等价地也可写成
后一种写法在机器学习库中通常更易实现,因为 \(m\) 和 \(n\) 的取值范围变化更小。交换律成立是因为核相对输入做了翻转:随着 \(m\) 增大,输入索引增大,核索引却减小。引入翻转的唯一动机就是得到交换律。交换律虽然对写证明有用,但对神经网络实现并不重要。许多神经网络库实际实现的"互相关"(cross-correlation)就是不做核翻转的卷积:
本书沿用机器学习社区的惯例,把互相关也叫作卷积,只在确实涉及核翻转时才显式区分。在机器学习语境下,学习算法会在合适的位置学到合适的核值,所以基于带翻转卷积的算法学到的核,恰好是相应不带翻转算法学到的核的翻转版本。在机器学习中也很少单独使用卷积;卷积几乎总是与其它函数联合使用,而联合之后的整体函数族——无论卷积本身是否翻转——都不满足交换律。
离散卷积也可被视作矩阵乘法,只不过矩阵中有若干元素被约束为相等:对单变量离散卷积而言,矩阵的每一行等于上一行平移一个元素,这称为 Toeplitz 矩阵;在二维情形下,双分块循环矩阵对应卷积。除了"元素之间相等"的约束外,卷积对应的矩阵通常还是高度稀疏的——因为核远小于输入图。任何只依赖矩阵乘法、不依赖矩阵结构特殊性质的神经网络算法都可以直接套到卷积上,无需额外改动。典型卷积网络确实还会用其它专门技巧处理大输入的高效计算,但从理论上看这些不是必需的。图 9.1 给出一个不带核翻转的二维卷积作用于二维张量的例子。
9.2 动机(Motivation)
卷积利用了三个能改善机器学习系统的重要思想:稀疏交互(sparse interactions)、参数共享(parameter sharing)和等变表示(equivariant representations)。此外,卷积还提供了一种处理可变大小输入的方法。作者依次讨论这些思想。
传统的神经网络层用参数矩阵做矩阵乘法,每个输入单元和每个输出单元之间都有一个独立的参数,所以每个输出单元都会与每个输入单元交互。卷积网络则通常具有稀疏交互(也称稀疏连接或稀疏权重),通过让核小于输入来达到。例如处理图像时,输入可能有成千上万的像素,但只要几十到几百像素大小的核就能检测出边缘这种小而有意义的特征。这样需要存储的参数更少,既降低了模型对内存的需求,也提升了统计效率,同时计算输出所需的运算也更少。若有 \(m\) 个输入、\(n\) 个输出,矩阵乘法需要 \(m\times n\) 个参数,实践中算法的运行时间是 \(O(m\times n)\)(每个样本);若把每个输出的连接数限制为 \(k\),则稀疏连接方式只需 \(k\times n\) 个参数、\(O(k\times n)\) 运行时间。在许多实际应用中,让 \(k\) 比 \(m\) 小好几个数量级仍能在任务上获得良好性能。图 9.2 和图 9.3 用图示说明了稀疏连接;在深度卷积网络中,深层单元可能间接地与输入的更大区域交互(图 9.4),从而可以由只描述稀疏交互的简单构件组合出描述多个变量复杂交互的网络。
参数共享指在模型中把同一参数用于多个函数。在传统神经网络中,权重矩阵的每个元素在计算该层输出时只被用一次——乘以输入的一个元素后就不再出现。参数共享的同义说法是"绑定权重"(tied weights),因为施加于一个输入的权重与施加于另一个输入的权重被绑定在一起。在卷积网络中,核的每个成员会在输入的每个位置被使用(边界像素可能例外,取决于边界处理的设计选择)。参数共享并不改变前向传播的运行时间,仍是 \(O(k\times n)\),但它把模型的存储需求进一步降低到 \(k\) 个参数。\(k\) 通常比 \(m\) 小好几个数量级;而 \(m\) 和 \(n\) 又通常大致相当,所以 \(k\) 相比 \(m\times n\) 在实践中几乎可忽略不计。因此卷积在内存占用和统计效率上都比稠密矩阵乘法高效得多。图 9.5 用图示说明了参数共享的工作方式。
作为前两个原则的实例,图 9.6 展示了稀疏连接和参数共享如何大幅提升检测图像边缘的线性函数的效率。
参数共享的特殊形式使卷积层具备平移等变性(equivariance to translation)。所谓等变,是指若输入发生某种变换,输出也以同样的方式发生变化。形式化地说,若 \(f(g(x))=g(f(x))\),则函数 \(f\) 对函数 \(g\) 等变。在卷积情形下,若令 \(g\) 为任何对输入做平移(即移位)的函数,则卷积函数对 \(g\) 等变。例如设 \(I\) 是图像亮度在整数坐标上的函数,\(g\) 是把 \(I\) 映射为 \(I'\) 的函数,其中 \(I'(x,y)=I(x-1,y)\)(把 \(I\) 的每个像素右移一格),则先对 \(I\) 施加变换、再做卷积,结果等于先做卷积、再对输出施加变换 \(g\)。处理时间序列数据时,这意味着卷积产生的表示就像一条时间线,显示不同特征何时出现;若把输入中的事件推迟,输出中表示该事件的特征也相应推迟,时间一致。图像也是如此,卷积生成一个二维特征图,标记特征在输入中的位置;若把对象在输入中移动,它的表示会在输出中移动同样距离。当我们已知某个关于"小范围相邻像素"的函数在多个输入位置都有用时,这种等变性非常有用。例如图像处理中希望在卷积网络的第一层检测边缘,而同一类边缘几乎会在图像各处以不同位置出现,因此跨整个图像共享参数是合理的。但在某些情形下不宜对全图共享参数——例如若图像已被裁剪居中到某人的面部,可能希望在不同位置提取不同特征:处理脸的上半部分的网络要去找眉毛,处理脸的下半部分的网络要去找下巴。
卷积对另一些变换(如图像的尺度变化或旋转)天然不是等变的,处理这些变换需要其它机制。
最后,矩阵乘法要求固定形状的权重矩阵,因此有些数据无法被基于矩阵乘法的神经网络直接处理;卷积使处理这些类型的数据成为可能,作者在 9.7 节进一步讨论。
9.3 池化(Pooling)
卷积网络的典型层由三个阶段组成(图 9.7):第一阶段,层并行执行若干卷积以产生一组线性激活;第二阶段,每个线性激活都通过一个非线性激活函数(例如 ReLU),这一阶段有时称为检测器阶段;第三阶段,使用一个池化函数对层输出做进一步修改。
池化函数用某一位置附近输出的汇总统计量替换该位置的输出。例如最大池化(max pooling,源自 Zhou and Chellappa, 1988)报告的是某个矩形邻域内的最大输出。其它常用的池化函数还包括矩形邻域内的平均值、L2 范数,或基于到中心像素距离的加权平均。
无论哪种池化,都有助于让表示对输入的小幅平移近似不变。所谓平移不变,是指若把输入小幅平移,多数池化输出的值不会发生变化。图 9.8 给出了这一工作方式的示例。若关注的是"某个特征是否出现",而不是它的精确位置,那么局部平移不变性是非常有用的属性。例如判断图像是否包含人脸时,不需像素级精确地知道眼睛的位置,只需知道脸的左边有一只眼睛、右边有一只眼睛即可。在另一些场景中,保留特征位置更重要——例如要找由两条特定朝向的边相交形成的角点,就必须把边位置保留得足够精细,才能判断它们是否真的相交。
池化的使用可被视为给层所学函数加上一个无限强的先验(prior),要求它对小幅平移不变。当这个假设正确时,可以大幅提升网络的统计效率。空间区域上的池化产生平移不变性,但若对分别参数化的若干卷积的输出做池化,则所学特征可以学到应对哪些变换保持不变(图 9.9)。
由于池化对整个邻域的响应做汇总,可以用比检测器单元更少的池化单元——只要把池化区域以间隔 \(k\) 个像素而非 1 个像素的方式排布即可(图 9.10)。这样下一层需要处理的输入大致减少为原来的 \(1/k\),提高了计算效率。当下一层参数数量是其输入大小的函数时(例如下一层是全连接层、基于矩阵乘法),输入尺寸的减小也会提升统计效率并减少存储参数所需的内存。
对许多任务而言,池化对处理可变大小的输入至关重要。例如要对可变尺寸的图像分类,则分类层的输入必须是固定大小的——这通常通过让池化区域之间的偏移随输入大小变化来实现,使得分类层无论输入大小如何都收到同样数量的汇总统计。例如网络的最后池化层可以被定义为无论图像大小如何都输出四个汇总统计集合,分别对应图像的四个象限。
关于在各种情形下应当用哪种池化,已有一些理论工作给出指导(Boureau et al., 2010)。也可以动态地把特征汇聚到一起,例如对感兴趣特征的位置运行聚类算法(Boureau et al., 2011),这种做法对每张图像给出不同的池化区域集合。另一种思路是学一个对所有图像都适用的池化结构(Jia et al., 2012)。
池化会给某些使用自顶向下信息的神经网络架构(例如玻尔兹曼机和自编码器)带来复杂性。作者指出这些问题会在第三部分介绍这些网络时再讨论:卷积玻尔兹曼机的池化在 20.6 节;某些可微网络中池化单元的类逆运算在 20.10.6 节。图 9.11 给出了若干使用卷积和池化进行分类的完整卷积网络架构示例。
9.4 卷积与池化作为一种无限强的先验(Convolution and Pooling as an Infinitely Strong Prior)
作者回顾第 5.2 节介绍的先验概率分布的概念:这是模型参数上的一个概率分布,在看到任何数据之前编码我们对哪些模型合理的信念。
先验的强弱取决于先验中概率密度有多集中。弱先验是高熵的先验分布,例如大方差的高斯分布,它允许数据较为自由地移动参数。强先验是低熵的先验分布,例如小方差的高斯分布,它在决定参数最终取值时扮演更主动的角色。无限强的先验把某些参数的概率设为零,无论数据多么支持这些取值,都完全禁止。
可以把卷积网络想象成与全连接网络类似、但对其权重施加了无限强先验的网络。这个无限强先验要求:一个隐藏单元的权重必须与相邻隐藏单元的权重相同,只是空间上有所偏移;先验还要求权重除了在该隐藏单元对应的小而空间连续的感受野外必须为零。整体上,可以把卷积的使用看作对层参数引入了一个无限强的先验概率分布。这个先验要求该层应学的函数只包含局部交互,并且对平移等变。类似地,池化的使用则是一个无限强的先验,要求每个单元对小幅平移不变。
当然,把卷积网络实现为带有无限强先验的全连接网络在计算上极其浪费。但把卷积网络理解为带有无限强先验的全连接网络,能给我们理解卷积网络的工作方式带来一些启发。
一个关键启发是:卷积和池化可能导致欠拟合。与任何先验一样,卷积和池化只在先验所做的假设基本正确时才有帮助。若任务依赖于保留精确的空间信息,则对所有特征使用池化反而会增大训练误差。有些卷积网络架构(Szegedy et al., 2014a)刻意让一些通道做池化、另一些通道不做池化,从而同时获得高度不变的、且在平移不变先验错误时不会欠拟合的特征。当任务需要整合来自输入中相距很远位置的信息时,卷积所施加的先验也不合适。
另一个关键启发是:在统计学习性能基准上,卷积模型只能与其它卷积模型比较。不使用卷积的模型即使我们把图像中所有像素做置换也能照样学习。对于许多图像数据集,存在两类基准:一类是置换不变、必须通过学习发现拓扑概念的模型;另一类是设计者将空间关系硬编码进模型的。
9.5 基本卷积函数的变体(Variants of the Basic Convolution Function)
在神经网络语境下讨论卷积时,所指的通常并不完全等同于数学文献中标准的离散卷积操作。实际使用的函数略有差别。本节详述这些差别,并指出神经网络所用函数的一些有用性质。
第一,神经网络语境下说"卷积",通常实际上指的是由许多卷积并行应用构成的一种操作。这是因为用单个核做卷积只能提取一种特征(虽然能在许多空间位置提取)。通常希望网络的每一层能在许多位置提取多种特征。
此外,输入通常并不只是实数值的网格,而是向量值观测的网格。例如彩色图像在每个像素上有红、绿、蓝三个强度。在多层卷积网络中,第二层的输入是第一层的输出,而第一层的输出通常在每个位置上都有多个不同卷积的结果。在处理图像时,通常把卷积的输入和输出视为三维张量:一个索引用于不同的通道、两个索引用于每个通道的空间坐标。软件实现通常以批处理模式工作,因此实际使用四维张量,第四个轴索引批次中的不同样本;但本节描述中为简化起见省略批处理轴。
由于卷积网络通常使用多通道卷积,所以它们所基于的线性运算即使在使用核翻转时也不保证满足交换律。多通道操作仅在每个操作具有相同数量的输出通道和输入通道时才满足交换律。
设有一个四维核张量 \(K\),其元素 \(K_{i,j,k,l}\) 给出输出通道 \(i\) 中的一个单元与输入通道 \(j\) 中的一个单元之间的连接强度,输出单元相对输入单元有 \(k\) 行、\(l\) 列的偏移。设输入由观测数据 \(V\) 组成,其元素 \(V_{i,j,k}\) 是通道 \(i\) 在第 \(j\) 行第 \(k\) 列的输入单元的值。设输出 \(Z\) 与 \(V\) 具有同样的格式。若 \(Z\) 由 \(K\) 在 \(V\) 上做不带翻转的卷积产生,则
其中对 \(l,m,n\) 的求和覆盖张量索引操作在求和内部有效的所有取值。在线性代数记号中,我们用 1 作为数组首项的索引,因此上式中出现 \(-1\)。C 和 Python 等编程语言从 0 开始索引,所以上式表达更简洁。
有时希望跳过核的某些位置以降低计算代价(代价是不那么精细地提取特征)。可把这看作对完整卷积函数输出的下采样。若希望在每个方向上每 \(s\) 个像素采样一次输出,可定义下采样卷积函数 \(c\):
\(s\) 称为该下采样卷积的步幅(stride)。也可以为每个运动方向定义不同的步幅。图 9.12 给出了示意。
任何卷积网络实现的一项关键能力是能对输入 \(V\) 做隐式零填充(zero-padding)以使其更宽。若没有这一特性,则每一层表示的宽度会比核宽度少一个像素而缩小。零填充使得核宽度和输出尺寸可以独立控制。若不做零填充,就只能在"网络空间范围迅速缩小"与"使用小核"之间二选一——这两种情形都会显著限制网络的表达能力。图 9.13 给出示例。
零填充设置有三种值得提及的特殊情形。第一种极端情形是完全不使用零填充,卷积核只允许访问核完全位于图像内部的位置——在 MATLAB 术语中这称为"有效卷积"(valid convolution)。此时输出所有像素都是输入中同样数量的像素的函数,因此输出像素的行为较为规则。但输出每层都会缩小:若输入图像宽度为 \(m\)、核宽度为 \(k\),输出宽度为 \(m-k+1\)。若使用的核较大,缩小速率可能很显著。由于缩小速率大于 0,这就限制了网络中可容纳的卷积层数;继续添加层时,空间维度最终会降到 \(1\times 1\),到那时再加的层就不再有真正卷积的意义。另一种特殊情形是加入恰好使输出大小等于输入大小的零填充——MATLAB 称这为"相同卷积"(same convolution)。这种情形下网络可以包含硬件支持的任意多层卷积,因为卷积操作不会改变下一层可用的架构可能性。但靠近边界的输入像素影响的输出像素比靠中心的少,这会让边界像素在模型中代表性不足。这又引出了另一种极端情形,MATLAB 称其为"完全卷积"(full convolution),即加入足够多零以使每个像素在每个方向上都被访问 \(k\) 次,输出图像宽度为 \(m+k-1\)。这种情形下靠近边界的输出像素由较少的输入像素决定,可能难以学到一个在卷积特征图所有位置都表现良好的单一核。通常零填充的最优量(以测试集分类准确率衡量)介于"有效"与"相同"卷积之间。
在某些情形下,实际需要的不是卷积,而是局部连接层(locally connected layer,LeCun, 1986, 1989)。此时 MLP 图中的邻接矩阵相同,但每条连接都有自己的权重,由一个六维张量 \(W\) 指定。\(W\) 的索引依次为:\(i\)(输出通道)、\(j\)(输出行)、\(k\)(输出列)、\(l\)(输入通道)、\(m\)(输入内行偏移)、\(n\)(输入内列偏移)。局部连接层的线性部分为
这有时也称为非共享卷积(unshared convolution),因为它与使用小核的离散卷积类似,但不跨位置共享参数。图 9.14 比较了局部连接、卷积和全连接。
局部连接层适用于已知每个特征应该是空间某小部分的函数、但没有理由认为同一特征应出现在所有空间位置的情形。例如想判断图像是不是人脸时,只需在图像下半部分寻找嘴。
有时让卷积或局部连接层的连接性进一步受限也有用,例如把每个输出通道 \(i\) 限制为仅是输入通道 \(l\) 的某个子集的函数。一种常见做法是让前 \(m\) 个输出通道只连接前 \(n\) 个输入通道,第 \(m+1\) 到第 \(2m\) 个输出通道只连接第 \(n+1\) 到第 \(2n\) 个输入通道,依此类推(图 9.15)。对少量通道之间的交互建模既能让网络用更少的参数(节省内存、提升统计效率),也能减少前向和反向传播所需的计算量,且不减少隐藏单元数。
平铺卷积(tiled convolution,Gregor and LeCun, 2010a;Le et al., 2010)在卷积层和局部连接层之间提供了一种折中。它不像局部连接层那样在每个空间位置学一套独立的权重,而是学一组核,在空间移动时轮换使用。这意味着紧邻的位置使用不同的滤波器(与局部连接层类似),但存储参数所需的内存只增加为核集合的大小,而非整个输出特征图的大小。图 9.16 比较了局部连接层、平铺卷积和标准卷积。
形式化地定义平铺卷积:设 \(k\) 是一个六维张量,其中两个维度对应输出图中的不同位置。输出位置不再为输出图中每个位置设独立索引,而是在每个方向上在一组 \(t\) 个不同的核栈中循环。若 \(t\) 等于输出宽度,则退化为局部连接层。
其中 \% 是取模运算,\(t\%t=0\)、\((t+1)\%t=1\) 等。容易把该公式推广为对每个维度使用不同的平铺范围。
局部连接层和平铺卷积与最大池化有一种有趣的交互:这些层的检测器单元由不同的滤波器驱动。若这些滤波器学会检测同一底层特征的不同变换形式,则最大池化单元会对所学变换保持不变(图 9.9)。卷积层则硬编码为只对平移保持不变。
实现一个卷积网络通常还需要卷积之外的其它运算。要学习,必须能在已知关于输出的梯度的前提下,计算关于核的梯度。在某些简单情形下,这个运算可以用卷积运算实现,但许多感兴趣的情形(包括步幅大于 1 的情形)并不具备这一性质。
卷积是线性运算,因此可以被描述为矩阵乘法(先把输入张量重塑为扁平向量)。所涉及的矩阵是核的函数——该矩阵稀疏,且核的每个元素会被复制到该矩阵的几个元素上。这一视角有助于推导实现卷积网络所需的其它运算。
与卷积所定义的矩阵的转置相乘就是其中一种运算。这是通过卷积层反向传播误差导数所需的运算,因此训练多于一个隐藏层的卷积网络时需要它。若希望从隐藏单元重建可见单元(Simard et al., 1992),同样需要这个运算。可见单元的重建是本书第三部分(如自编码器、RBM、稀疏编码)所述模型中常用的运算。要构造这些模型的卷积版本,就需要转置卷积。卷积的转置。转置卷积。与核梯度运算类似,输入梯度运算在某些情形下可用卷积实现,但在一般情形下需要第三种运算来实现。需要仔细协调这种转置运算与前向传播。转置运算应返回的输出大小取决于前向传播运算的零填充策略和步幅,以及前向传播输出图的大小。在某些情形下,多种大小的前向传播输入可能得到相同大小的输出图,因此必须显式告诉转置运算原始输入的大小。
这三种运算——卷积、从输出到权重的反向传播、从输出到输入的反向传播——足以计算训练任意深度前馈卷积网络所需的全部梯度,也足以训练基于卷积转置重建函数的卷积网络。Goodfellow (2010) 给出了完全一般化多维、多样本情形的完整推导。为直观感受这些方程的工作方式,作者给出二维、单样本版本。
假设要训练一个卷积网络,它对多通道图像 \(V\) 用核栈 \(K\) 做步幅 \(s\) 的卷积,即方程 9.8 所定义的 \(c(K,V,s)\)。假设要最小化某个损失函数 \(J(V,K)\)。在前向传播中,需要使用 \(c\) 自身来输出 \(Z\),\(Z\) 再通过网络的其余部分传播并计算代价函数 \(J\)。在反向传播中,会收到一个张量 \(G\),使得
要训练网络,需要计算关于核中权重的导数。为此可以使用函数
如果这一层不是网络的最底层,则需要计算关于 \(V\) 的梯度,以便把误差继续向下反向传播。为此可以使用函数
第 14 章介绍的自编码器网络是前馈网络,训练时把输入复制到输出。一个简单例子是 PCA 算法,它用函数 \(W^\top W x\) 把输入 \(x\) 复制为近似重建 \(r\)。更一般的自编码器常用与权重矩阵的转置相乘,正如 PCA 那样。要让这些模型成为卷积版本,可以使用函数 \(h\) 来执行卷积运算的转置。设隐藏单元 \(H\) 与 \(Z\) 格式相同,并定义一个重建
为训练自编码器,会收到关于 \(R\) 的梯度作为张量 \(E\)。要训练解码器,需要获得关于 \(K\) 的梯度,即 \(g(H,E,s)\);要训练编码器,需要获得关于 \(H\) 的梯度,即 \(c(K,E,s)\)。也可以通过对 \(g\) 求导得到关于 \(c\) 和 \(h\) 的导数,但在任何标准网络架构的反向传播算法中都不需要这些运算。
通常不会只用线性运算把卷积层的输入映射到输出。一般还要在施加非线性之前给每个输出加一个偏置项。这引出"如何在偏置间共享参数"的问题。对局部连接层,自然的做法是给每个单元自己的偏置;对平铺卷积,自然的做法是用与核相同的平铺模式共享偏置。对卷积层,典型做法是输出每个通道一个偏置,并在卷积图内所有位置共享。然而,若输入尺寸已知且固定,也可以在输出图的每个位置学一个单独的偏置。分开偏置可能会略微降低模型的统计效率,但也能让模型纠正图像在不同位置的统计差异。例如使用隐式零填充时,图像边缘的检测器单元接收到的总输入较少,可能需要更大的偏置。
9.6 结构化输出(Structured Outputs)
卷积网络可以用来输出高维结构化对象,而不只是为分类任务预测一个类标签或为回归任务预测一个实数值。通常该对象就是一个由标准卷积层输出的张量。例如模型可以输出一个张量 \(S\),其中 \(S_{i,j,k}\) 表示网络输入的像素 \((j,k)\) 属于类 \(i\) 的概率。这允许模型标记图像中的每个像素,并绘制精确贴合各对象轮廓的掩膜。
一个经常会遇到的问题是输出平面可能小于输入平面(图 9.13)。在通常用于对图像中单个对象分类的架构中,空间维度的最大缩减来自使用大步幅的池化层。为了产生与输入大小相近的输出图,可以完全避免池化(Jain et al., 2007)。另一种策略是只发射一个较低分辨率的标签网格(Pinheiro and Collobert, 2014, 2015)。原则上还可以使用单位步幅的池化算子。
一种像素级标记图像的策略是先生成图像标签的初始猜测,再利用相邻像素间的交互细化这个初始猜测。把这一细化步骤重复若干次,等价于在每一阶段使用同样的卷积,并在深度网络最后几层之间共享权重(Jain et al., 2007)。这使得"权重跨层共享的连续卷积层所执行的计算序列"成为一种特殊的循环网络(Pinheiro and Collobert, 2014, 2015)。图 9.17 给出了这样一个循环卷积网络的架构。
对每个像素做出预测之后,可以用各种方法进一步处理这些预测,以获得把图像分割为区域的分割结果(Briggman et al., 2009;Turaga et al., 2010;Farabet et al., 2013)。总体思路是假设大片相连的像素倾向于被关联到同一标签。图模型可以描述相邻像素之间的概率关系。也可以训练卷积网络最大化图模型训练目标的一个近似(Ning et al., 2005;Thompson et al., 2014)。
9.7 数据类型(Data Types)
卷积网络使用的数据通常由若干通道组成,每个通道是空间或时间某点上某个量的观测。表 9.1 给出了具有不同维度和不同通道数的数据类型示例。
关于卷积网络应用于视频的例子,可参见 Chen et al. (2010)。
迄今为止,讨论都假设训练和测试数据中每个样本的空间维度相同。卷积网络的一个优势是它们也能处理空间范围可变的输入。这种输入根本无法被传统的、基于矩阵乘法的神经网络表示。这为使用卷积网络提供了一个有说服力的理由,即使在计算代价和过拟合不构成显著问题时也是如此。
例如考虑一组图像,每张图像的宽和高都不同。用固定大小的权重矩阵建模这样的输入难以处理;卷积则可以直接应用——核只是根据输入大小被应用不同次数,卷积运算的输出随之缩放。可以把卷积视作矩阵乘法:同样的卷积核对每种大小的输入都会诱导出不同大小的双分块循环矩阵。有时网络的输出也被允许是大小可变的——例如想给输入的每个像素分配一个类标签——此时不需要进一步的设计工作。另一些情形下,网络必须产生固定大小的输出,例如想给整个图像分配一个类标签,此时必须做额外的设计步骤,例如插入一个池化区域大小随输入大小成比例缩放的池化层,以维持固定数量的池化输出。图 9.11 给出了若干此类策略的示例。
注意,用卷积处理可变大小输入只对那些"因包含对同类事物的不同观测数量而具有可变大小"的输入才有意义——不同长度的录音、不同时段宽度的空间观测等。若输入的可变大小是因为它可以可选地包含不同种类的观测,则卷积没有意义。例如处理大学申请,特征由成绩和标准化考试成绩组成,但并非每个申请者都参加了标准化考试,则把同一组权重同时卷积到成绩特征和考试成绩特征上是没有意义的。
9.8 高效卷积算法(Efficient Convolution Algorithms)
现代卷积网络应用往往涉及包含超过一百万个单元的网络。充分利用并行计算资源的强大实现(如 12.1 节讨论的)是必需的。然而,在许多情形下,也可以通过选择合适的卷积算法来加速卷积。
卷积等价于用傅里叶变换把输入和核都变换到频域、逐点相乘、再用逆傅里叶变换回到时域。对某些问题规模,这比朴素的离散卷积实现更快。
当一个 \(d\) 维核可以表示为 \(d\) 个向量(每个维度一个)的外积时,核称为可分离的(separable)。当核可分离时,朴素卷积效率低下——它等价于把这 \(d\) 个向量各自做一维卷积后再复合。复合方式显著快于直接做一次 \(d\) 维卷积(与外积对应的)。核作为向量的表示也占用更少的参数。若核在每个维度上宽度为 \(w\),朴素的多维卷积需要 \(O(w^d)\) 运行时间和参数存储空间,而可分离卷积只需 \(O(w\times d)\) 运行时间和参数存储空间。当然,并非所有卷积都能以这种方式表示。
设计更快的方法执行卷积或近似卷积而不损害模型精度,仍是活跃研究方向。即使是只改进前向传播效率的技术也有用,因为在商业环境中,部署网络的资源通常远多于训练网络的资源。
9.9 随机或无监督特征(Random or Unsupervised Features)
卷积网络训练中通常最昂贵的部分是学习特征。输出层相对便宜,因为经过若干池化层后提供给该层的特征数量较少。当用梯度下降做监督训练时,每个梯度步都要求对整个网络做一次完整的前向传播和反向传播。降低卷积网络训练代价的一种方法是使用不以监督方式训练的特征。
获得无监督训练的卷积核有三种基本策略。第一种是简单地把它们初始化为随机的。第二种是手工设计,例如把每个核设置为检测某个特定方向或尺度的边缘。第三种是用无监督准则学习核。例如 Coates et al. (2011) 对小图像块做 k-means 聚类,然后用学到的每个聚类中心作为一个卷积核。第三部分描述了更多无监督学习方法。用无监督准则学习特征可以让它们与架构顶部的分类器层分开确定。然后可以为整个训练集只提取一次特征,本质上为最后一层构造出一个新的训练集。学习最后一层通常是一个凸优化问题,假设最后一层像逻辑回归或 SVM。
随机滤波器在卷积网络中常常出奇地有效(Jarrett et al., 2009;Saxe et al., 2011;Pinto et al., 2011;Cox and Pinto, 2011)。Saxe et al. (2011) 表明,由卷积和池化构成的层在被赋予随机权重时,自然会变得具有频率选择性和平移不变性。他们认为这提供了一种廉价的方法来选择卷积网络的架构:先只训练最后一层、评估若干卷积网络架构的性能,再取其中最好的架构、用更昂贵的方法训练整个架构。
一种折中方式是学习特征,但使用不需要在每个梯度步都做完整前向和反向传播的方法。如同多层感知机,使用贪婪逐层预训练——先单独训练第一层,然后只从第一层提取一次所有特征,再在给定这些特征的情况下单独训练第二层,依此类推。第 8 章已介绍如何执行有监督的贪婪逐层预训练,第三部分将其推广到每层使用无监督准则的贪婪逐层预训练。卷积模型贪婪逐层预训练的典型例子是卷积深度信念网络(Lee et al., 2009)。
卷积网络让我们有机会把预训练策略推进到比多层感知机更远的一步。不是一次训练整个卷积层,而是训练一个小块的模型,正如 Coates et al. (2011) 用 k-means 那样。然后用这个基于块的模型参数定义卷积层的核。这意味着可以用无监督学习训练卷积网络而训练过程中完全不使用卷积。用这种方法,可以训练非常大的模型,并只在推断时承担高计算代价(Ranzato et al., 2007b;Jarrett et al., 2009;Kavukcuoglu et al., 2010;Coates et al., 2013)。这种方法在 2007–2013 年左右很流行,当时标注数据集较小、计算能力也更受限。如今,大多数卷积网络都以纯监督方式训练,每次训练迭代都对整个网络做完整的前向和反向传播。
与其它无监督预训练方法一样,要分辨这种方法的种种好处究竟源自何处仍然困难。无监督预训练相对监督训练可能提供某种正则化,也可能只是因为学习规则的计算代价更低,从而允许我们训练大得多的架构。
9.10 卷积网络的神经科学基础(The Neuroscientific Basis for Convolutional Networks)
卷积网络也许是受生物学启发的人工智能最成功的故事。虽然卷积网络也曾受许多其它领域指导,但神经网络的一些关键设计原则确实取自神经科学。
卷积网络的历史始于远早于相关计算模型发展的神经科学实验。神经生理学家 David Hubel 和 Torsten Wiesel 合作多年,确定了许多关于哺乳动物视觉系统如何工作的最基本的事实(Hubel and Wiesel, 1959, 1962, 1968)。他们的成就最终获得诺贝尔奖的认可。他们对当代深度学习模型影响最大的发现基于记录猫脑中单个神经元的活动。他们观察了猫脑中神经元如何对投射在猫面前屏幕上精确位置的图像作出反应。他们的重大发现是:早期视觉系统中的神经元对非常特定的光模式(例如精确朝向的光条)反应最强,而对其它模式几乎无反应。
他们的工作帮助刻画了脑功能的许多方面,这些方面超出了本书的范围。从深度学习的视角,可以聚焦于脑功能的一个简化卡通式描述。
在这个简化描述中,作者聚焦于脑中称为 V1(也称初级视觉皮层)的部分。V1 是脑内开始对视觉输入执行显著高级处理的第一块区域。在这个卡通式描述中,图像由进入眼睛并刺激视网膜(眼后的光敏组织)的光形成。视网膜中的神经元对图像做一些简单预处理,但不显著改变其表示方式。图像随后通过视神经和称为外侧膝状体核的脑区。就本书关心的范围而言,这两个解剖区域的主要作用仅仅是把信号从眼睛传到位于头后部的 V1。
卷积网络层被设计用来刻画 V1 的三个性质:
-
V1 按空间图排列。它实际上具有二维结构,与视网膜上的图像结构相呼应。例如到达视网膜下半部分的光只影响 V1 中对应的一半。卷积网络通过让特征用二维图定义来刻画这一性质。
-
V1 包含许多简单细胞。简单细胞的活动在一定程度上可被刻画为图像在一个小的、空间局部化的感受野上的线性函数。卷积网络的检测器单元被设计为模拟简单细胞的这些性质。
-
V1 还包含许多复杂细胞。这些细胞对类似于简单细胞所检测的特征作出反应,但复杂细胞对特征位置的微小偏移保持不变。这启发了卷积网络的池化单元。复杂细胞还对某些光照变化保持不变,这种不变性无法仅通过对空间位置做池化来捕捉。这些不变性启发了卷积网络中的一些跨通道池化策略,例如 maxout 单元(Goodfellow et al., 2013a)。
虽然对 V1 了解最多,但一般认为同样的基本原则适用于视觉系统的其它区域。在视觉系统的这个卡通式描述中,"先检测、再池化"的基本策略在我们深入大脑的过程中被反复应用。随着经过脑的多个解剖层,最终会发现对某些特定概念有反应、且对输入的许多变换保持不变的细胞。这些细胞被昵称为"祖母细胞"——其思想是一个人可能有一个神经元在看到祖母的图像时激活,无论她出现在图像的左侧还是右侧、无论图像是她脸的特写还是她整个身体的远景、无论她是被明亮照射还是在阴影中,等等。
这些祖母细胞被证明确实存在于人脑中,在称为内侧颞叶的区域(Quiroga et al., 2005)。研究者测试了单个神经元是否会对名人的照片作出反应。他们发现了后来被称为"Halle Berry 神经元"的细胞:一个被 Halle Berry 这一概念激活的个体神经元。这个神经元在一个人看到 Halle Berry 的照片、Halle Berry 的画像、甚至看到包含"Halle Berry"文字时都会发放。当然,这与 Halle Berry 本人无关;其它神经元对 Bill Clinton、Jennifer Aniston 等的存在作出反应。
这些内侧颞叶神经元比现代卷积网络更一般化——后者不会自动泛化到在阅读名字时识别一个人或物体。卷积网络最后一层特征最接近的脑区是称为下颞叶皮层(IT)的区域。当观察一个物体时,信息流经视网膜、经 LGN、到 V1、再到 V2、再到 V4、再到 IT。这一过程发生在扫视物体的最初 100 ms 内。若允许一个人继续看该物体更长时间,信息会开始反向流动,因为大脑使用自顶向下的反馈更新较低层脑区的激活。但若打断人的注视,只观察最初 100 ms 大致前馈激活所产生的发放率,那么 IT 被证明与卷积网络非常相似。卷积网络可以预测 IT 的发放率,并在物体识别任务上与(时间受限的)人表现得非常相似(DiCarlo, 2013)。
尽管如此,卷积网络和哺乳动物视觉系统之间仍有许多差别。其中一些差别对计算神经科学家而言是众所周知的,但超出了本书的范围。其它一些差别尚不为人知,因为关于哺乳动物视觉系统如何工作的许多基本问题仍未得到解答。作为简要清单:
-
人眼大部分分辨率很低,只有一小块称为中央凹(fovea)的区域例外。中央凹只观察大约与手臂长处伸直时拇指甲大小相当的区域。虽然我们感觉好像能以高分辨率看到整个场景,但这是一种由大脑潜意识部分拼接几次小区域瞥视而产生的错觉。大多数卷积网络实际接收的是大尺寸全分辨率照片作为输入。人脑通过若干称为扫视(saccades)的眼动来瞥见场景中视觉上最显著或与任务最相关的部分。把类似的注意力机制纳入深度学习模型是一个活跃研究方向。在深度学习语境下,注意力机制在自然语言处理中最为成功(12.4.5.1 节)。已有若干带中央凹机制的视觉模型被开发出来,但迄今为止尚未成为主流方法(Larochelle and Hinton, 2010;Denil et al., 2012)。
-
人视觉系统与许多其它感觉(如听觉)以及情绪、思维等因素整合在一起。卷积网络至今仍是纯视觉的。
-
人视觉系统做的远不止识别对象。它能理解整个场景,包括许多对象以及对象之间的关系,并处理我们身体与世界接口所需的三维几何信息。卷积网络已被应用于其中一些问题,但这些应用仍处于起步阶段。
-
即使是 V1 这样简单的脑区,也深受来自更高层的反馈影响。反馈在神经网络模型中已被广泛探索,但尚未被证明能带来有说服力的改进。
-
虽然前馈 IT 发放率捕捉到的许多信息与卷积网络特征相同,但尚不清楚中间计算有多相似。大脑很可能使用非常不同的激活函数和池化函数。单个神经元的激活很可能不能被单一线性滤波器响应很好地刻画。Rust et al. (2005) 的一个近期 V1 模型为每个神经元涉及多个二次滤波器。实际上我们对"简单细胞"和"复杂细胞"的卡通图景可能创造了一种并不存在的区分;简单细胞和复杂细胞可能本就是同一种细胞,只是它们的"参数"使其呈现出从"简单"到"复杂"的连续行为。
值得一提的是,神经科学对如何训练卷积网络告诉我们的相对较少。具有跨多个空间位置共享参数的模型结构可以追溯到视觉的早期连接主义模型(Marr and Poggio, 1976),但这些模型没有使用现代反向传播算法和梯度下降。例如 Neocognitron(Fukushima, 1980)包含了现代卷积网络的大多数模型架构设计元素,但依赖一种逐层无监督聚类算法。
Lang and Hinton (1988) 引入了用反向传播训练时延神经网络(TDNN)。用现代术语说,TDNN 是应用于时间序列的一维卷积网络。在这些模型上应用反向传播并不受任何神经科学观察启发,被一些人认为是生物学上不可信的。在基于反向传播成功训练 TDNN 之后,(LeCun et al., 1989)通过把同样的训练算法应用到应用于图像的二维卷积,发展出了现代卷积网络。
至此作者描述了简单细胞大致是线性的、对某些特征有选择性,复杂细胞更非线性、对这些简单细胞特征的某些变换保持不变,以及在选择性与不变性之间交替的层堆叠可以为非常特定的现象产出祖母细胞。但作者尚未精确描述这些个体细胞检测什么。在一个深度非线性网络中,理解单个细胞的功能可能很困难。第一层的简单细胞更容易分析,因为它们的响应由线性函数驱动。在人工神经网络中,可以直接显示卷积核的图像,看卷积层对应通道响应什么。在生物神经网络中,无法访问权重本身;改为在神经元内部插入电极,在动物视网膜前显示若干白噪声图像样本,并记录这些样本如何引起神经元激活。然后可以对这些响应拟合线性模型,以获得神经元权重的近似。这种方法称为反向相关(reverse correlation,Ringach and Shapley, 2004)。
反向相关表明大多数 V1 细胞的权重可以由 Gabor 函数描述。Gabor 函数描述图像在二维点上的权重。可以把图像视为二维坐标的函数 \(I(x,y)\)。同样,可以把简单细胞视为在由一组 \(x\) 坐标 \(X\) 和一组 \(y\) 坐标 \(Y\) 定义的一组位置处对图像采样,并对同样是位置函数的权重 \(w(x,y)\) 加权。从这个视角看,简单细胞对图像的响应为
具体而言,\(w(x,y)\) 取 Gabor 函数的形式:
其中
这里 \(\alpha,\beta_x,\beta_y,f,\phi,x_0,y_0,\tau\) 是控制 Gabor 函数性质的参数。图 9.18 展示了这些参数取不同值时 Gabor 函数的一些示例。
参数 \(x_0,y_0,\tau\) 定义一个坐标系。把 \(x,y\) 平移并旋转成 \(x',y'\)。具体而言,简单细胞会对以 \((x_0,y_0)\) 为中心的图像特征作出反应,并会沿着与水平方向成 \(\tau\) 弧度的直线上的亮度变化作出反应。
把 \(w\) 视为 \(x'\) 和 \(y'\) 的函数,它会对沿 \(x'\) 轴的亮度变化作出反应。它有两个重要因子:一个高斯函数,一个余弦函数。
高斯因子 \(\alpha\exp(-\beta_x x'^2-\beta_y y'^2)\) 可被视为一个门控项,确保简单细胞只对 \(x'\) 和 \(y'\) 都接近零(即接近细胞感受野中心)的值作出反应。尺度因子 \(\alpha\) 调节简单细胞响应的总幅度,而 \(\beta_x\) 和 \(\beta_y\) 控制感受野衰减的速度。
余弦因子 \(\cos(f x'+\phi)\) 控制简单细胞对沿 \(x'\) 轴的亮度变化如何响应。参数 \(f\) 控制余弦的频率,\(\phi\) 控制其相位偏移。
总之,这个关于简单细胞的卡通图景意味着:简单细胞对特定方向上特定空间频率的亮度、特定位置作出反应。当图像中亮度的波形与权重同相时,简单细胞最兴奋——这发生在图像在权重为正处亮、权重为负处暗时。当亮度的波形与权重完全反相时,简单细胞最抑制——这发生在图像在权重为正处暗、权重为负处亮时。
复杂细胞的卡通图景是:它计算两个简单细胞响应所组成的二维向量的 L2 范数:\(c(I)=\sqrt{s_0(I)^2+s_1(I)^2}\)。一个重要的特殊情形出现在 \(s_1\) 与 \(s_0\) 拥有除 \(\phi\) 外的所有相同参数、且 \(\phi\) 被设为使 \(s_1\) 与 \(s_0\) 相差四分之一周期时。在此情形下 \(s_0\) 和 \(s_1\) 构成一对正交对(quadrature pair)。以此定义的复杂细胞会在经高斯重新加权的图像 \(I(x,y)\exp(-\beta_x x'^2-\beta_y y'^2)\) 在方向 \(\tau\) 上、位置 \((x_0,y_0)\) 附近包含频率为 \(f\) 的高幅正弦波时作出反应,与该波的相位偏移无关。换言之,复杂细胞对图像在方向 \(\tau\) 上的小幅平移、或对图像取反(黑白互换)保持不变。
神经科学与机器学习之间一些最引人注目的对应来自把机器学习模型学到的特征与 V1 所使用的特征做可视化对比。Olshausen and Field (1996) 表明,一种简单的无监督学习算法——稀疏编码——学到的特征具有与简单细胞感受野类似的特征。此后,人们发现当应用于自然图像时,极其多样的统计学习算法都能学到具有 Gabor 函数形式的特征。这包括大多数深度学习算法,它们在第一层学到这些特征。图 9.19 给出了一些示例。因为如此多样的学习算法都能学到边缘检测器,所以很难仅基于所学特征就断定任何特定学习算法是脑的"正确"模型(尽管若某算法应用于自然图像后没学到任何边缘检测器,那显然是个不好的信号)。这些特征是自然图像统计结构的重要组成部分,可以被多种不同的统计建模方法恢复。Hyvärinen et al. (2009) 综述了自然图像统计领域。
9.11 卷积网络与深度学习的历史(Convolutional Networks and the History of Deep Learning)
卷积网络在深度学习史上扮演了重要角色。它们是通过研究大脑获得的洞察成功应用于机器学习的关键案例之一。它们也是最早表现良好的深度模型之一,远早于任意深度模型被认为可行。卷积网络还是最早解决重要商业应用的神经网络之一,至今仍处于深度学习商业应用的前沿。例如在 1990 年代,AT&T 的神经网络研究小组开发了一种用于读取支票的卷积网络(LeCun et al., 1998b)。到 1990 年代末,NEC 部署的该系统读取了美国所有支票的 10% 以上。后来微软部署了若干基于卷积网络的 OCR 和手写识别系统(Simard et al., 2003)。关于这些应用以及卷积网络的更多现代应用,详见第 12 章。关于截至 2010 年的卷积网络历史更深入的论述,可参见 LeCun et al. (2010)。
卷积网络也被用来赢得许多比赛。当前的深度学习商业兴趣强度始于 Krizhevsky et al. (2012) 赢得 ImageNet 物体识别挑战赛,但卷积网络在此前几年就已赢得影响力较小的其它机器学习和计算机视觉比赛。
卷积网络是用反向传播训练的最早可工作的深度网络之一。卷积网络成功而通用反向传播网络被认为失败的原因并不完全清楚。可能只是因为卷积网络比全连接网络计算效率更高,因此更容易对它们做多次实验、调整实现和超参数。更大的网络似乎也更容易训练。有了现代硬件,大的全连接网络在许多任务上看起来表现得相当不错,即使使用的数据集和激活函数就是当年人们认为全连接网络表现不好的那些。神经网络成功的主要障碍也许是心理上的(实践者并不预期神经网络能工作,因此他们并未认真努力使用神经网络)。无论如何,卷积网络在几十年前就表现良好是幸运的。在许多方面,它们为深度学习的其余部分擎起了火把,为神经网络被广泛接受铺平了道路。
卷积网络提供了一种把神经网络专门化以处理具有清晰网格结构拓扑的数据、并把这种模型扩展到很大规模的方法。这种方法在二维、图像拓扑上最为成功。要处理一维、序列数据,作者接下来转向神经网络的另一种强大专门化:循环神经网络。
本章个人批注
本章是 Goodfellow 等人 2016 年教材对卷积网络的系统综述,写作上呈现的是教科书式的"定义—动机—变体—应用"四段式。9.1 节从传感器加权平均的例子引入离散卷积,再指出机器学习库实际上多用互相关;9.2 节把卷积的三个核心性质(稀疏交互、参数共享、平移等变)讲得最清楚;9.3 节的池化作为"无限强先验"在 9.4 节进一步抽象化,这一节其实与第 5 章的先验概念呼应;9.5 节把实践中遇到的卷积变体(多通道、步幅、零填充、局部连接、平铺卷积、转置卷积)一次性铺开,是阅读时最容易"迷路"的章节;9.6–9.9 是工程与训练策略;9.10–9.11 是历史与神经科学根基。
读这一章时我特别留意几件事。第一,9.1 节末尾对"互相关与卷积"的处理方式——作者明确承认实践与数学定义有出入、并选择跟随社区惯例——这是阅读后续章节(例如 9.5 节的转置卷积)所必需的术语约定。第二,9.5 节关于零填充"有效—相同—完全"三种极端的对比,是为了在"网络深度受限"与"边界代表性不足"之间找平衡点,这与第 8 章的优化约束呼应——架构选择本身也是一种归纳偏置。第三,9.10 节把"祖母细胞"作为视觉系统高层不变性的现象学比喻,但随即在"差别清单"中明确说大脑并非简单细胞+复杂细胞二分的层级结构,这部分内容与近年关于 transformer 是否能取代 CNN 的争论有现实关联:CNN 的归纳偏置(局部、平移等变)正是其在数据有限时占优的原因,也是其在某些任务上输给 transformer 的原因。第四,9.11 节关于"卷积网络成功可能只是因为更容易做实验"的反思——这是整本书中相当坦诚的一节,承认 1990 年代神经网络"被认为失败"有相当部分是心理因素,这是阅读时值得记住的方法论提醒。
源材料中我注意到几处需要读者自己判断的地方:(a) 9.5 节公式 9.10 用模运算 % 表示循环核索引,作者写"\((t+1)\%t=1\)",但 \(t\%t=0\) 与"循环回 1"的描述略有歧义(实际应理解为 \((t+1)\bmod t\) 的结果是从 1 开始计数的位置),这是该公式常被引用时容易出错的地方。(b) 9.7 节对"卷积只对'同类事物的不同观测数量'有意义"的限制,源文用大学申请 vs. 成绩+考试成绩的例子说明,这一条在迁移学习/多模态场景中仍然成立——CNN 的归纳偏置假设输入通道在结构上对称。(c) 9.10 节提到"CNN 可预测 IT 发放率"引用 DiCarlo (2013),作者写作时显然没预见到 2020 年代视觉 transformer(ViT)在 ImageNet 上超越 CNN 这一历史走向,因此 9.11 节末尾"卷积网络是最成功"的说法需要放在 2016 年的时点上理解。
整体阅读节奏上,9.5 节(约 490 行源文)信息密度最大,是这一章的工程核心;9.10 节(约 297 行)次之,需要读者熟悉 Gabor 函数和感受野这些视觉神经科学的基本概念;其它节相对短,可以快速通过。
与上下章的衔接(一段话)
第 9 章在全书结构中处于"专门化神经网络架构"系列的开篇。在它之前,第 8 章讨论了深度模型的优化——训练深度网络时遇到的困难(局部极小、梯度消失、病态条件等)以及改进优化的策略;第 8 章的优化讨论是一般性的,没有绑定到具体架构。第 9 章则是把"专门化架构"的第一个具体例子——卷积网络——完整展开,从卷积的数学定义出发,到稀疏连接、参数共享、平移等变等结构性归纳偏置,再到池化、多通道、零填充、转置卷积这些工程细节,最后以神经科学根基和深度学习史收尾。读完本章后,读者应当具备为图像、视频、频谱、体数据等多种网格结构数据设计卷积网络架构的能力,并理解这种归纳偏置为何对小样本场景特别有效。第 10 章紧接着转向循环神经网络,这是处理序列数据(一维网格)的对应专门化架构;因此第 9 章实际上为"处理网格数据"这一类架构奠定了范式,第 10 章的循环网络、第 11 章的架构选择指导都建立在这套范式之上。