针对大批量图片识别的深层卷积神经网络
论文地址:https://arxiv.org/abs/1409.1556
[置顶]https://hit-scir.gitbooks.io/neural-networks-and-deep-learning-zh_cn/content/chap3/c3s5ss1.html强烈推荐学习。
特点:使用3x3的卷积滤波器,在16-19权重层(weight layers) 表现出色。
介绍:卷积神经网络在大规模的图像和视频识别取得了很大成功。这多亏了大量的公共数据集,比如ImageNet,以及诸如GPU的出现。ILSVRC专门竞赛也推动了卷积网络的发展。20110年的冠军是High dimensional shallow feature encodings(Perronnin et al),2012年的冠军是deep Nets(Krizhevsky et al).
这篇文章,提出另一种重要的结构——它的深度。即稳定的通过增加更多卷积层增加这个网络的深度,而这也更容易因为使用了非常小的卷积滤波器。
结果是,我们创造出了显然更准确的神经网络。
论文结构:Sect.2一些ConvNet配置
Sect.3图片分类和评估的细节
Sect.4 在ImageNet上分类任务比较
Sect.5 总结
- ConvNet配置
2.1结构
在训练的过程,输入是固定的224*224RGB图片。唯一的预处理是,减小每一个像素RGB平均值。卷积核3x3,但是有时候也会使用1x1的卷积核,相当于线性变换。stride是1个像素。Padding 是根据卷积后预留的。比如,对于3x3 conv ,padding为1, pooling 由5层max-pooling所设置的。 Max-pooling 也是在-个2x2 像素窗(pixel window)上运行的,stride是2.
紧接着3个FC是一个卷积层的栈。第一个拥有4096个通道,第三个1000个通道对应ILVSRC分类的1000个类。最后一层是soft-max 层,在所有网络中全连接层的结构都是一样的。
所有的隐藏层都采用了ReLU作为激活函数(ImageNet classification with deep convolutional neural networks. In NIPS, pp. 1106–1114, 2012),并且强调所有网络不包含Local Response Normalization:这种归一化不会提升精度,但是会导致内存和算力的浪费。
(weights 的计算?)
2.2配置

为什么只采用3x3的卷积核? 两个3x3卷积核的有效接收视场(effective receptive field)是5x5,三个是7x7,为什么不用一个大的7x7卷积核代替呢?首先,引入了三个ReLU层而不是一个,这使得决定函数更加有评价性。其次,我们减少了参数的数量:假定3x3卷积层的输出都有C个通道,这个网络则对应3(32C2)=27C2个权重。,同时一个7x7的卷积层需要72C2=49C2 参数。多了81%, 这可以看成是对7x7的卷积滤波器施加了正则化。
对1x1卷积层的合并可以看成是一种增加决定函数非线性的方法,而不会影响卷积层的接收视场。
- 分类的架构
- 训练
训练通过优化多项逻辑回归目标(multinomial logistic regression objective)使用momentum的小批量的梯度下降。Batch size为256, momentum 为0.9.训练由weight decay (L2 weight decay 惩罚函数设置为5e-4),和对于前两个全连接层的dropout层正则化(dropout 为0.5)。学习率最初为0.01, 之后按照10的因子减少,当validation set accuracy 停止改进的时候。 最终,学习率减少了三倍, 学习在370k迭代(74个epochs). 我们推测尽管有大量的网络参数以及与(Krizhevsky et al., 2012),相比更大的深度,这些网络要求更少epochs来收敛因为(a) 由更深的深度和更小的卷积导致的不清楚的归一化;(b)对特定层的预初始化。
对网络权重的初始化是如此的重要, 因为糟糕的初始化梯度十分不稳定。为了规避这个问题,开始时训练A,(对初始化要求不高)。 之后训练更深的结构,我们初始化最开始的四个卷积层以及最后的三个全连接层。
【如何初始化?】
图片预处理:随机裁剪(每个SGD迭代一次裁剪)。水平翻转。任意的RGB色移。
S(training scale)为256或384.为了加速S=384网络训练,由S=256的网络权重预训练,之后我们使用更小的学习率10e-3.也可以将S设置成一个范围如[256,512].
测试首先,对输入进行变换到预定义的最小图像边长,以Q代表(Q不一定等于S)。 按照(Sermanet et al., 2014)的方式。全连接层首先被转换为卷积层(第一个全连接层转换为7x7,后两个转换为1x1 conv)。产生的全卷积层被应用到整个未裁剪的图像。 结果是一个分类的分数图(class score map),通道数和分类数相等,以及一个可变空间分辨率,这取决于图片的尺寸。最后为了获得一个固定尺寸的图片分类分数的向量,分类分数图是空间平均的(spatially pooled).同样为了增强测试,我们水平翻转图片;soft-max函数用于最后一层的归一化。
因为全卷积层网络被应用到整个图片,所以没有必要在测试的时候也进行裁剪。同时使用一系列crops可以提高准确率,因为它带来的是对输入图片更细的采样相比全卷积网络。
同样的,多样化的crop评估对于密的评估十分重要,由于不同的卷积边界条件:当应用一个ConvNet到一个crop,卷积特征图被0填充,而在密估计的情况下,同样的裁剪的填充来自于邻近区域,这增加了网络接收视场的,所以有更多内容被捕获。而相信实际上对多样性裁剪不符合隐藏的准确率增加。
3.3
实现细节 :C++ cafe toolbox。多GPU训练利用了数据并行性,是通过分批将图片送入不同GPU来实现的。在计算每个GPU batch的梯度后,梯度被平均化以获得全部batch的梯度。 On a system equipped with four NVIDIA Titan Black GPUs, training a single net took 2–3 weeks depending on the architecture
4 分类测试
Dataset: training :1.3M images
Validation:50K images
Testing:100k images
Evalution: TOP-1 and TOP-5 error
TOP-1:表示预测1次,正确即正确,错误即错误。
TOP-5:表示预测5次,只要有一次正确就表示正确。
4.1
一种测试尺寸
LRN不能提升准确度。
随着层数的增加,而分类误差在减小。D>C
多种测试尺寸
思考与实践。
1.权重如何计算?
2.ABCDE网络优点缺点比较?
3.multi-crop和dense方法有什么区别?
4.不同训练参数对训练结果的影响(比如LR LD BATCHSIZE和weight_decay不同优化器和loss function)?