Chris_zhangrx的博客

人工智能

635人已加入

描述

Abstract

在 LSVRC-2010 数据集上我们训练了分成 120 万张分成 1000 类的高分辨率图片,在测试集上分别获得了top-1,top-5 错误率分别是37.5%和17.0%。本神经网络包含6千万个参数,65万个神经元,由 5 个卷积层加 3 个全连接层组成。为了减少过拟合,使用了Dropout策略。同时我们使用这个模型参加了ILSVRC-2012 比赛,相较于第二名 TOP-5 错误率为 26.2%,我们以 15.3% 赢得了比赛。

1.PROLOGUE

Ynn LeCun和他的伙伴有一篇关于神经网络的文章在顶级会议上被拒了,那时的研究者相信更多地还是需要人为地去设计特征。 1980s 神经学家和物理学家相信分层的结构特征检测器更具有鲁棒性,但具体不知道分层结构会学习到什么样的特征。那时候部分研究者发现可以通过BP算法去有效的训练多层特征检测器,对于每个图像,分类器的性能取决于每个连接点上的权值。

BP推出虽然解决了训练的问题,但是还是不能满足当时人们的期望,特别是网络结构很深的时候,不能得到很好的结果,所以那时人们都觉得很难,但 2 年后,我们发现这是错误的,主要原因是没有足够多的数据集和足够大的计算能力。

2.Introduction

本文主要贡献如下:

1. 我们在ImageNet上训练了一个卷积神经网络,并且取得了目前最高的准确率

2. 我们写了一个基于2D卷积的GPU优化实施方案,并开源了它

3. 用了 ReLU,多 GPU 训练,局部泛化来提升性能并缩短训练时间

4. 用了 Dropout,数据增广来防止过拟合

5. 使用了5层卷积加3层全连接层,结构也很重要,减少网络深度性能会变差

(因为计算能力的限制,用了2块3GB的 GTX580 GPU 训练了5-6天)

3. The Dataset

ImageNet是一个有超过1500万张带有标签的高分辨率图片,这些图片被分成22000类,这些图片主要来自网上,人工打标签。 ILSVRC 比赛用了它的一个子集,接近1000类,平均每一类包含1000张图片,共有120万张训练图片,5万张验证图片,15万张测试集图片。

ILSVRC-2010是唯一一个测试集也有标签的版本,所以我们主要用这个数据集来进行实验,不过我们也参加了 ILSVRC-2012 的比赛。

ImageNet 只要有 2 个指标, top-1 和 top-5 。 top-5 是指正确的类别没有出现在前5个最有可能的类别中。因为 ImageNet 包含了不同分辨率的图片,而系统需要固定尺寸的图片,所以我们将数据集下采样成 256x256 的大小。对于长方形的图片,我们首先将短边编程256,然后在中心截取一个 256x256 的区域,除了训练时减去每个像素的均值意外,我们不对图片做任何的预处理。

4. The Architecture

结构主要包含了8层,5层卷积层,3层全连接层,下面就介绍一些新的,不常见的我们网络的特征。我们根据它们的重要程度,顺序说明。

4.1. Rectified Linear Unit nonlinearity

在一个简单的 4 层卷积网络上比 tanh 函数训练达到25%错误率的速度快了6倍,所以这里我们使用了 ReLUs 来训练神经网络加快训练速度以应对过拟合(overfitting)的情况。

4.2. Training on multiple GPUs

一个单 GTX580 只有3GB内存,(因为训练训练图像大小已经固定成256了)所以这就限制了我们神经网络的最大尺寸。实验证明 120 万个训练样本对训练网络来说是足够了,但是对一个 GPU 来说太大了,因此我们用了两个平行的 GPU 进行训练,将训练参数一分为二,并且只让它们之间在固定的层通信,例如第三层卷积层的输入来自整个第二层,而,第四层输入只来自和它在同一个 GPU 的第三层,这样的做法,相较于只在一块 GPU 上训练一般的参数,分别降低了 1.7%,1.2% 的 top-1,top-5,并且还能稍微有加快训练速度的效果。

4.3. Local response normalization

虽然 ReLUs 不需要再对输入进行泛化来防止饱和,当输入都是正例时,学习也能进行,但是,我们还是发现加入局部正规化可以帮助提升模型的泛化能力。

用以上公式,相关参数用验证机来调节。在文中用了 k = 2 , n = 5,α = 10e-4 , β = 0.75。我们在某些特定的层将正规化应用在 ReLUs 之后。实验证明,这样分别可以降低1.4%,1.2% 的 top-1 , top-5。并且简单的4层卷积网络在 Cifar10 上使用正规话错误率从13%降到了11%。

4.4. Overlapping pooling

就是采用有重叠区域的 pooling 操作,分别降低 0.4%,0.2% 的 top-1,top-5,并且有轻微的降低过拟合的可能。

4.5. Overall architecture

因为是双 GPU 训练,第 2,4,5的卷积层只与同一个 GPU 的卷积相连,第 3 层卷积层完全连接第 2 层。LRN层用在第1,2卷积层。最大值池化层用在了第1,2,5层。ReLU在每个卷积层和全卷积层都有使用。

5. Reducing Overfitting

5.1. Data augmentation

第一种增广方式是我们在 256x256 的图像上随机剪切一个 224x224 大小的图像,并将他们水平翻转后的样本也用来训练网络。在测试时,我们以4个角以及中心同样剪切成 224x224 大小的图片并水平翻转(一张图片变 10 张图片)输入网络后,将10张图片的softmax值加起来求平均,输出最终结果。

第二种增广方式是改变图像 RGB 通道的值。这个方法降低了 1% 的 top-1 准确率。

5.2. Dropout

被dropout掉的层不参与前向传播和反向传播,这样每一个样本训练的时候网络的结构都是不同的,我们在前2层的全连接层使用了 0.5 概率的 dropout,这也使迭代次数需要翻倍,训练才能收敛。

6. Details of learning

才用了随机梯度下降(SGD)算法进行训练,batch size = 128,momentum = 0.9, weight decay = 0.0005,实验证明,这里加入小数值的 weight dacay 对训练很重要,它不仅仅是一个正则化器,它还可以降低训练的错误率。

我们初始化为零均值,标准差为0.01的高斯分布,并且将第2,4,5卷积层和全卷积层的偏置设置成常数1,其他层设置成常数0,学习率从0.01开始,从训练开始到训练结束,学习率以10的倍数下降了3次(基本30 epoches下降一次),训练了 90 epoches 。

7. Results

还有一点很有取的是,两块 GPU 训练一块主要是色彩信息,一块主要是轮廓信息。

8.Discussion

值得一提的是,我们的网络移除任何一个卷积层性能都会下降。移除任意中间层都会降低 2% 的 top-1 准确率,所以网络的深度对于我们的结果也很重要。

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分