深入剖析卷积神经网络之卷积层:原理、类型与优化策略
内容摘要
本文深入探讨 卷积神经网络中 卷积层相关知识,介绍 卷积原理,分析其在图像中作用及不同 卷积核类型特点,探讨 卷积核大小、数量等问题,总结减少参数量方法,对比 标准卷积与其他卷积方式差异,阐述 宽卷积优势。帮助读者全面理解 卷积层,为深度学习模型优化提供参考。
关键词:卷积神经网络;卷积层;卷积核;参数优化
引言
卷积神经网络(Convolutional Neural Network, CNN)在当今深度学习领域占据着举足轻重的地位,被广泛应用于图像识别、自然语言处理、语音识别等多个领域。而 卷积层作为 CNN的核心组件,承担着数据特征提取的关键任务,其性能优劣直接影响整个网络的表现。深入理解 卷积层的工作原理、各种类型卷积的特点以及优化策略,对于掌握 CNN技术、提升模型性能至关重要。本文将对 卷积层进行全面而深入的剖析,带您探索其背后的奥秘。
一 卷积原理
卷积操作本质上是一种数学运算,是对两张像素矩阵进行点乘求和。其中一个矩阵为输入的数据矩阵,另一个则是 卷积核(也称为 滤波器或 特征矩阵)。通过这种运算,能够从原始数据中提取特定的局部特征,其结果表示了在原始图像中所提取的特定局部特征。
在卷积操作过程中,填充策略是一个重要的考量因素。常见的 填充策略有两种:零填充(对应 SAME填充)和 有效卷积(对应 VALID填充),如图1所示。零填充是在输入数据的边缘补充零值,使得 卷积核能够完整地在图像边缘进行运算,从而保证卷积输出维度与输入维度一致;而 有效卷积则是舍弃不能完整运算的边缘部分,这种方式可能会导致输出维度小于输入维度。
图1卷积操作过程中的不同填充策略
二 卷积在图像中的作用
在 卷积神经网络处理图像的过程中,卷积扮演着提取图像特征的关键角色。并且,不同层次的卷积操作所提取到的特征类型存在明显差异。浅层卷积主要负责捕捉图像的 边缘特征,这些边缘信息是图像的基本结构元素;中层卷积则能够提取 局部特征,将多个边缘特征组合起来,形成更具代表性的局部模式;深层卷积聚焦于 全局特征,从宏观角度对图像中的物体进行整体把握。
卷积操作不仅能提取不同层次的特征,与不同 卷积核的卷积还可用于执行多种图像处理任务。例如,边缘检测可以突出图像中物体的轮廓,便于后续的目标识别;锐化操作能够增强图像的清晰度,使细节更加明显;模糊操作则可以平滑图像,去除噪声或弱化不必要的细节。常见 卷积核的作用如下表所示:
卷积作用 | 卷积核 | 卷积后图像 |
---|---|---|
输出原图 | [ 0 0 0 0 1 0 0 0 0 ] \begin{bmatrix}0 & 0 & 0 \\0 & 1 & 0 \\0 & 0 & 0 \end{bmatrix} 000010000 | ![]() |
边缘检测(突出边缘差异) | [ 1 0 − 1 0 0 0 − 1 0 1 ] \begin{bmatrix}1 & 0 & -1 \\0 & 0 & 0 \\-1 & 0 & 1\end{bmatrix} 10−1000−101 | ![]() |
边缘检测(突出中间值) | [ − 1 − 1 − 1 − 1 8 − 1 − 1 − 1 1 ] \begin{bmatrix}-1 & -1 & -1 \\-1 & 8 & -1 \\-1 & -1 & 1 \end{bmatrix} −1−1−1−18−1−1−11 | ![]() |
图像锐化 | [ 0 − 1 0 − 1 5 − 1 0 − 1 0 ] \begin{bmatrix}0 & -1 & 0 \\-1 & 5 & -1 \\0 & -1 & 0 \end{bmatrix} 0−10−15−10−10 | ![]() |
方块模糊 | [ 1 1 1 1 1 1 1 1 1 ] ∗ 1 / 9 \begin{bmatrix}1 & 1 & 1 \\1 & 1 & 1 \\1 & 1 & 1 \end{bmatrix}*1/9 111111111 ∗1/9 | ![]() |
高斯模糊 | [ 1 1 1 1 1 1 1 1 1 ] ∗ 1 / 16 \begin{bmatrix}1 & 1 & 1 \\1 & 1 & 1 \\1 & 1 & 1 \end{bmatrix}*1/16 111111111 ∗1/16 | ![]() |
三 卷积层的基本参数
卷积核大小(Kernel Size)
卷积核大小定义了卷积的 感受野,即 卷积核在图像上滑动时所覆盖的区域大小。在早期的 卷积神经网络中,如 LeNet - 5,常将 卷积核大小设为5。随着技术的发展,现在多设为3,通过堆叠多个 3 × 3 3×3 3×3的 卷积核来达到更大的 感受野。这样做的好处是在保证 感受野大小的同时,减少了参数量,提高了模型的训练效率。
卷积核步长(Stride)
卷积核步长决定了 卷积核在卷积过程中的移动步长。常见设置为1,此时滑窗距离为1,可以覆盖所有相邻位置特征的组合,确保能够充分提取图像中的信息。当步长设置为更大值时,相当于对特征组合进行了下采样,虽然可以减少计算量,但可能会丢失一些细节信息。
填充方式(Padding)
当 卷积核尺寸不能完美匹配输入的图像矩阵时,就需要借助 填充策略来使总面积和输入的图像匹配。设置为 SAME表示对不足 卷积核大小的边界位置进行某种填充(通常是 零填充),以保证卷积输出维度与输入维度一致;设置为 VALID则是对不足卷积尺寸的部分进行合并,这种情况下输出维度无法保证与输入维度一致。
输入通道数(In Channel)与输出通道数(Out Channel)
输入通道数指定卷积操作时 卷积核的深度,默认与输入的特征矩阵通道数(深度)一致。在某些特殊的模型中,会采用通道分离的卷积方式。输出通道数指定了 卷积核的个数,若设置为与 输入通道数一样的大小,可以保持输入输出维度的一致性;若采用比 输入通道数更小的值,则可以减少整体网络的参数量。
卷积操作维度变换公式为:
O d = { [ ( I d − k s i z e ) + 1 s ⌉ , Padding = VALID [ I d s ⌉ , Padding = SAME O_{d}=\begin{cases} \left[\frac{\left(I_{d}-k_{size }\right)+1}{s}\right\rceil, & \text{Padding = VALID} \\ \left[\frac{I_{d}}{s}\right\rceil, & \text{Padding = SAME} \end{cases} Od={[s(Id−ksize)+1⌉,[sId⌉,Padding = VALIDPadding = SAME
其中, I d I_{d} Id为输入维度, O d O_{d} Od为输出维度, k s i z e k_{size } ksize为 卷积核大小, s s s为 步长。这个公式清晰地展示了在不同 填充方式和参数设置下,卷积操作前后维度的变化规律,对于理解 卷积层的工作机制和网络结构设计具有重要意义。
四 卷积核的类型
标准卷积
标准卷积是最常用的 卷积核形式,它以连续紧密的矩阵形式对输入的图像特征进行滑窗式点乘求和操作。例如,常见的 3 × 3 3×3 3×3的 卷积核可以获得 3 × 3 3×3 3×3像素范围的 感受视野,能够有效提取图像区域中的相邻像素之间的关联关系,是构建 卷积神经网络的基础组件。
扩张卷积(带孔卷积或空洞卷积)
扩张卷积引入了一个称作 扩张率(Dilation Rate)的参数,这一参数使得同样尺寸的 卷积核可以获得更大的 感受视野。在相同 感受视野的前提下,比普通卷积采用更少的参数。以 3 × 3 3×3 3×3的 卷积核尺寸为例,扩张卷积可以提取 5 × 5 5×5 5×5范围的区域特征。由于其能够在不增加过多参数的情况下扩大 感受野,在实时图像分析领域得到了广泛应用。
转置卷积
转置卷积先对原始特征矩阵进行填充,使其维度扩大到适配卷积目标输出维度,然后进行普通的卷积操作。其输入到输出的维度变换关系恰好与普通卷积的变换关系相反,但它并不是真正的逆变换操作,因此通常称为 转置卷积(Transposed Convolution)而非 反卷积(Decomvolution)。转置卷积常见于 目标检测领域中对小目标的检测和 图像分割领域中还原输入图像的尺度,在这些任务中发挥着重要作用。
可分离卷积
标准的卷积操作是同时对原始图像 H × W × C H×W×C H×W×C三个方向进行卷积运算,假设有 K K K个相同尺寸的 卷积核,这样的卷积操作需要用到的参数为 H × W × C × K H×W×C×K H×W×C×K个。而 可分离卷积则将长、宽与深度方向的卷积操作进行分离,变为先与 H × W H×W H×W方向卷积,再与 C C C方向卷积的两步卷积操作。同样有 K K K个相同尺寸的 卷积核时,只需要 ( H × W × C ) × K (H×W×C)×K (H×W×C)×K个参数,便可得到同样的输出尺度。可分离卷积通常应用在 模型压缩或一些轻量的 卷积神经网络中,如 MobileNet、Xception,能够有效减少模型的参数量,提高模型的运行效率。
五 1×1卷积的作用
NIN(Network in Network)是第一篇探索 1 × 1 1×1 1×1 卷积核的论文,该论文通过在 卷积层中使用 MLP替代传统线性的 卷积核,使单层 卷积层内具有非线性映射的能力。NIN将不同通道的特征整合到 MLP子网络中,让不同通道的特征能够交互整合,使通道之间的信息得以流通,而其中的 MLP子网络恰恰可以用 1 × 1 1×1 1×1的卷积进行代替。
GoogLeNet则采用 1 × 1 1×1 1×1 卷积核来减少模型的参数量。在原始版本的 Inception模块中,由于每一层网络采用了更多的 卷积核,导致模型参数量大幅增加。此时在每一个较大 卷积核的 卷积层前引入 1 × 1 1×1 1×1卷积,可以通过分离通道与宽高卷积来减少模型参数量。综上所述, 1 × 1 1×1 1×1卷积的作用主要有两点:一是实现信息的跨通道交互和整合;二是对 卷积核通道数进行降维和升维,减小参数量。
六 卷积核是否越大越好
在早期的 卷积神经网络,如 LeNet - 5、AlexNet中,由于当时计算能力和模型结构设计的限制,无法将网络叠加得很深。为了获取更大的 感受野,卷积网络中的 卷积层设置了较大的 卷积核,如 11 × 11 11×11 11×11和 5 × 5 5×5 5×5。然而,大 卷积核会导致计算量大幅增加,不利于训练更深层的模型,相应的计算性能也会降低。
后来的研究发现,通过堆叠2个 3 × 3 3×3 3×3 卷积核可以获得与 5 × 5 5×5 5×5 卷积核相同的 感受视野,同时参数量会更少( 3 × 3 × 2 + 1 < 5 × 5 × 1 + 1 3×3×2 + 1 < 5×5×1 + 1 3×3×2+1<5×5×1+1),因此 3 × 3 3×3 3×3 卷积核被广泛应用在许多 卷积神经网络中。在大多数情况下,通过堆叠较小的 卷积核比直接采用单个更大的 卷积核会更加有效。
但这并不意味着更大的 卷积核毫无用处。在某些领域,如自然语言处理,由于文本内容不像图像数据可以进行很深层的抽象,往往只需要较浅层的神经网络即可完成特征提取。在将 卷积神经网络应用于自然语言处理领域时,神经网络通常由较为浅层的 卷积层组成。但文本特征有时需要较广的 感受野让模型能够组合更多的特征(如词组和字符),此时直接采用较大的 卷积核将是更好的选择。
七 每层卷积是否只能用一种尺寸的卷积核
经典的神经网络,如 VGG结构,一般都属于层叠式网络,每层仅用一个尺寸的 卷积核,大量使用 3 × 3 3×3 3×3 卷积层。但实际上,同一层特征图可以分别使用多个不同尺寸的 卷积核
八 每层卷积是否只能用一种尺寸的卷积核
经典的神经网络,如 VGG结构,一般都属于层叠式网络,每层仅用一个尺寸的 卷积核,大量使用 3 × 3 3×3 3×3 卷积层。但实际上,同一层特征图可以分别使用多个不同尺寸的 卷积核,以获得不同尺度的特征,再把这些特征结合起来,得到的特征往往比使用单一 卷积核的要好。
GoogLeNet、Inception系列的网络,均是每层使用了多个 卷积核结构。输入的特征在同一层分别经过 1 × 1 1×1 1×1、 3 × 3 3×3 3×3和 5 × 5 5×5 5×5三种不同尺寸的 卷积核,再将分别得到的特征进行整合,得到的新特征可以看作不同 感受野提取的特征组合,与单一 卷积核相比,具有更强的表达能力。
九 如何减少卷积层参数量
使用堆叠小卷积核代替大卷积核
以 VGG网络为例,2个 3 × 3 3×3 3×3的 卷积核可以代替1个 5 × 5 5×5 5×5的 卷积核。这种方式在保证 感受野相同的情况下,显著减少了参数量,同时也提高了模型的训练效率和性能。
使用分离卷积操作
将原本 K × K × C K×K×C K×K×C的卷积操作分离为 K × K × 1 K×K×1 K×K×1和 1 × 1 × C 1×1×C 1×1×C的两部分操作。通过这种分离,在不影响输出结果的前提下,有效减少了卷积层所需的参数量,使得模型更加轻量化。
添加1×1的卷积操作
与分离卷积类似,在 K × K × C 1 K×K×C_{1} K×K×C1卷积前添加 1 × 1 × C 2 1×1×C_{2} 1×1×C2的卷积核(满足 C 2 < C 1 C_{2}<C_{1} C2<C1)。1×1卷积核可以对通道数进行调整,实现降维的效果,从而减少后续卷积操作的计算量和参数量。
在卷积层前使用池化操作
池化操作可以降低卷积层的输入特征维度,减少后续卷积层需要处理的数据量,进而减少卷积层的参数量。进一步,池化操作还能在一定程度上防止过拟合,提高模型的泛化能力。
十 在标准卷积中同时考虑通道和区域的优缺点
在标准卷积中,同时采用区域与通道处理的操作,每一个输出的特征像素都由所有通道的同一个区域提取而来,这种方式简化了卷积层内部的结构。但它也存在一些局限性,缺乏灵活性,在深层的网络结构中会使运算变得相对低效。
更为灵活的方式是使区域和通道的卷积分离开来,通道分离(深度分离)卷积网络由此诞生。Xception网络的结构基于 ResNet,将其中的卷积层换成了深度可分离卷积。Xception网络首先对每一个通道进行各自的卷积操作,有多少个通道就有多少个过滤器,得到新的通道特征矩阵之后,再对这批新通道特征进行标准的 1 × 1 1×1 1×1跨通道卷积操作。这种操作既提升了模型分类效果,又减少了大量的参数。
十一 采用宽卷积的好处
宽卷积和窄卷积实际上指的是卷积过程中的填充方法,分别对应 SAME填充和 VALID填充。SAME填充通常采用零填充的方式对卷积核不满足整除条件的输入特征进行补全,以使卷积层的输出特征维度与输入特征维度保持一致;VALID填充则不进行任何填充,在输入特征边缘位置若不足以进行卷积操作,则对边缘信息进行舍弃,因此在步长为1的情况下该填充方式的卷积层输出特征维度可能会略小于输入特征的维度。
总结
卷积层作为卷积神经网络的核心部分,其原理、类型以及各种优化策略对于模型的性能有着至关重要的影响。从基本的 卷积运算 到不同类型 卷积核 的特点,再到如何优化 卷积层 以减少参数量、提高运算效率,每一个环节都蕴含着丰富的知识和技巧。