三、基本卷积的变体

3.1 局部连接

  1. 局部连接与卷积很类似:局部连接也是连接受限的,但是每个连接都有自己的权重。

    即:局部连接实现了稀疏交互,但是没有实现参数共享。

    三、基本卷积的变体 - 图1

  2. 假设局部连接的权重矩阵为一个 6 维的张量 三、基本卷积的变体 - 图2 ,其元素为 三、基本卷积的变体 - 图3, 其中:三、基本卷积的变体 - 图4 为输出的通道;三、基本卷积的变体 - 图5 为输出通道中的位置;三、基本卷积的变体 - 图6 为输入的通道;三、基本卷积的变体 - 图7 为输入通道中的位置。

    则局部连接可以表示为:

    三、基本卷积的变体 - 图8

    当权重共享时, 三、基本卷积的变体 - 图9 ,此时局部连接操作退化到卷积操作。

  3. 局部连接也称作非共享卷积,因为它并不横跨位置来共享参数。

    • 与基本卷积相比,权重参数由 三、基本卷积的变体 - 图10

      这说明 三、基本卷积的变体 - 图11 中,不同位置的输出的计算过程中,采用了不同的权重。这意味着局部连接不满足输入的等变表示。

    • 与全连接相比,局部连接实现了稀疏交互。

  4. 如果知道特征是一小部分区域的函数,而不是整个区域的函数时,局部连接层很有用。此时只需要处理部分输入即可。如:如果需要辨别一张图片是否人脸图像,则只需要在图像的下部中央部分寻找即可。

    卷积也可以处理局部特征,但是对于不满足平移不变性的特征,卷积层无能为力。此时需要使用局部连接层。

    在图片中识别是否存在人脸,这满足平移不变性,因此也可以使用卷积来处理。

  5. 有时候,可以进一步限制卷积层或者局部连接层。如:限制输出的通道 三、基本卷积的变体 - 图12 仅仅利用了一部分输入通道(而不是全部输入通道) 的数据。

    这种方案减少了通道之间的连接,使得模型的参数更少,降低了存储消耗,减少了计算量。

3.2 拼接卷积

  1. 拼接卷积tiled convolution 对卷积和局部连接进行了折中:学习一组核,使得当核在空间移动时,它们可以循环利用。

    三、基本卷积的变体 - 图13

    • 拼接卷积在相邻的位置上拥有不同的过滤器,就像局部连接层一样。
    • 拼接卷积每隔一定的位置,使用相同的过滤器,就像卷积层一样。
    • 拼接卷积的参数仅仅会增长常数倍,常数就是过滤器集合的大小。
  2. 假设拼接卷积的权重矩阵为一个 6 维的张量 三、基本卷积的变体 - 图14 ,其元素为 三、基本卷积的变体 - 图15, 其中:三、基本卷积的变体 - 图16 为输出的通道;三、基本卷积的变体 - 图17 为输出通道中的位置;三、基本卷积的变体 - 图18 为输入的通道;三、基本卷积的变体 - 图19 为输入通道中的位置。

    则拼接卷积可以表示为:

    三、基本卷积的变体 - 图20

    这里百分号是取摸运算,三、基本卷积的变体 - 图21 为不同的核的数量(它也就是核的轮换周期)。

    • 如果 三、基本卷积的变体 - 图22 等于输入的尺寸,则拼接卷积退化成局部连接。
    • 如果 三、基本卷积的变体 - 图23 等于 1 ,则拼接卷积退化成卷积。
  3. 通常在卷积层会引入非线性运算,而在非线性运算中,需要加入偏置项。

    • 对于局部连接,每个输入单元都有各自的偏置。

    • 对于拼接卷积,偏置项通过与核一样的拼接模式来共享。

    • 对于常规卷积,通常在输入通道级别上共享偏置。即:同一个通道使用一个偏置项。

      如果输入是固定大小的,也可以在每个输入位置上学习一个单独的偏置。其好处是:允许模型校正输入图像中不同位置的差异。

