卷积网络,也叫卷积神经网络(CNN),是一种专门依赖处理具有类似网络结构的数据的神经网络。卷积是一种特殊的线性运算。卷积网络是指那些至少在网络的一层中使用卷积运算来代替一般的矩阵乘法运算的神经网络。
在通常形式中,卷积是对两个变体函数的一种数学运算。
假设我们正在用激光传感器追踪一艘宇宙飞船的位置。我们的机关传感器给出一个单独的输出x(t),表示宇宙飞船在时刻t的位置。x和t都是实值的,这意味着我们可以在任意时刻从传感器中读出飞船的位置。
现在假设我们的传感器感受到一定程度的噪声干扰。为了得到飞船位置的低噪声估计,我们对得到的测量结果进行平均。显然,时间上越近的测量结果越相关,所以我们采用一种加权平均的方法,对于最近的测量结果赋予更高的权重。我们可以采用一个加权函数w(a)来实现,其中a表示测量结果距当前时刻的时间间隔。如果我们对任意时刻都采用这种加权平均的操作,就得到一个新的对于飞船位置的平滑估计函数s:
这种运算就叫卷积。卷积运算通常用星号表示:
在卷积网络的术语中,卷积的第一个参数(函数x)通常叫做输入,第二个参数(函数w)叫做核函数。输出有时被称做特征映射。
下图演示了一个在2维张量的卷积运算的例子。
任何一个使用矩阵乘法但是并不依赖矩阵结构的特殊性质的神经网络算法,都适用于卷积运算,并且不需要对神经网络做出大的修改。
卷积运算通过三个重要的思想来帮助改进机器学习系统:稀疏交互、参数共享、等变表示。另外,卷积提供了一种处理大小可变的输入的方法。下面将会介绍。
卷积网络具有稀疏交互(也叫稀疏连接或者稀疏权重)的特征。例如,当处理一张图像时,输入的图像可能包含成千上万个像素点,但是我们可以通过只占几个到上百个像素点来检测一些小的有意义的特征,例如图像边缘。这意味着我们需要存储的参数更少,不仅减少了模型的存储需求,而且提高了他的统计效率。稀疏的图形化解释如图9.2和图9.3所示。在深度卷积网络中,处在网络深层的单元可能与绝大部分输入是间接交互的,如图9.4所示。这允许网络可以通过只描述稀疏交互的基石来高效地描述多个变量的复杂交互。
参数共享是指在一个模型的多个函数中使用相同的参数。下图演示了参数共享时如何实现的。
一个实际例子,图9.6说明了稀疏连接和参数共享时如何显著提高线性函数在一张图像上进行边缘检测的效率。
卷积网络中一个典型层包含三级,如下图所示。在第一级中,这一层并行地计算多个卷积产生一组线性激活响应。在第二级中,每一个线性激活响应将会通过一个非线性的激活函数,例如整流线性激活函数。这一级有时也被称为探测级。在第三级中,我们使用池化函数来进一步调整这一层的输出。
使用池化可以看作是增加了一个无限强的先验:这一层学得的函数必须具有对少量平移的不变性。当这个假设成立是,池化可以极大地提高网络的统计效率。
对空间区域进行池化产生了平移不变性,但当我们对分离参数的卷积输出进行池化时,特征能够学得应该对哪种变换具有不变性,如图9.9所示。
先验被认为是强或者弱取决于先验中概率密度的集中程度。一个无限强的先验需要对一些参数的概率置零并且完全禁止对这些参数赋值,无论数据对于这些参数的值给出了多大的支持。
使用池化时一直无限强的先验:么讴歌单元都具有对少量平移的不变性。把神经网络当作一个具有无限强先验的全连接网络来实现会导致极大的计算浪费。但把卷积神经网络想成具有无限强先验的全连接网络可以帮助我们更好地洞察卷积神经网络是如何工作的。其中一个关键的洞察是卷积和池化可能导致欠拟合。另一个关键的洞察是当我们比较卷积模型的统计学习表现是,只能以基准中的其他卷积模型作为比较的对象。