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

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

机器之心编译

参与:熊猫

深度学习中的卷积概念广为人知,然而,你是否真正了解这一领域卷积的具体含义及其丰富的种类?近期,研究专家 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)这一模型架构正是基于此技术而命名。然而,深度学习中的卷积实际上与信号处理和图像处理领域的互相关(cross-correlation)有着本质的联系。尽管如此,这两种操作之间仍存在一些微妙的差异。

无需过分追求细节,我们便能够察觉到这一区别。在信号与图像处理这一领域,对于卷积这一概念,其定义是这样的:

其含义是指,通过将其中一个函数进行颠倒与平移操作,随后将这两个变换后的函数相乘,所得到的乘积的积分。接下来的可视化图表,便是对这一概念的具体呈现。

在信号处理领域,我们进行卷积操作时,首先将过滤器g进行反转处理,接着沿着水平方向进行滑动。在每个滑动位置,我们都会计算函数f与反转后的g所形成的交叉区域的面积。而这个交叉区域的面积,正是该位置处的卷积值。

此处,g 函数充当了过滤器的角色。经过反转处理,该函数随后沿着水平方向进行滑动。在每个滑动位置,我们都会对 f 函数与反转 g 函数所形成的交叠区域进行面积测量。该交叠区域的面积,即代表该特定位置上的卷积结果。

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

在深度学习领域,卷积操作中的过滤器并未进行反转处理。实际上,这属于互相关运算。我们实际上是在执行逐个元素的乘法和累加操作。然而,在深度学习语境中开yun体育app入口登录,我们通常直接将其称作卷积,这样做更为简便。这并无不妥,因为过滤器的权重是在训练过程中自动学习的。假设上述例子中的反转函数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(这里只有一个通道)。

为构建单层输出结构的二维卷积,我们采用单一过滤器。

通常情况下,在两个神经网络层之间会使用若干个过滤器。以本例为例,我们拥有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尺寸的映射图。

经过128次1×1卷积的应用,我们最终获得了5×5×128维度的层。

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

经过这两个阶段的处理,深度可分卷积神经网络能够将输入层的特征图(7×7×3)转换并映射至输出层的特征图(5×5×128)。

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

深度可分卷积的整个过程

那么,深度可分卷积究竟有哪些优点呢?答案是效率的提升。与2D卷积相比,深度可分卷积在执行操作时所需的步骤大大减少。

回顾我们之前讨论的二维卷积示例,其中包含128个3×3×3的核,这些核在5×5的区域内移动,总共进行了128 x 3 x 3 x 3 x 5 x 5次乘法运算,即86400次。

即便能够进行分卷积操作,但在首个深度卷积阶段,存在三个3×3×1的核,它们在5×5的范围内移动了5×5次,总计进行了3×3×3×1×5×5即675次乘法运算。进入第二个1×1卷积步骤,则有128个1×1×3的核进行同样的移动,总共执行了128×1×1×3×5×5即9600次乘法。因此,深度可分卷积的运算次数总计为675次加上9600次,合计达到10275次乘法操作。这一成本仅为2D卷积的约12%。

因此,针对不同尺寸的图像,若我们采用深度可分卷积技术,能够节省多少时间呢?让我们将之前的例子进行推广。以一个尺寸为 H×W×D 的输入图像为例,若采用 Nc 个尺寸为 h×h×D 的核进行二维卷积操作(卷积步长为1,填充为0,且h为偶数)。为了实现从输入层(H×W×D)到输出层((H-h+1)×(W-h+1)×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的滤波器开yun体育官网入口登录app,2D卷积的乘法运算量将是深度可分离卷积的25倍。

采用深度可分卷积是否存在弊端?答案是肯定的。深度可分卷积会减少卷积层中的参数量。这导致,对于规模较小的模型来说,若以深度可分卷积取代2D卷积,其性能可能会明显减弱。结果,构建出的模型可能并非最佳。然而,若运用得当,深度可分卷积可以在不损害模型性能的前提下,助力实现效率的提升。

六、分组卷积

2012年,AlexNet论文(链接:https://papers.nips.cc/paper/4824-imagenet-classification-with-deep-convolutional-neural-networks.pdf)提出了分组卷积的概念。采用分组卷积的主要目的是为了让网络训练得以在内存资源受限的(每个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上实现的模型并行化,使得网络在每一步骤能够处理更多的图像。普遍观点认为,模型并行化相较于数据并行化更具优势。将数据集划分为若干部分,并对每一部分独立进行训练。然而,若批量规模减小到一定程度,我们实际上是在进行随机梯度下降开元ky888棋牌官网版,而非批梯度下降。这种情况会导致收敛速度变慢,有时甚至会导致收敛效果变差。

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

该图片源自《ResNeXt》论文,链接为https://arxiv.org/abs/1611.05431。

第二个优势在于模型的运行效率将得到提升,具体表现为模型参数会随着过滤器分组数量的增加而相应减少。以先前的案例为例,一个完整的2D标准卷积层包含h x w x Din x Dout个参数。若采用具有两个过滤器分组的分组卷积,其参数数量将变为(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 的创作者所阐述的,这些分组似乎会将学到的过滤器按照结构划分成两组——一组处理黑白图像,另一组则专注于彩色图像的处理。

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

在深度学习中,不同类型的卷积操作被广泛研究,这些操作在图像识别、自然语言处理等领域发挥着至关重要的作用。卷积神经网络(CNN)的核心正是卷积层,它通过学习数据中的局部特征来实现对输入数据的特征提取。在本文中,我们将详细介绍几种常见的卷积类型,包括标准卷积、深度可分离卷积、分组卷积以及空洞卷积等。每种卷积都有其独特的优势和应用场景,下面将逐一进行阐述。

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

网友留言(0)

评论

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