文章目录
问题背景
- 随着神经网络变得更深(层数变多),模型的训练过程也会变得更加困难。
- 当神经网络的深度增加,就会出现梯度消失和梯度下降现象,妨碍模型的收敛。不过,这种情况可以通过归一化的模型初始化和中间的归一化层基本解决。
- 但是,尽管在增加了归一化技术的情况下很深的神经网络可以收敛,又出现了另外一个问题,即随着模型深度的增加,模型的准确率反而下降。这个问题不是由于过拟合引起的,因为模型的训练误差也会增加。
- 按理说,更深的模型得到的结果应该是浅的模型的结果的子集,因此至少不应该准确性更低,因为新增加的层即使不能对前一些层的输出结果进行进一步的优化,将输入原封不动地输出出来也是不会降低模型的训练误差的。
数据预处理
- 图像裁剪 :将图像的短边随机裁剪到
[256, 480]
的范围内,然后将图像及其水平翻转结果中中随机裁剪出一个224 × 224
的图像块。 - 像素处理:每一个像素都减去该像素在整个数据集中的平均值,并进行了一些颜色增强处理(大概就是调一调图像的亮度和饱和度之类)。
神经网络模型
- 基本思路:显式地让神经网络中输出层学习的函数是原有的网络输出和网络输入之间的差值,而不是直接学习输出。作者们认为这样的网络对于模型来说学习难度更低。
- 实现方式:在模型中增加"捷径连接"可以实现,即增加跳过一个或多个层的连接通路。这些连接通路没有增加额外的参数,也不会增加计算复杂性。
- 输入和输出维度不同的情况 :目前的
ResNet
取折中,即只在需要进行维度投影的地方进行投影,而不进行额外的投影了。- 全连接层投影:如果残差块的输入和输出的维度不同,可以通过对输入进行线性投影(即通过一个全连接层)来实现尺寸匹配,只有尺寸匹配的两个向量才能进行逐元素的加法。
- 卷积层 1 × 1 卷积 :对于卷积层输入和输出维度不同,可以通过一个
1 × 1
的卷积,来不改变输入的特征图的长度和高度,而只修改其通道的数量,可以理解为也就是一种全连接操作。 - 零填充 :对于全连接层,将输出比输入多出来的那些维度的输入用
0
进行填充。
- 残差块中网络的层数和类型:对于层数,作者们在实验中尝试了两层或三层,结果都是可行的,他们认为更多层也是可能的;但是,如果里面只有一个神经网络层,经过实验之后没有发现起作用;对于类型,作者们提出全连接层和卷积层都是可行的。
- 瓶颈结构设计:当神经网络模型的深度过深时,在模型中添加了一种瓶颈结构。这种结构在一个残差块中,先对输入进行降维,然后再对中间得到的低维结果进行升维。
- 激活函数 :该神经网络中使用的激活函数是
ReLU
。 - 归一化方法:在模型中每一个卷积层之后,激活函数之前加入了一个批量归一化层(Batch Normalization)。
- 优化器 :使用
SGD
对模型进行优化训练,批次大小设置为256
。学习率从0.1
开始,当错误率停滞后,就将学习率除以10
。优化器使用了0.9
的动量和0.0001
的权重衰减。 - 迭代次数:模型训练总共迭代了六万次。
- 其他注意事项 :没有使用
Dropout
和Maxout
技术(因为没有全连接层了,所以没有必要)。 - 测试方法 :对于一张图像,首先将其缩放到不同的大小,再分别从每一个大小的图像中随机抽取出
10
个子图像块,然后对这些图像块分别进行预测,把结果进行投票平均。对于刷榜,这样的方法挺有作用,但是实际上不会这样使用,因为花费太高。 - 模型型号:有18层、34层、50层、101层、152层共五种版本,这些不同版本的模型的区别是其中包含的不同类型的残差块的个数不同。
模型性能
- 使用了残差连接的模型可以更方便地进行优化,并且能够从显著更深的模型结构中获得比传统模型高得多的准确性。与之对比,没有使用残差连接的神经网络的训练误差更高。
- 使用 ImageNet 数据集构造的一个 152 层的神经网络,比 VGG 的网络层数多八倍,但是复杂度却更低。由多个这样的神经网络构成的集群在 ImageNet 的测试集上实现了 3.57% 的 top-5 错误率,赢得了2015年 ImageNet 大规模视觉识别挑战赛的冠军。
- 在
CIFAR-10
这样的较小的数据集上,也可以训练超过100
层甚至超过1000
层的神经网络。 - 在
COCO
目标检测数据集上训练的模型相较于之前的模型有28%
的相对提升。 - 该模型还赢得了 ImageNet 目标检测、ImageNet 定位、COCO 目标检测和 COCO 图像分割的冠军。
知识点积累
- 神经网络深度的重要性:神经网络的深度对于很多视觉识别任务来说都是非常重要的。网络的深度增加,模型可以更好地捕获图像中的低水平、中等水平和高水平的特征。
英语单词积累
- reformulate 重新制订
- notorious 臭名昭著的
- plateaus 停滞