背景
卷积网络(convolutional network)(LeCun, 1989),也叫做卷积神经网络(convolutional neural network, CNN),是一种专门用来处理具有类似网格结构的数据的神经网络。
假设我们正在用激光传感器追踪一艘宇宙飞船的位置。我们的激光传感器给出一个单独的输出x(t),表示宇宙飞船在时刻t 的位置。x 和t 都是实值的,这意味着我们可以在任意时刻从传感器中读出飞船的位置。
现在假设我们的传感器受到一定程度的噪声干扰。为了得到飞船位置的低噪声估计,我们对得到的测量结果进行平均。显然,时间上越近的测量结果越相关,所以我们采用一种加权平均的方法,对于最近的测量结果赋予更高的权重。我们可以采用一个加权函数w(a) 来实现,其中a 表示测量结果距当前时刻的时间间隔。如果我们对任意时刻都采用这种加权平均的操作,就得到了一个新的对于飞船位置的平滑估计函数s:
这种运算就叫做卷积(convolution)。卷积运算通常用星号表示:
激光传感器在每个瞬间反馈测量结果的想法是不切实际的。如果我们假设x 和w 都定义在整数时刻t 上,就可以定义离散形式的卷积:
在机器学习的应用中,输入通常是多维数组的数据,我们可以通过对有限个数组元素的求
和来实现无限求和。
卷积是可交换的(commutative),我们可以等价地写作:
下图演示了一个在2 维张量上的卷积运算(没有对核进行翻转)的例子。
动机
卷积运算通过三个重要的思想来帮助改进机器学习系统: 稀疏交互(sparse interactions)、参数共享(parameter sharing)、等变表示(equivariant representations)。另外,卷积提供了一种处理大小可变的输入的方法。我们下面依次介绍这些思想。
稀疏交互
稀疏连接,对每幅图从下往上看。我们强调了一个输入单元x3 以及在s 中受该单元影响的输出单元。(上) 当s 是由核宽度为3 的卷积产生时,只有三个输出受到x 的影响2。(下) 当s是由矩阵乘法产生时,连接不再是稀疏的,所以所有的输出都会受到x3 的影响。
参数共享
黑色箭头表示在两个不同的模型中使用了特殊参数的连接。(上) 黑色箭头表示在卷积模型中对3 元素核的中间元素的使用。因为参数共享,这个单独的参数被用于所有的输入位置。(下) 这个单独的黑色箭头表示在全连接模型中对权重矩阵的中间元素的使用。这个模型没有使用参数共享,所以参数只使用了一次。
池化
卷积网络中一个典型层包含三级。在第一级中,这一层并行地计算多个卷积产生一组线性激活响应。在第二级中,每一个线性激活响应将会通过一个非线性的激活函数,例如整流线性激活函数。这一级有时也被称为探测级(detectorstage)。在第三级中,我们使用池化函数(pooling function)来进一步调整这一层
的输出。
池化函数使用某一位置的相邻输出的总体统计特征来代替网络在该位置的输出。例如, 最大池化(max pooling)函数(Zhou and Chellappa, 1988) 给出相邻矩形区域内的最大值。其他常用的池化函数包括相邻矩形区域内的平均值、L2 范数以及基于据中心像素距离的加权平均函数。
Reference: LeCun, Yann, Yoshua Bengio, and Geoffrey Hinton. “Deep learning.” nature 521.7553 (2015): 436.