3.3 分组卷积

  1. 分组卷积 Group convolution :将多个卷积核拆分为分组,每个分组单独执行一系列运算之后,最终在全连接层再拼接在一起。

    • 通常每个分组会在单独的GPU 中训练,从而利用多GPU 来训练。

    • 分组卷积的重点不在于卷积,而在于分组:在执行卷积之后,将输出的feature map 执行分组。然后在每个组的数据会在各个GPU 上单独训练。

      对卷积的输出feature map 分组,等价于在卷积过程中对卷积核进行分组。

    三、基本卷积的变体 - 图24

  2. 分组卷积在网络的全连接层才进行融合,这使得每个GPU 中只能看到部分通道的数据,这降低了模型的泛化能力。

    如果每次分组卷积之后,立即融合卷积的结果则可以解决这个问题。

  3. 分组卷积降低了模型的参数数量以及计算量。

    假设输入feature map 具有 三、基本卷积的变体 - 图25 的输入通道、宽/高分别为 三、基本卷积的变体 - 图26,假设卷积核的宽/高分别为 三、基本卷积的变体 - 图27 ,有 三、基本卷积的变体 - 图28 个卷积核。则:

    • 参数数量:三、基本卷积的变体 - 图29
    • 计算量(以一次乘-加计算为单位):三、基本卷积的变体 - 图30。 其中 三、基本卷积的变体 - 图31 分别为输出feature map 的宽/高

    假设采用分组卷积,将输入通道分成了 三、基本卷积的变体 - 图32 组,则分组之后:

    • 参数数量:三、基本卷积的变体 - 图33
    • 计算量(以一次乘-加计算为单位):三、基本卷积的变体 - 图34

    因此分组卷积的参数数量、计算量均为标准卷积计算的 三、基本卷积的变体 - 图35

    考虑到全连接层的参数数量在网络中占据主导地位,因此即使采取分组卷积,网络最终的参数数量的减小幅度不会很大。

    因此分组卷积主要降低的是计算量。

  4. 分组卷积最早在AlexNet 中出现。由于当时的硬件资源的限制,训练AlexNet 时卷积操作无法全部放在同一个GPU 中处理。因此,通过分组来在多个GPU 上分别处理,然后将多个GPU 的处理结果融合。

3.4 小卷积核替代

  1. AlexNet 中用到了一些非常大的卷积核,如11x11、5x5 等尺寸的卷积核。

    • 卷积核的尺寸越大,则看到的图片信息越多,因此获得的特征会越好。

      但是卷积核的尺寸越大,模型的参数数量会爆涨,不利于模型的深度的增加,计算量和存储量也大幅上升。

    • 卷积核的尺寸越小,模型的参数数量越少,模型可以越深。

      但是卷积核的尺寸太小,则只能看到图片的一个非常小的局部区域,获得的特征越差。

  2. 一种解决方案是:用多个小卷积层的堆叠来代替较大的卷积核。

    假设大卷积核的宽度是 三、基本卷积的变体 - 图36 ,则每经过一层,输出的宽度减少了 三、基本卷积的变体 - 图37 。假设希望通过 三、基本卷积的变体 - 图38 个宽度为 三、基本卷积的变体 - 图39 的小卷积核来代替,则为了保持输出的大小一致,需要满足:

    三、基本卷积的变体 - 图40

    • 三、基本卷积的变体 - 图41 时,即用尺寸为 3 的卷积核代替尺寸为 三、基本卷积的变体 - 图42 的卷积核时,有: 三、基本卷积的变体 - 图43

    • 如:用 2 个 3x3 的卷积核来代替1个 5x5 的卷积核。

      假设输入通道数为 三、基本卷积的变体 - 图44,输出通道数为 三、基本卷积的变体 - 图45 ,则5x5 卷积核的参数数量为 三、基本卷积的变体 - 图46

      而 2个 3x3 卷积核的参数数量为 三、基本卷积的变体 - 图47 ,是前者的 72% 。

    • 如果用 5 个 3x3 的卷积核来代替1个 11x11 的卷积核,则替代后的卷积核的参数数量是替代前的 37% 。

    三、基本卷积的变体 - 图48

  3. 用多个小卷积层的堆叠代替一个大卷积层的优点:

    • 可以实现与大卷积层相同的感受野。

    • 具有更大的非线性,网络表达能力更强。

      虽然卷积是线性的,但是卷积层之后往往跟随一个ReLU 激活函数。这使得多个小卷积层的堆叠注入了更大的非线性。

    • 具有更少的参数数量。

  4. 小卷积层堆叠的缺点是:加深了网络的深度,容易引发梯度消失等问题,从而使得网络的训练难度加大。

  5. 用多个小卷积层的堆叠代替一个大卷积层可以看作是一种正则化:要求大卷积核通过多个小卷积核进行分解(同时在小卷积层之间注入非线性)。

  6. 感受野:一个特定的CNN 输出单元在输入空间所受影响的区域。上图中,染色的区域为某个输出单元的感受野。

    • 一个感受野可以用中心位置和大小来表示。
    • 用多个小卷积核来代替大卷积核时,输出单元的感受野不会受到影响。
  7. 通常选择使用3x3 卷积核的堆叠:

    • 1x1 的卷积核:它无法提升感受野,因此多个1x1 卷基层的堆叠无法实现大卷积层的感受野。
    • 2x2 的卷积核:如果希望输入的feature map 尺寸和输出的feature map 尺寸不变,则需要对输入执行非对称的padding。此时有四种padding 方式,填充方式的选择又成了一个问题。
    • 3x3 的卷积核:可以提升感受野,对称性填充(不需要考虑填充方式),且尺寸足够小。

