GoogLeNet论文简读笔记
因为速读,我直接略过了Introduction和Related work,直接从motivation开始的
1.术语
- topology 拓扑学(拓扑指网络布局,常见有总线、星型、环形、网状和混合等,决定设备连接方式,影响性能和可靠性。)
- correlation statistics 相关统计
- 非均匀稀疏数据结构。(当时算力支持不了)
- arithmetic operations 算数运算
- dense matrix multiplication 密集矩阵乘法
- Top-5 error 评估指标(Top-5 Error通常用于评估模型在图像分类任务中的性能,特别是在大规模数据集上)
2.Inception块
Inception块是GoogleNet的核心组件。它的设计目的是在不显著增加计算复杂度的情况下,提高网络的表达能力和特征提取能力。
2.1基本结构
- 1x1卷积层:用于减少通道数,降低计算复杂度。
- 3x3卷积层:用于捕捉中等尺度的特征。
- 5x5卷积层:用于捕捉较大尺度的特征。
- 3x3最大池化层:用于保留空间信息,同时减少计算量。
图二 Inception模块的具体配置
2.2优点
- 多尺度特征提取:通过并行使用不同大小的卷积核和池化层,Inception块能够同时捕捉到不同尺度的特征,从而提高网络的表达能力。
- 计算效率:1x1卷积核在Inception块中起到了降维的作用,减少了计算量和参数量,使得网络在保持高性能的同时,计算复杂度相对较低。
- 模块化设计:Inception块的设计是模块化的,可以方便地堆叠和扩展,使得网络结构更加灵活和易于调整。(与VGG相同)
3 1*1卷积核
1x1卷积层在深度卷积神经网络中具有多种作用,包括减少通道数(降维)、增加通道数(升维)和引入非线性变换。通过合理使用1x1卷积层,可以在不显著增加计算复杂度的情况下,提高网络的表达能力和特征提取能力。
3.1 减少通道数(降维)
作用:通过1x1卷积层,可以显著减少特征图的通道数,从而降低计算复杂度。
原理:假设输入特征图的尺寸为 H x W x C(高度 x 宽度 x 通道数),使用一个1x1卷积核,卷积核的数量可以设置为 C’(C’ < C)。这样,经过1x1卷积后,输出特征图的通道数变为 C’,从而减少了计算量。
应用:在Inception块中,1x1卷积层通常用于在3x3和5x5卷积层之前减少通道数,以降低计算复杂度。
3.2增加通道数(升维)
作用:通过1x1卷积层,可以增加特征图的通道数,从而增强特征的表达能力。
原理:同样假设输入特征图的尺寸为 H x W x C,使用一个1x1卷积核,卷积核的数量可以设置为 C’(C’ > C)。这样,经过1x1卷积后,输出特征图的通道数变为 C’,从而增加了特征的多样性。
应用:在某些情况下,1x1卷积层可以用于在网络的早期阶段增加通道数,以捕捉更多的特征信息。例如,在ResNet的残差块中,1x1卷积层可以用于调整输入特征图的通道数,使其与后续的3x3卷积层匹配。
3.3.非线性变换
作用:1x1卷积层还可以引入非线性变换,增强网络的表达能力。
原理:1x1卷积层可以看作是一种全连接层,通过在每个空间位置上进行线性变换,然后应用激活函数(如ReLU),引入非线性。
应用:在网络的各个层中,1x1卷积层可以用于引入非线性变换,增强网络的表达能力。
4.深度和宽度:GoogleNet的设计理念
GoogleNet通过堆叠多个Inception模块,构建了一个非常深的网络(22层),同时保持了相对较小的计算复杂度。这种设计使得网络既能捕捉到复杂的特征,又能在计算资源有限的情况下高效运行。
4.1深度(Depth)
深度指的是网络的层数。GoogleNet通过堆叠多个Inception模块,构建了一个非常深的网络。深度的增加使得网络能够捕捉到更复杂的特征,从而提高模型的表达能力。
Inception模块的作用:Inception模块通过并行使用不同大小的卷积核和池化层,能够在同一层中捕捉到不同尺度的特征。这种设计使得网络在深度增加的同时,能够更全面地捕捉到图像中的各种特征。
深度带来的挑战:随着网络深度的增加,梯度消失和梯度爆炸问题变得更加严重。为了缓解这些问题,GoogleNet在网络的中间层添加了两个辅助分类器,这些辅助分类器在训练过程中提供了额外的梯度信号,帮助网络更好地学习。
4.2宽度(Width)
宽度指的是网络中每一层的通道数。GoogleNet通过在Inception模块中使用1x1卷积层来控制通道数,从而在保持计算复杂度相对较低的情况下,增加了网络的宽度。
1x1卷积层的作用:1x1卷积层在Inception模块中起到了降维的作用,减少了计算量和参数量。通过在3x3和5x5卷积层之前使用1x1卷积层,GoogleNet能够在不显著增加计算复杂度的情况下,增加网络的宽度。
宽度的优势:增加网络的宽度可以增强特征的多样性,从而提高模型的表达能力。通过在不同尺度的卷积核和池化层之间进行并行计算,GoogleNet能够在同一层中捕捉到更多的特征信息。
4.3计算复杂度
GoogleNet的设计目标之一是在保持计算复杂度相对较低的情况下,提高网络的表达能力。通过以下几种方式,GoogleNet实现了这一目标:
1x1卷积层:在Inception模块中广泛使用1x1卷积层,减少了计算量和参数量。
全局平均池化:在网络的最后一层使用全局平均池化(Global Average Pooling)替代全连接层,减少了参数量,提高了模型的泛化能力。
辅助分类器:在网络的中间层添加辅助分类器,提供了额外的梯度信号,帮助网络更好地学习。
5.辅助分类器部分
辅助分类器是GoogleNet设计中的一个重要创新,通过在网络的中间层添加额外的分类器,提供了额外的梯度信号,帮助网络更好地学习。其具体结构包括平均池化层、1x1卷积层、全连接层、Dropout层和线性层(带Softmax激活函数)。这些设计使得GoogleNet在保持计算复杂度相对较低的情况下,显著提高了模型的性能和训练效率。
5.1辅助分类器的结构
5.1.1平均池化层(Average Pooling Layer)
-
滤波器尺寸:5x5
-
步幅:3
-
输出尺寸:对于Inception(4a)阶段,输出为4x4x512;对于Inception(4d)阶段,输出为4x4x528。
5.1.21x1卷积层(1x1 Convolution Layer)
-
卷积核数量:128
-
作用:用于维度减少(dimension reduction)
-
激活函数:ReLU(Rectified Linear Unit)
5.1.3全连接层(Fully Connected Layer)
-
单元数:1024
-
激活函数:ReLU
Dropout层(Dropout Layer)
- Dropout比率:70%(即70%的输出被随机丢弃)
5.1.4线性层(Linear Layer)
-
作用:作为分类器
-
激活函数:Softmax
-
类别数:1000(与主分类器预测相同的1000个类别)
-
推理阶段移除:在推理阶段,辅助分类器被移除,仅保留主分类器。
5.2辅助分类器的作用
辅助分类器的主要作用是在训练过程中提供额外的梯度信号,帮助网络更好地学习。具体来说:
-
梯度信号增强:通过在网络的中间层添加辅助分类器,可以在训练过程中提供额外的梯度信号,缓解梯度消失问题,使得网络能够更深地学习。
-
正则化效果:Dropout层的使用进一步增强了模型的正则化效果,减少了过拟合的风险。
-
计算效率:尽管辅助分类器在推理阶段被移除,但在训练过程中,它们显著提高了模型的训练效率和性能。