GoogLeNet论文简读笔记(Going Deeper with Convolutions)


因为速读,我直接略过了Introduction和Related work,直接从motivation开始的

1.术语

  • topology 拓扑学(拓扑指网络布局,常见有总线、星型、环形、网状和混合等,决定设备连接方式,影响性能和可靠性。)
  • correlation statistics 相关统计
  • 非均匀稀疏数据结构。(当时算力支持不了)
  • arithmetic operations 算数运算
  • dense matrix multiplication 密集矩阵乘法
  • Top-5 error 评估指标(Top-5 Error通常用于评估模型在图像分类任务中的性能,特别是在大规模数据集上)

2.Inception块

Inception块是GoogleNet的核心组件。它的设计目的是在不显著增加计算复杂度的情况下,提高网络的表达能力和特征提取能力。
两种Inception结构

2.1基本结构

  • 1x1卷积层:用于减少通道数,降低计算复杂度。
  • 3x3卷积层:用于捕捉中等尺度的特征。
  • 5x5卷积层:用于捕捉较大尺度的特征。
  • 3x3最大池化层:用于保留空间信息,同时减少计算量。
    Inception模块的具体配置图二 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层的使用进一步增强了模型的正则化效果,减少了过拟合的风险。

  • 计算效率:尽管辅助分类器在推理阶段被移除,但在训练过程中,它们显著提高了模型的训练效率和性能。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值