3.5 非对称卷积核

  1. 在卷积核分解过程中,还有一种分解方式:非对称卷积核分解,将nxn 卷积替换为1xn 卷积和nx1 卷积。

    三、基本卷积的变体 - 图49

  2. 非对称卷积核的分解有以下优点:

    • 感受野保持不变。

    • 节省计算成本,尤其是当n 较大时。

      假设输入通道数和输出通道数都为三、基本卷积的变体 - 图50 ,原始卷积nxn 的参数数量为:三、基本卷积的变体 - 图51

      假设非对称卷积的1xn 的输出通道数也是 三、基本卷积的变体 - 图52 ,则非对称分解时参数数量为: 三、基本卷积的变体 - 图53 。它是原始卷积的参数数量的 三、基本卷积的变体 - 图54

  3. Inception v2 论文中作者指出:对于较大的特征图 ,这种分解不能很好的工作;但是对于中等大小的特征图(尺寸在12~20 之间),这种分解效果非常好。

    因此非对称卷积分解通常用在较高的网络层。

3.6 多尺寸卷积核

  1. 图像中目标对象的大小可能差别很大。如下图所示,每张图像中狗占据区域都是不同的。

    由于信息区域的巨大差异,为卷积操作选择合适的卷积核尺寸就非常困难。

    • 信息分布更具有全局性的图像中,更倾向于使用较大的卷积核。如最最侧的图片所示。
    • 信息分布更具有局部性的图像中,更倾向于使用较小的卷积核。如最右侧的图片所示。

    三、基本卷积的变体 - 图55

  2. 一个解决方案是:分别使用多个不同尺寸的卷积核从而获得不同尺度的特征。然后将这些特征拼接起来。

    • Inception 系列的网络中,大量使用这种思想。

      在最初版本的Inception 结构中,一个输入图片会分别同时经过1x1,3x3,5x5 的卷积核的处理;得到的特征再组合起来。

    • 通过多种尺度的卷积核,无论感兴趣的信息区域尺寸多大,总有一种尺度的卷积核与之匹配。这样总可以提取到合适的特征。

    三、基本卷积的变体 - 图56

  3. 多尺寸卷积核存在一个严重的问题:参数数量比单尺寸卷积核要多很多,这就使得计算量和存储量都大幅增长。

