卷积有多少种?一文读懂深度学习中的各种卷积

频道:生活应用 日期: 浏览:4

机器之心编译

参与:熊猫

众所周知,卷积在技术领域扮演着关键角色,然而,你是否真正了解在深度学习范畴内,卷积的具体含义及其丰富的种类?近期,学者Kunlun Bai发表了一篇关于深度学习卷积的解读文章,以简洁明了的语言阐述了该领域的多种卷积技术及其显著优势。由于篇幅所限,机器之心仅选取了部分内容进行分享,具体请参考原文的第2、4、5、9、11、12节。

若你对深度学习领域中各式各样的卷积算法有所耳闻,诸如二维、三维、1x1、转置、扩张(Atrous)、空间可分、深度可分、平展、分组以及混洗分组卷积等,却对其具体含义感到困惑,那么本篇文章正是为你量身定制的,旨在帮助你深入理解这些算法的实际运作机制。

本文将总结梳理深度学习领域内广泛应用的数种卷积算法,并力求以通俗易懂的方法对它们进行阐释。除本篇内容外,读者还可参考其他相关领域的优秀文章,以获取更全面的了解。

本文旨在助你建立起对卷积的直观理解,并有望成为你研究或学习过程中的有益参考资料。

本文目录

1.卷积与互相关

2.深度学习中的卷积(单通道版本,多通道版本)

3.3D 卷积

4.1×1 卷积

5.卷积算术

6.转置卷积(去卷积、棋盘效应)

7.扩张卷积

8.可分卷积(空间可分卷积,深度可分卷积)

9.平展卷积

10.分组卷积

11.混洗分组卷积

12.逐点分组卷积

一、卷积与互相关

在信号处理、图像处理等多个工程与科学分支中,卷积技术得到了广泛应用。而在深度学习这一领域,卷积神经网络(CNN)这一模型架构正是基于这一技术而命名。然而,在深度学习中,卷积的实质是信号或图像处理中的互相关操作。这两种操作之间虽有着细微的差别。

无需过分追究具体细节,我们便能察觉到这一差异。在信号与图像处理这一专业领域,卷积的概念可以这样表述:

其指的是由两个函数中的一个在经过反转和相应位移处理后,两者相乘所形成的乘积的积分。具体来说,这一概念可以通过以下可视化进行展示:,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,

在信号处理领域,对卷积操作的处理涉及将过滤器g进行反转,并沿着水平轴进行移动。在每个具体的位置上,我们会对函数f与反转后的g所形成的交叉区域进行面积计算。这一面积值即为该特定位置处的卷积结果。

此处,g函数充当了过滤器的角色。经过反转处理,它随后沿着水平方向进行滑动。在每个具体位置上,我们计算f函数与反转g函数所形成的交点区域面积。该区域的面积即对应位置的卷积结果。

另一方面,互相关是指两个函数间的滑动点积或滑动内积现象。在互相关计算中,过滤器并不进行反转操作,而是直接对函数f进行滑动。f和g之间的重叠部分,便是我们所指的互相关。以下图表清晰地揭示了卷积与互相关之间的区别。

信号处理中卷积与互相关之间的差异

在深度学习领域,进行卷积操作时,使用的过滤器并未进行反转处理。实际上,这相当于一种互相关操作。我们实际上是在进行逐个元素的乘法和加法运算。然而,在深度学习的研究中,我们通常直接将其称作卷积,这样做更为简便。这种说法并无不妥,因为过滤器的权重是在训练过程中自动学习得到的。假设在上述例子中,反转函数g是正确的,那么在经过训练之后,我们学习到的过滤器将会呈现出与反转后的函数g相似的特征。在开始训练之前,无需像在现实卷积操作中那样,先行对过滤器进行反转处理。

二、3D 卷积

在上节的阐述中,我们发现我们实际上是在对一个三维体积进行卷积运算。然而,在深度学习领域,我们通常依旧将其称作二维卷积。这实际上是在三维体积数据上进行的二维卷积操作。所使用的过滤器深度与输入层的深度保持一致。该三维过滤器仅沿着两个维度进行移动(即图像的高度和宽度)。通过这种操作,我们得到的结果是一张二维图像(仅包含一个通道)。

