这里回顾dlsys第十讲,本讲内容是卷积网络。

课程主页:

大纲

  • 深度网络中的卷积运算符;
  • 实用卷积的要素;
  • 微分卷积;

深度网络中的卷积运算符

全连接神经网络的问题

  • 到目前为止,我们已经考虑了将输入图像视为向量。
  • 当我们尝试处理更大的图像时,这会产生一个实际问题:256x256 RGB 图像⟹~200K维输入⟹映射到1000维隐藏向量需要200M参数(对于每一层)。
  • 没有捕捉到我们期望在图像中具有的任何“直观”不变性(例如,将图像移动一个像素会导致非常不同的下一层)。

卷积如何“简化”深度网络

  • 卷积结合了两种非常适合处理图像的想法;
    • 要求层与层之间的激活仅以“局部”方式发生,并将隐藏层本身视为空间图像;
    • 在所有空间位置共享权重;

卷积的优势

  • 大幅减少参数数量;
    • 256x256 灰度图像 ⟹ 256x256 单通道隐藏层:从全连接网络中的40亿个参数到3x3卷积中的9个参数;
  • 捕获(一些)“自然”不变性;
    • 将输入图像向右移动一个像素会使得隐藏单元“图像”向右移动一个像素;

卷积的细节

卷积是许多计算机视觉和图像处理算法中的基本操作。想法是在图像上“滑动”$k\times k$的权重$w$(称为内核大小为$k$的滤波器)以产生新图像,写作$y=z * w$。

图像处理中的卷积

卷积(通常带有预先指定的滤波器)是许多计算机视觉应用程序中的常见操作,卷积网络只是学习滤波器:

深度网络中的卷积

深度网络中的卷积实际上总是多通道卷积,将多通道(例如 RGB)输入映射到多通道隐藏单元:

  • $x \in \mathbb{R}^{h \times w \times c_{i n}}$表示$c_{in}$通道,尺寸$h\times w$的图像输入;
  • $z \in \mathbb{R}^{h \times w \times c_{\text {out }}}$表示$c_{out}$通道,尺寸$h\times w$的图像输出;
  • $W \in \mathbb{R}^{c_{i n} \times c_{\text {out }} \times k \times k}$(4阶张量)表示卷积滤波器;

多通道卷积包含每个输入输出通道对的卷积滤波器,单个输出通道是所有输入通道的卷积之和:

矩阵向量形式的多通道卷积

有一种更直观的方式来思考多通道卷积:它们是传统卷积的推广,其中标量乘法被矩阵向量乘积所取代:

卷积的要素

Padding

  • 挑战:“朴素”卷积产生比输入图像更小的输出。
  • 解决方案:对于(奇数)内核大小$k$,在所有边上用$(k-1)/2$个零填充输入,导致输出与输入大小相同。
    • 有循环填充、平均值填充等变体;

Strided Convolutions / Pooling

  • 挑战:卷积在每一层保持相同的输入分辨率,不允许以不同的“分辨率”表示。
  • 解决方案#1:使用最大或平均池化层来聚合信息;
  • 解决方案#2:以 >1的步长在图像上滑动卷积滤波器;

Grouped Convolution

  • 挑战:对于大量的输入/输出通道,滤波器仍然可以有大量的权重,可能导致过度拟合+计算缓慢;
  • 解决方案:将通道组合在一起,以便输出中的通道组仅依赖于输入中的相应通道组(等价地,强制滤波器权重矩阵为分块对角);

Dilation

  • 挑战:每个卷积都具有相对较小的感受野大小;
  • 解决方案:扩张(展开)卷积滤波器,使其覆盖更多图像(另请参阅:我们将讨论的后续架构,如自注意力层); 请注意,再次获取相同大小的图像需要添加更多填充;

对卷积求微分

微分卷积需要什么?

回想一下,为了将任何操作集成到深度网络中,我们需要能够乘以它的偏导数(伴随操作)。

如果我们定义操作:

那么如下伴随如何计算:

复习微分矩阵乘法

让我们考虑矩阵向量乘积运算的更简单情况:

那么$\frac{\partial z}{\partial x}=W$,所以我们需要计算伴随积:

换句话说,对于矩阵向量乘法运算$Wx$,计算向后传递需要乘以转置$W^T$。
那么什么是卷积的“转置”?

将卷积视为矩阵乘法:版本1

要回答这个问题,先考虑使用一维卷积:

我们可以将一维卷积$x* w$(例如,使用零填充)写为矩阵乘法$\widehat W x$:

卷积的伴随

那么我们如何乘以转置$\widehat{W}^T$呢?
如上一张幻灯片所示,非常简单:

但是请注意,操作$\widehat{W}^Tv$表示和翻转的滤波器$[w_3, w_2, w_1]$做卷积。⟹ 伴随运算符$\bar{v} \frac{\partial \operatorname{conv}(x, W)}{\partial x}$只需要将$\bar{v}$与翻转的$W$进行卷积即可!

将卷积视为矩阵乘法:版本2

那么另一个伴随$\bar{v} \frac{\partial \operatorname{conv}(x, W)}{\partial W}$如何计算呢?

对于这一项,观察到我们也可以将卷积写成矩阵向量乘积,将滤波器视为向量:

所以伴随需要乘以这个基于$x$的矩阵的转置(实际上是一个比较实用的方法,见未来关于“im2col”操作的讲座)。