Alexnet论文介绍(ImageNet Classification with Deep Convolutional Neural Networks)

摘要

  本文训练了一个深度卷积神经网络进行ImageNet LSVRC-2010图片分类比赛(1000各类别,共120万高质量标注的图片),在top1测试场景下错误率37.5%,在top-5测试场景下错误率17.0%,远小于之前最好的结果。
  网络的大体结构:6000万个参数、65万个神经节点、5个卷积层、几个最大值池化层(max-pooling layers)、3个全连接层、最后还有一个1000个类别的多分类softmax层。
  本文为了加快计算,使用了非饱和神经元(non-saturating neurons)和GPU;为了减少全连接层的过拟合,使用了dropout。
  此外,我们还提供了该模型的一个变体,该变体在ImageNet LSVRC-2012上达到15.3%的top-5错误率,远低于之前最好的方法(26.2%)。

引言

用更大的数据集——ImageNet
  目前,机器学习方法在图像识别领域获得了充分的应用,但现在用于图像识别研究的数据集都太小了(1万量级),比如:NORB,Caltech-101/256,CIFAR-10/100。在这种小数据集下,一些简单的模型加数据增强就能取得相当好的效果,例如在MNIST数据集下的识别误差率已经达到人类水平。
  现实中的识别问题不是这么容易的,需要用更大的数据集才能证明模型的有效性。人们已经意识到了小数据集的缺点,更大的数据集有LabelMe(10万张图片)、ImageNet(1500万张图片,超过2200各类别)。

图像识别与CNN
  我们需要一个具有更强学习能力的模型以应对大数据集的场景。当然,即使是想ImageNet这么大的数据集,仍然无法覆盖真实场景,所以我们需要借助一些先验知识来弥补这方面的不足。
  常用的关于图像的两个先验知识:统计稳定性(像素值都在0-255的范围内)和局部相关性(图像局部的像素值相似)。此外,一些CNNs模型还会改变图像的深度和宽度。
  相对于全连接网络,CNNs的参数更少,更容易训练,同时保证模型的有效性不受影响(论文作者这里说CNN的theoretically-best performance is likeyly to be only slightly worse)。

GPU带来的算力提升
  尽管CNNs减少了模型的计算量,但它对算力的要求还是很大。幸运的是,目前GPUs对2D卷积计算做了优化,解决了算力不足的问题。

本文贡献

  • 训练了一个大型(论文作者这里说one of the largest convolutional neural networks)神经网络,在ImageNet比赛中取得了最好的结果。
  • GPU编程
  • 本文用了一些新颖的方法提高模型有效性,减少训练时间
  • 有了几个有效的方法降低过拟合

  我们最后的网络结构有5个卷积层和3个全连接层,卷积层参数数量只占中数的1%,而且减少卷积层层数会影响模型的识别准确率。

补充
  模型的大小受制于GPU的显存。目前本文用的是GTX 580 3GB,以后随着GPU容量的提高,本文模型可以有更大的改进空间。

数据集

ImageNet

  • 图片数量:1500万
  • 类别数:2.2万
  • 图片来源:网上人工标注的

ILSVRC-2010 (2010 ImageNet Large-Scale Visual Recognition)

  • 图片数量:120万张训练图片,5万张验证图片,15万张测试图片
  • 类别数:1000

ILSVRC-2012

  • 与2010相比,它的测试集标签是不公开的。
  • 评价指标:top-1准确率和top-5准确率

图片处理
  ImageNet中的图片分辨率不统一,应用于本文模型之前需先做图片大小的规整,将图片降采样为256x256,具体如下:

  1. 对给定图片,先缩放其更短的边到256p
  2. 在较长的边上裁剪中间的256p

PS:本文没有对图片做归一化处理,所以数据是原始的像素值。

模型结构

ReLU

  在此之前,神经网络中的激活函数都是 f ( x ) = t a n h ( x ) f(x) = tanh(x) f(x)=tanh(x) f ( x ) = s i g m o i d ( x ) f(x)=sigmoid(x) f(x)=sigmoid(x),这些饱和函数(saturating nonlinearities)下的神经网络的训练速度远不如非饱和函数(non-saturating nonlinearity) f ( x ) = m a x ( 0 , x ) f(x) = max(0, x) f(x)=max(0,x)

上图表示网络模型的训练误差随迭代次数的变化关系(数据集是CIFAR-10),实线使用ReLU,虚线使用tanh,可得结论:ReLU更快。

  许多研究人员在激活函数方面有研究(从侧面证明通过激活函数提高网络的有效性是可行的)。一般来说,训练的快对获得好的结果很有帮助。

多GPU训练

  现在的深度学习框架(tensorflow等)都内置了调用多GPU的方法,论文这部分的内容不用看了。