3D卷积的确是真实存在的,它可以说是2D卷积的一种推广。具体来说,3D卷积的过滤器深度是小于输入层深度的(即核大小大于m),因此比例关系就变成了2除以m。换句话说,在N远大于m的这种渐进情况下,当过滤器尺寸为3×3时,空间可分卷积的计算开销仅为标准卷积的2/3。当过滤器尺寸为5×5时,该数值降至2/5;而当过滤器尺寸增至7×7时,该数值进一步降低至2/7。

空间可分卷积虽然有助于降低成本,但在深度学习中却鲜少被采纳。这主要是因为并非所有核都能被拆分为两个更小的核。若将空间可分卷积应用于所有传统卷积,将限制我们在训练阶段探索所有可能的核。由此产生的训练效果可能会不尽如人意。

2、深度可分卷积

深度可分卷积在深度学习领域中应用广泛,例如在MobileNet和Xception等模型中可见其身影。该技术涉及两个主要步骤:首先进行深度卷积核的处理,随后进行1×1卷积操作。

在阐述这些操作流程之前,我们需先回顾一下之前所讲解的2D卷积核中的1×1卷积技术。首先,让我们简要回顾一下常规的2D卷积过程。以一个实例来说明,假如输入层的尺寸为7×7×3(代表高度、宽度和通道数),而使用的过滤器尺寸为3×3×3。经过一次2D卷积操作,输出层的尺寸将变为5×5×1(仅包含一个通道)。

为了生成单层输出,采用了一种2D卷积的标准方法,并仅运用了一个过滤器。

通常情况下,在两个神经网络层之间会采用众多过滤器。比如,这里我们使用了128个过滤器。经过这128个2D卷积操作,我们得到了128个5×5×1尺寸的输出映射图。随后,我们将这些映射图叠加起来,形成了一个5×5×128尺寸的单层结构。通过这一步骤,我们能够将输入层的维度(7×7×3)调整至输出层的维度(5×5×128)。在这个过程中,空间维度,也就是高度与宽度,将会缩小,而深度则会相应地增加。

为了生成包含128层结构的二维卷积输出,需采用128个不同的过滤器。

现在使用深度可分卷积,看看我们如何实现同样的变换。

我们将深度卷积技术应用于输入层,不过我们并未采用2D卷积中常见的3×3×3尺寸的单个过滤器。相反,我们采用了三个独立的核。这些核的尺寸均为3×3×1。每个核仅与输入层的一个特定通道进行卷积操作,而不是对所有通道同时处理。通过这种方式,每个卷积操作都能生成一个5×5×1尺寸的映射图。我们将这些映射图叠加起来,构成了一个5×5×3维度的图像。完成这一步骤后,我们获得了5×5×3尺寸的输出结果。接下来,我们可以减少图像的空间维度,而深度则保持不变。

深度可分卷积——首先,我们摒弃了2D卷积中那种3×3×3尺寸的单个过滤器,转而采用三个独立的核。这些核的尺寸均为3×3×1。每个核仅与输入层的一个特定通道进行卷积操作,而非所有通道。通过这种方式,每个卷积操作都能生成一个5×5×1尺寸的映射图。接着,我们将这些映射图层层叠加,组合成了一个5×5×3维度的图像。这一步骤完成后,我们便获得了尺寸为5×5×3的输出结果。

在深度可分卷积的第二阶段,我们采取了一种策略来增加网络的深度,即采用了一个核尺寸为1×1×3的1×1卷积层。通过将5×5×3的输入图像与每一个1×1×3的核进行卷积操作,我们成功生成了一个5×5×1尺寸的映射图。

因此kaiyun官方网站登录入口,经过128次1×1卷积的应用,我们最终获得了5×5×128维度的层。

深度可分卷积——第二步:应用多个 1×1 卷积来修改深度。

这两个步骤下,深度可分卷积能够将输入层的特征图(尺寸为7×7×3)转换并映射至输出层的特征图(尺寸为5×5×128)。

下图展示了深度可分卷积的整个过程。

深度可分卷积的整个过程

因此,深度可分卷积具备哪些显著特点呢?那就是效率之高!与2D卷积相比,深度可分卷积在执行操作时所需步骤大幅减少。

回顾我们之前提到的二维卷积计算案例,该案例中包含128个3×3×3的核,这些核在5×5的区域内移动,总共进行了128×3×3×3×5×5次乘法运算。

