卷积架构案例研究:GoogLeNet与ResNet深度解析
1. 卷积架构参数分布
在卷积神经网络中,全连接层的参数分布是一个关键问题。以一个全连接层为例,它在4096个神经元和一个7×7×512的体积之间存在密集连接。大部分神经网络的参数就隐藏在这些连接中。
在存储激活值和梯度时,卷积神经网络的早期部分由于具有最大的空间占用,需要大量的内存。例如,每张图像大约需要93MB的内存,对于大小为128的小批量,总内存需求约为12GB。尽管早期层由于其大的空间占用需要最多的内存,但由于稀疏连接和权重共享,它们的参数占用并不大。实际上,大部分参数是由最后的全连接层所需的。最终的7×7×512空间层与4096个神经元的连接需要7 × 7 × 512 × 4096 = 102,760,448个参数,而所有层的参数总数约为138,000,000,近75%的参数集中在一层连接中,其余大部分参数在最后的两个全连接层。总体而言,密集连接占神经网络参数占用的90%。
1×1卷积也是卷积架构中的一个重要技巧。虽然1×1卷积不会组合空间相邻特征的激活值,但当体积深度大于1时,它会组合不同通道的特征值。使用1×1卷积也是在不改变空间结构的基础上为架构引入额外非线性的一种方式,这种额外的非线性通过每层附加的ReLU激活实现。
2. GoogLeNet架构
GoogLeNet提出了一种新颖的概念——Inception架构。Inception架构是一种网络中的网络,其初始部分类似于传统的卷积网络,被称为茎(stem),关键部分是中间层,即Inception模块。
Inception模块的基本思想是,图像中的关键信息存在于不同的细节级别。使用大过滤器可以捕获包含有限变化的较大区域的信息,而使用小过滤器可以捕获较小区域的详细信息。由于我们事先不知道图像每个区域适合的细节级别,因此Inception模块通过并行使用三种不同大小的过滤器(1×1、3×3和5×5)来让神经网络灵活地在不同粒度级别上对图像进行建模。
GoogLeNet由九个顺序排列的Inception模块组成,因此可以选择许多不同的路径通过架构,得到的特征将代表非常不同的空间区域。例如,经过四个3×3过滤器后再经过1×1过滤器将捕获相对较小的空间区域,而经过许多5×5过滤器将产生更大的空间占用。近年来,批量归一化与Inception架构结合使用,简化了网络结构。
Inception模块由于大量不同大小的卷积操作会导致计算效率低下。因此,一种高效的实现方式是使用1×1卷积先减少特征图的深度。例如,使用64个不同的1×1过滤器可以将输入深度从256减少到64,这些额外的1×1卷积被称为Inception模块的瓶颈操作。通过这种方式,可以节省较大卷积的计算效率,因为应用瓶颈卷积后各层的深度降低了。
GoogLeNet的输出层也有独特的设计原则。通常在输出附近会使用全连接层,但GoogLeNet使用平均池化在最终激活图的整个空间区域上创建单个值,因此最终层创建的特征数量将恰好等于过滤器的数量。这种方法避免了在仅需预测类别标签的应用中使用大量参数连接最终卷积层和第一个全连接层。不过,平均池化表示会完全丢失所有空间信息,因此在使用时需要注意应用类型。与VGG相比,GoogLeNet的参数数量非常紧凑,参数数量减少了一个数量级,这主要得益于平均池化的使用,该方法后来在许多架构中成为标准。但GoogLeNet的整体架构计算成本更高。其22层的Inception架构能够处理不同尺度的对象,这种多粒度分解的灵活性是其性能的关键之一。
以下是不同网络在ILSVRC竞赛中的表现对比表格:
| 名称 | 年份 | 层数 | 前5错误率 |
| ---- | ---- | ---- | ---- |
| - | 2012年前 | ≤5 | > 25% |
| AlexNet | 2012 | 8 | 15.4% |
| ZfNet/Clarifai | 2013 | 8/> 8 | 14.8% / 11.1% |
| VGG | 2014 | 19 | 7.3% |
| GoogLeNet | 2014 | 22 | 6.7% |
| ResNet | 2015 | 152 | 3.6% |
mermaid流程图展示GoogLeNet的基本流程:
graph LR
A[输入图像] --> B[茎(传统卷积网络部分)]
B --> C[Inception模块1]
C --> D[Inception模块2]
D --> E[Inception模块3]
E --> F[Inception模块4]
F --> G[Inception模块5]
G --> H[Inception模块6]
H --> I[Inception模块7]
I --> J[Inception模块8]
J --> K[Inception模块9]
K --> L[平均池化]
L --> M[输出类别标签]
3. ResNet架构
ResNet使用了152层,几乎比以前的架构多了一个数量级。它在2015年的ILSVRC竞赛中获胜,前5错误率达到3.6%,是第一个达到人类水平性能的分类器。该准确率通过ResNet网络的集成实现,即使单个模型也能达到4.5%的准确率。
训练如此深的网络的主要问题是层间的梯度流动会受到深层大量操作的阻碍,这些操作可能会增大或减小梯度的大小。虽然深度增加可能导致梯度消失和爆炸等问题,但研究表明,使用批量归一化后,训练此类深度网络的主要问题可能并非这些,而是学习过程难以在合理时间内正确收敛。
由于分层特征工程的层式实现要求图像中的所有概念具有相同的抽象级别,但实际上有些概念可以通过浅层网络学习,而有些则需要细粒度的连接。例如,在一张马戏团大象站在方形框架上的图像中,大象的一些复杂特征可能需要大量层来提取,而方形框架的特征可能只需要很少的层。因此,使用固定深度的深层网络来学习概念会导致收敛速度不必要地变慢。
ResNet通过在层之间使用跳过连接(skip connections)来实现层间复制,并引入了特征工程的迭代视图。大多数前馈网络只包含层i和层(i + 1)之间的连接,而ResNet包含层i和层(i + r)(r > 1)之间的连接。例如,当r = 2时,跳过连接会将层i的输入复制并添加到层(i + r)的输出中,这种方法使反向传播算法有了传播梯度的“高速公路”,从而实现有效的梯度流动。这种基本单元被称为残差模块(residual module),整个网络由许多这样的基本模块组成。
在大多数层中,使用适当填充的过滤器和步长为1的卷积,使输入的空间大小和深度在层间保持不变,此时可以直接将第i层的输入添加到(i + r)层。但有些层使用步长卷积将每个空间维度缩小2倍,同时使用更多过滤器将深度增加2倍,在这种情况下,需要在跳过连接上应用线性投影矩阵来调整维度,该投影矩阵定义了一组步长为2的1×1卷积操作,其参数在反向传播过程中学习。
ResNet的原始思想是仅在层i和(i + r)之间添加连接,后来的增强版本如DenseNet通过在所有层对之间添加连接提高了性能。ResNet中基本单元的重复使得可以通过多次跳过连接在进行很少的前向计算后将输入传播到输出。
跳过连接为梯度流动提供了不受阻碍的路径,对反向传播算法的行为有重要影响。它使从输入到输出存在多条不同长度的路径,最短路径实现最多的学习,较长路径可视为残差贡献。这使得学习算法能够为特定输入选择合适的非线性级别,输入如果可以用少量非线性分类则会跳过许多连接,而结构更复杂的输入可能会经过更多连接来提取相关特征,因此这种方法也被称为残差学习。
研究表明,ResNet的深层残差响应通常相对较小,这验证了固定深度会阻碍正确学习的直觉。在这种情况下,收敛通常不是问题,因为较短路径可以通过不受阻碍的梯度流动实现大部分学习。ResNet的架构类似于浅层网络的集成,因为它提供了许多较短长度的替代路径,只有在必要时深层路径才会进行少量学习。因此,在预测时从训练好的ResNet中删除一些层不会像其他网络(如VGG)那样显著降低准确率。
阅读关于宽残差网络的研究可以获得更多见解。该研究表明,增加残差网络的深度并不总是有帮助,因为大多数极深的路径实际上并未被使用。跳过连接实际上增加了网络的宽度,通过限制总层数(如从150层减少到50层)并增加每层的过滤器数量,可以获得更好的结果。这种方法也有助于并行化操作。
4. ResNet架构的变体
自ResNet架构提出以来,为了进一步提高性能,提出了几种变体:
-
Highway Networks
:独立提出的Highway Networks引入了门控跳过连接的概念,可以被视为更通用的架构。在Highway Networks中,使用门代替恒等映射,但关闭的门不会传递太多信息。在这种情况下,门控网络的行为与残差网络不同,但残差网络可以被视为门始终完全打开的门控网络的特殊情况。Highway Networks与LSTM和ResNet密切相关,但ResNet在图像识别任务中表现更好,因为它专注于通过多条路径实现梯度流动。
-
ResNext
:原始的ResNet架构在跳过连接之间使用简单的层块,而ResNext通过在跳过连接之间使用Inception模块对这一原则进行了改进。
-
DenseNet
:不使用跳过连接,而是在每对层之间使用卷积变换。在一个有L层的前馈网络中,不是使用L个变换,而是使用L(L - 1)/2个变换。即第l层使用前(l - 1)层所有特征图的串联,其目标与跳过连接类似,都是让每层从有用的抽象级别中学习。
-
Stochastic Depth
:在训练时随机丢弃跳过连接之间的一些块,但在测试时使用完整的网络。这种方法类似于Dropout,但Dropout是通过丢弃节点使网络变窄,而随机深度更侧重于改善梯度流动而不是防止特征共适应。
5. 深度对神经网络的影响
近年来,ILSVRC竞赛中性能的显著提升主要得益于计算能力的提高、数据可用性的增加以及架构设计的改变,这些改变使得能够有效地训练更深的神经网络。这三个方面相互支持,因为只有在有足够数据和提高计算效率的情况下,才能对更好的架构进行实验。这也是为什么直到最近才对一些存在已知问题的旧架构(如循环神经网络)进行微调的原因之一。
从2012年到2015年的短时间内,神经网络的准确率迅速提高,这在像图像识别这样经过充分研究的机器学习应用中是非常显著的。另一个重要的观察是,神经网络深度的增加与性能提升有密切关系,但也需要注意深度带来的训练问题,如ResNet通过引入跳过连接等方法解决了部分问题。
mermaid流程图展示ResNet的基本流程:
graph LR
A[输入图像] --> B[初始卷积层]
B --> C[残差模块1]
C --> D[残差模块2]
D --> E[残差模块3]
E --> F[残差模块4]
F --> G[残差模块...(多个残差模块)]
G --> H[输出层]
subgraph 残差模块
I[卷积层1] --> J[卷积层2]
K[输入] --> L(+)
J --> L
L --> M[ReLU激活]
end
综上所述,GoogLeNet和ResNet等架构在卷积神经网络的发展中具有重要意义,它们通过不同的设计原则和创新方法解决了深度网络训练和性能优化等问题,为后续的研究和应用提供了重要的参考。
卷积架构案例研究:GoogLeNet与ResNet深度解析
6. 不同架构的对比总结
为了更清晰地了解GoogLeNet和ResNet以及其他相关架构的特点,我们对它们进行详细对比,以下是一个对比表格:
| 架构名称 | 层数 | 参数特点 | 计算效率 | 性能表现 | 独特设计 |
| ---- | ---- | ---- | ---- | ---- | ---- |
| GoogLeNet | 22层 | 参数数量紧凑,相比VGG减少一个数量级,主要得益于平均池化 | 整体架构计算成本较高 | 2014年ILSVRC竞赛表现出色,前5错误率6.7% | 采用Inception架构,并行使用不同大小过滤器,使用1×1卷积做瓶颈操作 |
| ResNet | 152层 | 大量使用跳过连接,参数分布在不同层和跳过连接中 | 训练时因梯度流动问题需特殊处理,但通过变体可优化 | 2015年ILSVRC竞赛获胜,前5错误率3.6% | 引入残差模块和跳过连接,解决深度网络训练收敛问题 |
| VGG | 19层 | 全连接层参数多,参数占用大 | 计算量较大 | 2014年ILSVRC竞赛有较好表现,前5错误率7.3% | 结构简单,层式设计 |
| AlexNet | 8层 | 较早架构,参数分布在卷积和全连接层 | 计算效率相对较低 | 2012年ILSVRC竞赛有突破,前5错误率15.4% | 引入ReLU激活函数等创新 |
从表格中可以看出,不同架构在层数、参数特点、计算效率和性能表现等方面存在差异。GoogLeNet通过Inception架构提高了特征提取的灵活性,减少了参数数量;ResNet则通过跳过连接解决了深度网络训练的难题,实现了更高的准确率。
7. 架构选择建议
在实际应用中,选择合适的卷积架构需要考虑多个因素,以下是一些建议:
-
数据量和计算资源
:
- 如果数据量较小且计算资源有限,可选择层数较少的架构,如AlexNet。它结构相对简单,训练所需资源较少。
- 若数据量充足且有强大的计算资源支持,可考虑使用ResNet或GoogLeNet等深度架构,它们能在大规模数据上发挥更好的性能。
-
任务需求
:
- 对于对空间信息要求不高,仅需进行类别预测的任务,GoogLeNet的平均池化输出层设计较为合适,可减少参数使用。
- 当需要处理复杂图像,且希望网络能自动选择合适的特征提取深度时,ResNet的跳过连接和残差学习机制能更好地满足需求。
-
性能要求
:
- 如果追求高准确率,ResNet在图像识别任务中表现出色,尤其是在大规模竞赛中取得了优异成绩。
- 若对性能和参数数量有平衡需求,GoogLeNet的紧凑参数和多粒度分解能力是不错的选择。
8. 架构优化策略
为了进一步提高卷积架构的性能,可以采用以下优化策略:
-
批量归一化
:在GoogLeNet和ResNet中都可以应用批量归一化技术。它可以加速网络的训练过程,使网络更加稳定,减少梯度消失和爆炸的问题。具体操作是在每一层的输入之前对数据进行归一化处理,将数据的均值调整为0,方差调整为1。
-
学习率调整
:根据训练过程中的损失变化动态调整学习率。例如,在训练初期使用较大的学习率,使网络能够快速收敛;在训练后期逐渐减小学习率,以避免网络在最优解附近震荡。可以使用学习率衰减策略,如每训练一定的轮数将学习率降低一定比例。
-
数据增强
:通过对训练数据进行随机变换,如旋转、翻转、缩放等,增加数据的多样性。这样可以提高网络的泛化能力,使其在面对不同的输入时都能有较好的表现。
9. 未来发展趋势
卷积架构在图像识别等领域已经取得了显著的成果,但仍有许多发展空间。以下是一些可能的未来发展趋势:
-
架构融合
:将不同架构的优点进行融合,创造出更强大的卷积架构。例如,将ResNet的跳过连接和GoogLeNet的Inception模块结合,可能会产生新的突破。
-
自适应架构
:设计能够根据输入数据自动调整架构的网络,使网络能够更好地适应不同的任务和数据特点。
-
多模态融合
:将图像数据与其他模态的数据(如文本、音频)进行融合,实现更复杂的任务,如图像描述生成、视频理解等。
mermaid流程图展示架构优化和未来发展的关系:
graph LR
A[现有架构] --> B[架构优化策略]
B --> C[性能提升的架构]
C --> D[架构融合]
C --> E[自适应架构]
C --> F[多模态融合]
D --> G[未来强大架构1]
E --> G
F --> G
通过对GoogLeNet和ResNet等卷积架构的深入研究,我们了解了它们的设计原理、性能特点和应用场景。在实际应用中,我们可以根据具体需求选择合适的架构,并采用优化策略提高其性能。同时,关注未来的发展趋势,不断探索新的架构和方法,将有助于推动卷积神经网络在更多领域的应用和发展。
超级会员免费看

被折叠的 条评论
为什么被折叠?