3.7 1x1 卷积核

  1. 1x1 卷积并不是复制输入,它会进行跨通道的卷积。它有三个作用:

    • 实现跨通道的信息整合。

    • 进行通道数的升维和降维。

    • 在不损失分辨率的前提下(即:feature map 尺寸不变),大幅增加非线性。

      事实上1x1 卷积本身是通道的线性组合,但是通常会在1x1卷积之后跟随一个ReLU 激活函数。

    三、基本卷积的变体 - 图57

  2. 假设输入张量为 三、基本卷积的变体 - 图58,即:三、基本卷积的变体 - 图59 个通道、宽度为 三、基本卷积的变体 - 图60 、高度为 三、基本卷积的变体 - 图61

    • 如果图片直接通过一个宽度为 三、基本卷积的变体 - 图62,高度为 三、基本卷积的变体 - 图63 、输出通道为 三、基本卷积的变体 - 图64 的卷积层,则参数数量为:

      三、基本卷积的变体 - 图65

    • 如果图片先通过一个1x1、输出通道为 三、基本卷积的变体 - 图66 的卷积层,再经过一个 三、基本卷积的变体 - 图67、输出通道为 三、基本卷积的变体 - 图68 的卷积层;最后经过一个1x1、输出通道为 三、基本卷积的变体 - 图69 的卷积层。

      这里中间卷积层的输出通道不一定为 三、基本卷积的变体 - 图70 ,但是一定是一个比 三、基本卷积的变体 - 图71 小的数。其作用是起到了信息压缩的作用(类似于PCA 降维)。

      则参数数量为:

      三、基本卷积的变体 - 图72

    • 三、基本卷积的变体 - 图73 时(输入通道数与输出通道数接近),三、基本卷积的变体 - 图74 ,以及 三、基本卷积的变体 - 图75

      则二者参数的数量比例为:三、基本卷积的变体 - 图76 。因此后者的参数数量远远小于前者。

  3. 1x1 卷积层通常会形成瓶颈层bottleneck layer 。瓶颈层指的是网络中信息被压缩的层。

    • 输入feature map 中每个元素值代表某个特征,将所有图片在该feature map 上的取值扩成为矩阵:

      三、基本卷积的变体 - 图77

      其中 三、基本卷积的变体 - 图78 为样本的数量, 三、基本卷积的变体 - 图79 。即:行索引代表样本,列索引代表特征。所有特征由feature map 展平成一维得到。

      通常 三、基本卷积的变体 - 图80 ,则输入矩阵 三、基本卷积的变体 - 图81 的秩 三、基本卷积的变体 - 图82 。假设输入矩阵 三、基本卷积的变体 - 图83 的秩为 三、基本卷积的变体 - 图84

    • 不考虑1x1 卷积的非线性层,则1x1 卷积是输入特征的线性组合。输出 featuremap 以矩阵描述为:

      三、基本卷积的变体 - 图85

      其中 三、基本卷积的变体 - 图86

    • 信息膨胀过程:当 三、基本卷积的变体 - 图87 时,三、基本卷积的变体 - 图88 的容量要大于 三、基本卷积的变体 - 图89 的信息,因此所有的有效信息都可以得到保留。

    • 信息压缩过程:当 三、基本卷积的变体 - 图90 时, 三、基本卷积的变体 - 图91 的容量要小于 三、基本卷积的变体 - 图92 的信息,这时需要参考 三、基本卷积的变体 - 图93 的有效信息。

      三、基本卷积的变体 - 图94 的有效信息由矩阵 三、基本卷积的变体 - 图95 的秩 三、基本卷积的变体 - 图96 决定。

      • 当矩阵 三、基本卷积的变体 - 图97 是满秩时,即: 三、基本卷积的变体 - 图98 ,此时对 三、基本卷积的变体 - 图99 的任何压缩都会丢失有效信息。

      • 当矩阵 三、基本卷积的变体 - 图100 不是满秩时:

        • 三、基本卷积的变体 - 图101 非常小时, 三、基本卷积的变体 - 图102 的容量要小于 三、基本卷积的变体 - 图103 的有效信息,此时会导致有效信息丢失。
        • 三、基本卷积的变体 - 图104 较大时, 三、基本卷积的变体 - 图105 的容量要大于等于 三、基本卷积的变体 - 图106 的有效信息,此时不会丢失有效信息。这是1x1 卷积相当于线性降维。
    • 在前文提到的例子(示意图如下所示)中,输入feature map 先经过1x1 卷积的压缩,这会导致该段信息容量的下降;然后经过常规卷积,此段信息容量不变;最后经过1x1 卷积的膨胀,恢复了信息容量。

      整体而言模型的信息容量很像一个bottleneck,因此1x1 卷积层也被称作瓶颈层。

    三、基本卷积的变体 - 图107

  4. 事实上,不仅1x1 卷积层会形成bottleneck,任何会降低模型信息容量的层都会形成瓶颈。

    因此在卷积神经网络中,通常每经过一个卷积层,输出尺寸减半、输出通道数翻倍。

  5. 瓶颈层中的信息膨胀阶段不是必须存在,通常信息膨胀过程是为了保持整个瓶颈层的输入尺寸、输出尺寸满足某些约束。如:输出尺寸等于输入尺寸。