即便能够进行分卷积操作,但在首个深度卷积阶段,3个3×3×1的核在5×5的范围内移动,共计进行了3x3x3x1x5x5次乘法运算,即675次。而在第二个1×1卷积步骤中,128个1×1×3的核同样在5×5区域内移动,这一过程涉及到了128x1x1x3x5x5次乘法运算,总计9600次。因此,深度可分卷积的计算量总计达到 675 次乘法加上 9600 次乘法,合计 10275 次乘法。相较之下kaiyun.ccm,这种成本大约仅为 2D 卷积的 12%。

因此,不论图像尺寸如何,若采用深度可分卷积,我们能够节省多少时间呢?让我们将之前的例子进行推广。针对一个尺寸为 H×W×D 的输入图像,若采用 Nc 个核,每个核的尺寸为 h×h×D,并执行2D卷积操作(设置步幅为1,填充为0,且h需为偶数)。为了实现输入层(H×W×D)向输出层((H-h+1)x (W-h+1) x Nc)的转换,必须进行的总乘法运算量包括:

Nc 乘以 h 乘以 h 乘以 D 乘以 (H-h+1) 乘以 (W-h+1)

另一方面,对于同样的变换,深度可分卷积所需的乘法次数为:

D乘以h乘以h乘以h减一乘以W减一加一,再加上Nc乘以1乘以1乘以D乘以h减一乘以W减一加一,等于(h的平方加Nc)乘以D乘以h减一乘以W减一加一。

则深度可分卷积与 2D 卷积所需的乘法次数比为:

现代多数架构的输出层往往包含众多通道,数量可达到数百甚至上千。针对这类层(Nc远大于h),上述公式可以简化为1除以h。据此,若采用3×3的滤波器,2D卷积所需的乘法运算量将是深度可分离卷积的9倍之多。而若选用5×5的滤波器,2D卷积的乘法运算量将是深度可分离卷积的25倍。

深度可分卷积存在哪些不足之处?当然存在。它会导致卷积层参数数量的减少。这就意味着,对于规模较小的模型来说,若以深度可分卷积替换2D卷积,其性能可能会明显减弱。因此,构建出的模型可能并非最佳选择。然而,若运用得当,深度可分卷积可以在不损害模型性能的前提下,助力提升效率。

六、分组卷积