局部响应归一化(Local Response Normalization)

  局部响应归一化(LRN)是一种用于提高网络模型效果的归一化方法,不同的是不作取均值的处理。
b x , y i = a x , y i / ( k + α ∑ j = m a x ( 0 , i − n / 2 m i n ( N − 1 , i + n / 2 ) ( a x , y j ) 2 ) β b_{x, y}^i = a_{x, y}^i / \left( k + \alpha \sum_{j=max(0, i-n/2}^{min(N-1, i+n/2)}(a_{x,y}^j)^2 \right) ^\beta bx,yi=ax,yi/k+αj=max(0,in/2min(N1,i+n/2)(ax,yj)2β

符号意义
a x , y i a_{x, y}^i ax,yi位于feature map (x,y)位置的第i个卷积核的输出并激活后的值
b x , y i b_{x, y}^i bx,yi a x , y i a_{x, y}^i ax,yi经LRN后的值
i i i卷积核标志
x x xfeature map上的横坐标
y y yfeature map上的纵坐标
n n n相邻卷积核个数,是超参数, n = 5 n=5 n=5
N N N卷积核总个数
k k k是超参数, k = 2 k=2 k=2
α \alpha α是超参数, α = 0.0001 \alpha=0.0001 α=0.0001
β \beta β是超参数, β = 0.75 \beta=0.75 β=0.75

feature map:卷积后的一个2维数组。1个卷积核产生1个feature map,多个卷积核产生多个feature map。

重叠池化

  池化方法有两个重要的参数:步长 s s s和池化范围 z z z,即每个池化快的大小是 z × z z\times z z×z,每个池化块之间的距离为 s s s。传统的池化方式是 s = z s=z s=z,本文选择 s &lt; z s&lt;z s<z( s = 2 , z = 3 s=2,z=3 s=2,z=3),获得更好的效果。

整体架构

  把图片再放一遍,不用细说了,当然现在深度学习也已经不用这个网络模型了。

减少过拟合

  本文模型有这么多的参数,势必要考虑过拟合。

数据增强

  最常用最简单的减少过拟合的方法是数据增强。我们用了两种简单的数据增强方式,使增强后的数据无需保存在硬盘中,可以直接使用。

  原图像是256x256,我们从中抽取224x224的部分,如此一张图片产生32x32=1024张图片。然后进行水平翻转变换,一张图片总计产生2048张图片。训练时用2048倍的图片。在测试时,我们只取10张图片(中间+4个角,及它们的水平翻转),我们总是取预测的平均值。

  方法二:对RGB通道做PCA。PS:这种方法很少见,也不做介绍了。

Dropout

  模型集成在降低过拟合方面取得了巨大的成功,但是训练多个大规模的神经网络模型用于集成需要耗费太多算力。dropout是专门为神经网络设计的集成方法。dropout需要一个概率参数,如0.5。在训练时,dropout层会随机选择50%个神经元节点输出(如果将每个神经元节点作为一个子模型,dropout层相当于随机选择了50%个子模型进行集成),使模型的输出不过分依赖于特定的节点。测试时,所有神经元节点的输出都要乘以0.5。dropout层大大提高了网络的抗过拟合能力。

训练细节

优化器
  优化器使用的是momentum梯度下降,momentum权重参数是0.9,此外又为 w w w更新加入了一个大小为0.0005延迟因子(decay factor)。
v i + 1 : = 0.9 ⋅ v i − 0.0005 ⋅ ϵ ⋅ w i − ϵ ⋅ ⟨ ∂ L ∂ w ∣ w i ⟩ D i v_{i+1} :=0.9\cdot v_i - 0.0005 \cdot \epsilon \cdot w_i - \epsilon \cdot \left \langle \frac {\partial L}{\partial w}|_{w_i} \right \rangle_{D_i} vi+1:=0.9vi0.0005ϵwiϵwLwiDi

w i + 1 : = w i + v i + 1 w_{i+1} := w_i + v_{i+1} wi+1:=wi+vi+1

权重初始化
   w w w是均值为0,标准差为0.01的高斯初始化; b b b在第2、4、5卷积层和3层全连接上初始化为1,其余层初始化为0。

学习率
  全局统一的学习率0.01,并且每当训练误差不再下降时,就衰减学习率,衰减率为0.1。

结果

ImageNet ILSVRC-2010的比赛结果:

定性评价

  上图是第一层卷积网络的卷积核可视化的结果。不同的卷积核关注不同的部位:各种边缘和各种颜色。论文其他评价结果略。

总结

  完全的监督学习,无需任何无监督学习的预训练。论文作者指出,随着GPU算力的提升,可以构造更大的神经网络以获得更高的识别准确率。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值