3.8 DepthWise 卷积

  1. 标准的卷积会考虑所有的输入通道,而DepthWise 卷积会针对每一个输入通道进行卷积操作,然后接一个1x1 的跨通道卷积操作。

    三、基本卷积的变体 - 图108

  2. DepthWise 卷积与分组卷积的区别在于:

    • 分组卷积是一种通道分组的方式,它改变的是对输入的feature map 处理的方式。

      Depthwise 卷积是一种卷积的方式,它改变的是卷积的形式。

    • Depthwise 分组卷积结合了两者:首先沿着通道进行分组,然后每个分组执行DepthWise 卷积。

  3. 假设输入张量为 三、基本卷积的变体 - 图109,即:三、基本卷积的变体 - 图110 个通道、宽度为 三、基本卷积的变体 - 图111 、高度为 三、基本卷积的变体 - 图112

    • 假设使用标准卷积,输入通道的数量为 三、基本卷积的变体 - 图113,输出通道的数量为 三、基本卷积的变体 - 图114,卷积核的尺寸为 三、基本卷积的变体 - 图115 。则需要的参数数量为 三、基本卷积的变体 - 图116

    • 使用Depthwise 卷积时,图像的每个通道先通过一个 三、基本卷积的变体 - 图117deptpwise 卷积层,再经过一个 1x1、输出通道为 三、基本卷积的变体 - 图118 的卷积层。

      参数数量为:

      三、基本卷积的变体 - 图119

      其参数数量是标准卷积的 三、基本卷积的变体 - 图120 。因此depthwise 卷积的参数数量远远小于标准卷积。

  1. DepthWise 卷积有几种变形的形式:

    • 只有对每个输入通道执行单通道卷积,没有后续的1x1 的跨通道卷积。
    • 对输入通道执行单通道卷积的结果执行BNReLU,再后接1x1 的跨通道卷积。这会引入更多的非线性。

3.9 通道混洗分组卷积

  1. 在分组卷积中,特征的通道被平均分配到不同的分组中。如果融合的时刻非常靠后,则对模型的泛化性相当不利,因为如果能在早期知道其它通道的一些信息,则很可能得到更有效的特征。

  2. 通道混洗分组卷积在每一次分组卷积之后执行一次通道混洗,被混洗过的通道被分配到不同的分组中。

    经过通道混洗之后,每个分组输出的特征能够考虑到更多的通道,因此输出特征的表达能力更强。

    ShuffleNet 中,大量运用了这种通道混洗分组卷积。

    三、基本卷积的变体 - 图121

  3. AlexNet 的分组卷积中,执行的是标准卷积操作。

    ShuffleNet 中,分组卷积执行的是deptiwise 卷积,从而使得参数更少。

