AlexNet、GoogLeNet(Inception)、VGGNet、ResNet和Xception
AlexNet
- 由 Alex Krizhevsky 和同事们开发
- 赢得了2012年ImageNet ILSVRC (大规模视觉识别挑战赛):前五错误率17% vs. 第二名26%
- 输入:227 × 227 RGB图像
- 输出:1,000个类别的概率
- 使用堆叠的卷积层
层 | 类型 | 映射 | 尺寸 | 核心尺寸 | 步长 | 填充 | 激活 |
---|---|---|---|---|---|---|---|
输出 | 全连接 | - | 1,000 | - | - | - | Softmax |
F10 | 全连接 | - | 4,096 | - | - | - | ReLU |
F9 | 全连接 | - | 4,096 | - | - | - | ReLU |
S8 | 最大池化 | 256 | 6×6 | 3×3 | 2 | 有效 | - |
C7 | 卷积 | 256 | 13×13 | 3×3 | 1 | 相同 | ReLU |
C6 | 卷积 | 384 | 13×13 | 3×3 | 1 | 相同 | ReLU |
C5 | 卷积 | 384 | 13×13 | 3×3 | 1 | 相同 | ReLU |
S4 | 最大池化 | 256 | 13×13 | 3×3 | 2 | 有效 | - |
C3 | 卷积 | 256 | 27×27 | 5×5 | 1 | 相同 | ReLU |
S2 | 最大池化 | 96 | 27×27 | 3×3 | 2 | 有效 | - |
C1 | 卷积 | 96 | 55×55 | 11×11 | 4 | 有效 | ReLU |
输入 | 输入 | 3 (RGB) | 227×227 | - | - | - | - |
AlexNet:数据增强
- 训练数据通常是有限的
数据增强可以“免费”获得额外的训练数据:
- 减少过拟合
- 使模型更具泛化能力
- 变化应尽可能真实
- 变化应该是可学习的(而非随机噪声)
示例:
- 平移,旋转,缩放,翻转,对比度调整等。
- 在现代深度网络的训练中广泛使用
AlexNet:局部响应规范化(LRN)
局部响应规范化
- 最强烈激活的神经元会抑制位于相同位置的相邻特征图中的其他神经元
- 类似的竞争性激活在生物神经元中也被观察到
- ( r ):控制特征图的范围
- AlexNet 使用 ( r = 2 ):一个强神经元会抑制相同空间位置和相邻特征图(当前层上方或下方)的神经元
结构特点:
- 5个卷积层,3个全连接层。
- 使用ReLU非线性激活函数。
- 局部响应归一化(LRN)。
- 重叠的最大池化。
优点:
- 相对于先前的模型,表现出色。
- 使用ReLU减少了训练时间。
- 介绍了Dropout减少过拟合。
缺点:
- 结构相对较简单,现在已被更复杂的模型超越。
- 较大的模型尺寸,参数量大。
GoogLeNet(InceptionNet)
- 由 Christian Szegedy 等人从 Google Research 开发
- 赢得了 ILSVRC 2014 挑战赛(前五错误率 < 7%)
引入 Inception 模块
包括 1x1 卷积
- 不能捕捉空间模式
- 但能捕捉不同特征图的模式
- 结合 1x1 与其他层以增强学习能力
- 6个卷积层(带有可学习权重)
- 超参数:每个卷积层的特征图数量
GoogLeNet:架构
比 AlexNet 深得多
- 但比 AlexNet 有更少的可学习参数(600万 vs. 6000万)
- 广泛使用 Inception 模块
- 使用步长为2的层来减少空间分辨率
从输入层到分类输出的softmax层,展示了各层的连接方式和每层的配置,包括卷积层、最大池化层、局部响应规范化层、全连接层,以及dropout层和全局平均池化层。箭头表示数据流动,每一层的输出维度也被明确标注。图示中的“带标签的小方块”表示 Inception 模块。
结构特点:
- 引入Inception模块,含有1x1, 3x3, 5x5卷积和3x3最大池化。
- 22层深。
- 使用全局平均池化取代全连接层。
优点:
- 参数数量少于AlexNet。
- 通过Inception模块增加了网络宽度,提高了效率。
缺点:
- 架构相对复杂,设计和调优挑战较大。
- 没有显式地处理特征图尺寸减小。
VGGNet
- 在 ILSVRC 2014 中获得亚军
- 由来自牛津大学视觉几何组(VGG)的 Karen Simonyan 和 Andrew Zisserman 开发
- 经典设计,VGG-16 和 VGG-19(具有16层和19层可学习权重的网络)
VGG-16 的网络架构图,展示了从输入层到输出层的各层次结构及其连接方式,包括卷积层、最大池化层、全连接层,以及softmax输出层。图中每个矩形代表网络中的一层,颜色代码表示层的类型:卷积+ReLU(紫色),最大池化(红色),全连接+ReLU(绿色)和softmax(橙色)。
结构特点:
- 16或19层网络,全都使用3x3卷积和2x2最大池化。
- 统一的网络结构。
优点:
- 结构简单,易于理解。
- 非常适合迁移学习。
缺点:
- 非常深的网络导致计算成本高。
- 参数数量非常庞大,需要大量存储资源。
ResNet 残差网络(Residual Network)
- 意为残差网络(Residual Network)
- 由 Kaimin He 等人开发
- 赢得了2015年ILSVRC(大规模视觉识别竞赛)前五错误率低于3.6%
非常深的网络架构
- 不同变体包括34层、50层、101层和152层
- 但这会使训练变得困难
- 关键是使用残差单元(Residual Units)
残差学习
结构
- 跳过连接,输入作为输出的一部分
更有效的训练:
- 初始化的网络层倾向于输出0,现在复制输入(通常是预期的)
- 未学习的层被跳过,不会阻碍整个网络的改进
上图展示了残差学习的概念,其中包括一个基本的层级结构,上方的“h(x)”代表一个没有跳过连接的标准层的输出,而下方的“f(x) = h(x) - x”展示了添加了跳过连接的残差学习结构,这里的输入“x”直接加到了“Layer 2”的输出上。另外,有一个表示层阻塞反向传播的图标,以及一个残差单元示例,显示了当层没有学习时的处理方式。
ResNet:架构
- 开始/结束时与 GoogLeNet 相似
- 深层堆叠的残差单元
ResNet 架构的概览,包括输入层、最大池化层、多个卷积层,以及在顶部的全连接层和softmax输出层。另外还有一个用于特征图尺寸或深度变化时的跳过连接示意图。右侧小图中展示了具有批量归一化(BN)和ReLU激活函数的残差单元的详细结构,其中红色虚线指示了跳过连接,当特征图大小或深度改变时会使用这种连接。
- 残差单元被广泛用作其他网络架构的构建模块
- 例如,Google Inception-v4结合了GoogLeNet和ResNet的理念,实现了约3%的前五错误率
结构特点:
- 引入残差学习单元简化了学习过程。
- 可以构建非常深的网络(例如,152层)。
优点:
- 可以训练上百层的网络而不会退化。
- 解决了梯度消失问题。
缺点:
- 极深的网络可能导致模型冗余。
- 模型复杂,需要更多的资源来训练。
Xception
- 意为极端的Inception
- 类似于Inception-v4,结合了GoogleNet和ResNet的理念
但是用深度可分离卷积层替换了Inception模块
- 只针对空间的过滤器
- 跨通道模式(1x1卷积层)
- 假设空间和跨通道模式可以分别建模
- 更少的参数,更少的内存,更少的计算量,甚至可能表现更好
- 对于通道非常少的情况不适用(例如,应在一些普通卷积层之后应用)
结构特点:
- 使用深度可分离卷积代替标准Inception模块。
- 增强了跨通道和空间特征的建模。
优点:
- 计算效率高,参数数量少。
- 在多个基准测试中表现优异。
缺点:
- 对于特征通道数较少的数据集可能不是最优选择。
- 理解和实现比标准卷积更复杂。
Inception
模块是一种深度学习架构中的构建块,最初是在GoogLeNet,即Inception v1网络中引入的。它的核心思想是在同一层网络内并行地应用多种不同尺寸的卷积滤波器,然后将结果合并。这样做的目的是让网络能够在同一层内学习到多尺度的空间特征。
Inception模块通常包括以下几个部分:
- 1x1卷积:用于降低输入通道的维度,减少计算量。
- 3x3卷积:常规大小的卷积,能够捕捉到中等尺寸的特征。
- 5x5卷积:更大的卷积核捕捉更大范围的特征。
- 3x3最大池化:提供另一种形式的特征池化。
- 每个分支的输出通常在通道维度上被拼接起来。
在Inception的后续版本中,例如Inception v3和Inception v4,引入了一些改进和变体,如使用更多的1x1卷积进行降维,引入了深度可分离卷积,并且5x5卷积被两个3x3卷积序列替代以减少参数数量。
Inception模块的优势在于:
- 多尺度特征学习:能够同时捕获到图像中的多种尺度特征。
- 降低计算复杂度:通过1x1卷积减少维度,降低了参数数量和计算量。
- 提高网络宽度:而不是深度,增强网络的表达能力,同时减少了过拟合的风险。