2012年,AlexNet论文[链接:https://papers.nips.cc/paper/4824-imagenet-classification-with-deep-convolutional-neural-networks.pdf]提出了分组卷积的概念。采用分组卷积的关键目的在于确保网络训练能够在仅拥有2个内存容量有限的GPU(每个GPU配备1.5GB内存)的情况下进行。从下方的AlexNet示例中可以看出,在多数层级中均设置了两个独立的卷积通道。这种设计使得模型能够在两个GPU上实现并行处理(当然,若条件允许,亦能支持多GPU的并行处理)。

图片来自 AlexNet 论文

在此,我们将阐述分组卷积的操作原理。首先,我们可以参考下图中展示的2D卷积流程。具体来看,本例中运用了128个尺寸为3×3×3的滤波器,将输入层(7×7×3)的维度转换为了输出层(5×5×128)。推广到更广泛的意义上,即通过使用Dout个尺寸为h x w x Din的核,将输入层的维度(Hin x Win x Din)转换成输出层的维度(Hout x Wout x Dout)。

标准的 2D 卷积

在分组卷积操作中,过滤器被划分成若干个组别。每个组别专门负责处理特定深度的典型二维卷积任务。以下实例可以帮助您更好地把握这一概念。

具有两个过滤器分组的分组卷积

上图呈现了采用两组过滤器的分组卷积结构。在这些过滤器分组里,每个过滤器的深度仅为2D卷积深度的一半,即Din/2。每个分组中包含Dout/2个过滤器。其中,第一个分组(以红色标示)对应于输入层的前半部分,与输入层的前半部分相匹配。

:, :, 0:Din/2

)卷积,而第二个过滤器分组(橙色)与输入层的后一半(

:, :, Din/2:Din

卷积操作导致每个过滤器分组产出Dout/2个通道。总计来看,两组过滤器能够生成2乘以Dout/2,即Dout个通道。接着,我们将这些通道叠加起来,形成包含Dout个通道的输出层。

1、分组卷积与深度卷积

你或许会察觉到,分组卷积和深度可分卷积所采用的深度卷积,它们之间既有相似之处,也有不同之点。当过滤器的分组数与输入层的通道数一致时,每个过滤器的深度便会等于 Din/Din,即1。这时,过滤器的深度便与深度卷积中的深度相同了。

此外,目前每个分组均配备了Dout/Din数量的过滤器。总体来看,输出层的深度达到了Dout。这一特点与深度卷积不同——深度卷积并不会对层的深度造成影响。而在深度可分卷积中,层的深度在后续步骤中会通过1×1卷积进行扩展。

分组卷积有几个优点。

首个优势在于训练的高效性。这是因为卷积操作被拆分成了若干路径,每条路径均能独立由不同的GPU负责处理,从而使得模型能够在多个GPU上实现并行训练。与在单一GPU上完成所有任务相比,这种在多GPU上实现的模型并行化使得网络在每一步骤中能够处理更多的图像。普遍观点认为,模型并行化相较于数据并行化具有更高的优越性。将数据集划分为若干部分,逐个对每一部分进行独立训练。然而,若批量规模降至极低,实际上便是在进行随机梯度下降而非批梯度下降。这种情况会导致收敛速度变慢,甚至有时会得到更差的收敛效果。

在深度训练神经网络的过程中,分组卷积的作用尤为关键,这一点在ResNeXt架构中得到了充分体现。

该图片摘自《ResNeXt》这篇学术论文,详细内容可参考链接:https://arxiv.org/abs/1611.05431。

第二个优势在于模型运作将更为高效,具体表现为模型参数会随着过滤器分组数量的增加而相应减少。以先前的实例来看开yun体育app官网网页登录入口,一个完整的2D标准卷积包含h x w x Din x Dout个参数;而采用2个过滤器分组的分组卷积,其参数数量则变为(h x w x Din/2 x Dout/2) x 2个;由此可见,参数总数已经减半。

令人感到意外的是,第三个优点颇具特色。分组卷积技术或许能够带来比传统完整二维卷积更为优越的模型效果。这一点在另一篇优秀的博客文章中已有详细阐述:[链接](https://blog.yani.io/filter-group-tutorial)。以下是对其内容的简要概述。

该现象与稀疏过滤器之间存在关联。图中展示了相邻层过滤器之间的关联性,这种关联呈现出稀疏的特点。

在 CIFAR10 数据集上训练的 Network-in-Network 模型中,相邻层的过滤器构成了一个相关性矩阵。在这个矩阵中,那些高度相关的过滤器呈现较亮的颜色,而相关性较低的过滤器则显示为较暗的色调。该图片来源于:https://blog.yani.io/filter-group-tutorial。

分组矩阵的相关性映射图又如何?

在 CIFAR10 数据集上进行的 Network-in-Network 模型训练中,相邻层的过滤器之间的关联性得到了体现,通过动态图我们可以观察到包含 1、2、4、8、16 个过滤器分组的情形。相关图片来源于 https://blog.yani.io/filter-group-tutorial。

该图展示了在采用1、2、4、8、16个过滤器进行分组训练模型时,相邻层过滤器间的相互关系。文中提出了一种观点:过滤器分组的优势在于在通道维度上对块对角结构的稀疏性进行学习……在网络中,那些高度相关的过滤器是通过过滤器分组以更为有序的方式习得的。从实际效果来看,那些无需学习的过滤器关系便不再需要参数化。显著降低网络中的参数数目,从而降低了过拟合的风险,因此,这种做法类似于正则化,使得优化器能够学习到更加精确和高效的深度神经网络。

作者指出,在 AlexNet 的 conv1 过滤器中,过滤器被分成了若干组,这些组似乎有意识地构成了两个不同的集合。图中所示内容摘自 AlexNet 的相关论文。

此外,每个过滤器分组都致力于掌握数据中特有的特征。正如 AlexNet 的创造者所阐述的,这些分组似乎会将所学的过滤器按照结构划分为两组——一组负责黑白图像,另一组则专注于彩色图像的处理。

你认为深度学习领域的卷积还有那些值得注意的地方?

深入探讨深度学习中不同类型的卷积操作,全面介绍其原理和应用,旨在帮助读者全面理解卷积神经网络的核心概念。

本文为机器之心编译,转载请联系本公众号获得授权。

网友留言(0)

评论

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。