3.10 通道加权卷积

  1. 在常规卷积中,各通道产生的特征都是不分权重直接结合的。通道加权卷积中,不同的通道具有不同的权重,各通道产生的特征经过加权之后再结合。

    所用到的权重是输入的函数。

    注意:因为卷积是线性过程,因此卷积计算的通道加权等价于对输入的feature map 的通道加权。

  2. SEnetSqueeze-and-Excitation Networks)网络大量使用通道加权卷积。在SEnet 中存在三个关键的操作:

    • Squeeze 操作:沿着空间维度压缩特征,将每个二维的feature map 通道压缩成一个实数。

      该实数具有全局的感受野,表征了在该feature map 通道上响应的全局分布。

    • Excitation 操作:通过一个类似循环神经网络中的门机制,用一个sigmoid 激活函数的全连接层获取每个feature map 通道的权重。

      实际上,Excitation 操作使用了两个全连接层来获取通道权重。

    • Reweight 操作:将特征通道的权重通过乘法逐通道的加权到先前的feature map 上。

    三、基本卷积的变体 - 图122

3.11 空洞卷积

  1. 在图像分割任务,图像输入到传统卷积层,然后再输入到池化层。由于图像分割是逐像素的输出,因此需要将池化层的输出(一个较小的尺寸)升采样(一般使用反卷积操作)到原始的图像尺寸来进行预测。

    但是这里有几个问题:

    • 升采样(如:线性插值) 是确定性的映射,无法学习(也没有参数要学习)。
    • 在这个图像的先减少尺寸、再增大尺寸过程中,有一些信息损失。
    • 小物体信息无法重建。假设有 4个池化层,每个池化层的尺寸为2、步长为2,理论上任何小于 三、基本卷积的变体 - 图123 个像素的物体信息将无法被重建。

    解决方案是空洞卷积。

  2. 空洞卷积:对于空洞数为 三、基本卷积的变体 - 图124 的空洞卷积,卷积结果为:

    三、基本卷积的变体 - 图125

    它实际上等价于一个卷积核为 三、基本卷积的变体 - 图126 的新的卷积核,其中 三、基本卷积的变体 - 图127 为当前卷积核的大小。新的卷积核的特点是:每隔 三、基本卷积的变体 - 图128 个位置,权重非零;否则权重为零。另外首行、首列、尾行、尾列权重均为零。

    三、基本卷积的变体 - 图129 称作膨胀比 dilation rate

    三、基本卷积的变体 - 图130

    三、基本卷积的变体 - 图131

  3. 空洞卷积的优点:在不做池化损失信息的情况下,加大感受野,让每个卷积的输出都包含较大范围的信息。

    在图像需要全局信息,或者语音、文本需要较长序列信息的问题中,空洞卷积都能很好的应用。

  4. 空洞卷积的缺点:

    • 网格效应(Gridding Effect )。如果仅仅多次叠加多个 dilation rate=23x3 的卷积核时,会发现:并不是所有的输入像素都得到计算,也就是卷积核不连续。

      这对于逐像素的预测任务来说,是致命的问题。

      三、基本卷积的变体 - 图132

    • 长距离信息可能与任务无关。采用空洞卷积可能对大物体的分割有效果,但是对于小物体的分割可能没有好处。

      如何同时处理不同大小的物体,则是设计好空洞卷积网络的关键。

  5. 为了解决空洞卷积的缺点,人们提出了一种混合空洞卷积的结构(Hybrid Dilated Convolution:HDC) 。

    该结构有三个特性:

    • 叠加的空洞卷积的dilation rate 不能有大于1的公约数。这是为了对抗网格效应。

      如:[2,4,6] 不是一个好的三层空洞卷积,因为会出现网格效应。

    • dilation rate 设计成锯齿状结构。这是为了同时满足小物体、大物体的分割要求。

      [1,2,5,1,2,5] 的循环结构。

    • 最后一层的空洞卷积的dilation rate 最大,且dilation rate 小于等于卷积核的大小。

      这也是为了对抗网格效应。

    下面是一组dilation rate 分别为[1,2,5] 的卷积核,卷积核的尺寸为3x3

    三、基本卷积的变体 - 图133