Advertisement

论文阅读:ImageNet Classification with Deep Convolutional Neural Networks

阅读量:

ImageNet Recognition Utilizing Advanced Deep Learning Models for Visual Object Classification

作者:Alex Krizhevsky、Ilya Sutskever、Geoffrey E. Hinton

论文要点

  1. 论文简述
  2. 论文要点
  3. 网络架构
  4. 学习细节
  5. 实验结果
  6. 结果讨论

1 论文简述

本文系统性阐述了一种可实现的神经网络架构设计,在ImageNet LSVRC-2010比赛中将高达1,20万张高分辨率图像按照预设的1,千个类别完成了分类任务,并获得了令人瞩目的top-一和top--五误差率分别为37.-五百分比和百分之十七点零的结果。该研究不仅成功应用于ILSVRC--二挑战赛中表现出色,在该赛事中所取得的top--五误差率为百分之十五点四远优于第二名百分之二十六点二的成功 margin进一步验证了CNN网络架构的有效性和优势所在。此外文中还详细讨论了一系列至今仍在相关领域中广泛应用的关键技术要素包括Dropout数据增强以及ReLU激活函数等

2 论文要点

本文概述了多种现有方法仍被广泛采用的情况,并列举了其中一些关键技术:ReL单元、响应归一化、滑动池、数据扩增以及Dropout等。

2.1 CNN优势

通过调整深度与宽度来控制网络结构容量

2.2 ReLU-非饱和神经元

non-saturating neurons = 没有被挤压(到一个特定的区间)处理过的值

  • ReLU:神经元激活值在输入层的表现为要么变为零或保持原值(不进行压缩且不受上限或下限的限制)。
  • Leaky ReLU:神经元激活值在输入层的表现为要么按比例降低幅度或保持原值(同样不进行压缩且不受上限或下限的限制)。

saturating neurons = 被挤压(到一个特定的区间)过的值

sigmoid: input neurons的值会被挤压到[0,1]的区间

tanh:input neurons的值会被挤压到[-1,1]的区间

在深度神经网络训练中选择ReLU而非Sigmoid或Tanh的原因在于其非饱和激活函数的优势(此外还涉及梯度消失与爆炸的问题)。然而,在某些情况下(如上图所示),使用ReLU确实显著提升了训练效率(但论文中并未提及如何规避这一问题)。最后值得探讨的是:什么是饱和?为何将其称为饱和与非饱和?
基于数学中的饱和算术原理,“saturating”指的是当输入超过一定范围时输出被限制为最大值或最小值;而“non-saturating”则意味着输出可以自由增长以适应输入的变化范围。

解答来源:https://www.zhihu.com/question/264163033/answer/277481519

采用非饱和激活函数如ReLU所具有的特性能够生成不饱和的神经元。这些非线性激活函数的作用在于有效避免了由于梯度消失或爆炸导致的数值异常问题,并进而影响了反向传播过程的稳定性与训练效率。根据实验结果表明,在引入ReLU后模型收敛速度得到了显著提升

在这里插入图片描述

研究指出,在深度学习模型中采用以ReLU为代表的非饱和神经元所实现的非线性激活函数相较于饱和神经元所实现的激活函数,在训练效率方面带来了显著的提升效果。

梯度消失产生原因:
1.隐藏层的层数过多(几十层或上百层的深度神经网络)
2.采用了不适合的激活函数(如sigmoid函数)
当神经网络有很多层,每个隐藏层都使用Sigmoid函数作为激励函数时,很容易引起梯度消失的问题,Sigmoid函数有一个缺点:当x较大或较小时,导数接近0;并且Sigmoid函数导数的最大值是0.25。
如果使用标准方法来初始化网络中的权重,那么会使用一个均值为0标准差为1的高斯分布。因此所有的权重通常会满足|wj|<1,而s‘是小于0.25的值,那么当神经网络特别深的时候,梯度呈指数级衰减,导数在每一层至少会被压缩为原来的1/4,当z值绝对值特别大时,导数趋于0,正是因为这两个原因,从输出层不断向输入层反向传播训练时,导数很容易逐渐变为0,使得权重和偏差参数无法被更新,导致神经网络无法被优化,训练永远不会收敛到良好的解决方案。 这被称为梯度消失问题。
梯度爆炸产生原因:
1.隐藏层的层数过多
2.权值初始化过大
当我们将w初始化为一个较大的值时,例如>10的值,那么从输出层到输入层每一层都会有一个s‘(zn)*wn的增倍,当s‘(zn)为0.25时s‘(zn)*wn>2.5,同梯度消失类似,当神经网络很深时,梯度呈指数级增长,最后到输入时,梯度将会非常大,我们会得到一个非常大的权重更新,这就是梯度爆炸的问题,在循环神经网络中最为常见。

梯度消失和梯度爆炸的解决方法:
(1)可以采用ReLU、Leaky-ReLU、P-ReLU、R-ReLU以及Maxout等激活函数来取代传统的Sigmoid函数。(多种激活函数进行对比分析可参考我的博客)
(2)通过Batch Normalization技术能够有效改善神经网络的学习过程。(对Batch Normalization原理的具体解释请参阅我的博客内容)
(3)优化LSTM网络的结构设计可以在一定程度上缓解RNN模型在训练过程中可能出现的梯度消失问题。

当前关于梯度消失与梯度爆炸的最新解决方案综述论文

2.3 局部响应归一化

Local Response Normalization(LRN)实现了对侧抑制的一种模拟机制(即被激活的神经元会对相邻区域产生抑制作用),这种侧抑制现象来源于真实生物神经系统的启发。其主要优势在于通过建立一种竞争机制来调节局部区域内的神经活动强度分布,在此过程中具有较高响应强度的信号会占据优势位置以增强模型的整体泛化能力。

在这里插入图片描述

在公式中a_{x,y}^{i}表示第i个卷积核(通道)的位置(x,y)处;具体来说,在同一位置的不同卷积核之间会产生相互抑制的效果;该公式中将当前卷积核中的特征值与其相邻位置特征值平方和相除;从而使得较小的响应被削弱,并增强较大的响应.

**侧抑制:**局部响应归一化(Local Response Normalization, LRN)实现了侧抑制机制(activated neurons suppress their neighboring positions),这一机制受到真实生物神经系统的启发。其主要优势在于为局部区域内的神经元活动建立竞争机制,在此过程中使具有较大响应强度的位置保留优势。需要注意的是,在公式 a_{(x,y)}^{i} 中表示第i个kernel(通道)在(x,y)位置处的变化量,则是同一位置上不同kernel之间的相互作用结果。具体而言,在当前kernel的空间滤波器作用下将特征幅值与邻近位置特征平方和相除作为归一化因子,则可有效减少微弱响应并增强强响应的表现程度。
**超参数:**在机器学习算法中定义为参数的一组数值,在模型训练前由人工设定并保持固定不变。这些超参数通常包括学习率、正则化系数等关键指标,在模型优化过程中发挥着重要作用

2.4 重叠池

在进行池化操作时,在每隔s个单位选取一个池化单元的同时设定该单元的聚合范围为z×z区域,并将这一设定具体应用于研究中发现采用较小步长能够提升采样效率(具体参数设置为s=2, z=3)的方法相较于传统非重叠采样方法具有以下优势:首先,在分类精度上表现出明显提升;其次,在特征表示能力上得到了显著增强;最后则有效降低了模型过拟合的风险。此外,在本研究中主要采用了最大值聚合策略以避免平均值聚合可能带来的模糊性问题

2.5 数据扩增

1.图像平移和水平反射
随机从256×256的图像中截取224×224大小的图像,并进行水平反射(以中央铅垂线为中心形成原图案的镜像),使训练集变成原来的2048倍,且训练样本之间是高度相互依赖的。训练时截取了五个这样的图像(一个中心图像和四个角落图像)以及他们的水平反射(因此总共十个色块)进行预测,最后在softmax层将预测结果进行求均值。
2.改变图像RGB通道的强度
将通过PCA找到的主分量(特征向量)乘以相对应倍数后加起来,其倍数大小与相应的特征值乘以从平均值为0和标准偏差为0.1的高斯分布中提取的随机变量的结果成正比。向每个RGB图像像素𝐼_𝑥𝑦=[𝐼_(𝑥𝑦,)^𝑅 𝐼_(𝑥𝑦,)^𝐺 𝐼_𝑥𝑦𝐵]𝑇添加以下数量:
[𝑝_1,𝑝_2,𝑝_3 ][𝛼_1 𝜆_1,𝛼_2 𝜆_2,𝛼_3 𝜆_3]^𝑇
其中每个αi仅生成一次,直到再次使用该图像进行训练时,将再次获取。

数据增强技术不仅提升了训练数据的数量级,并且使网络能够学习并保持物体在不同位置尺寸、光照强度以及颜色变化等因素下的一致性特性。

2.6 Dropout

Dropout可被视为训练深度神经网络的一种可选方法,在本研究中将这种方法应用于各隐藏层节点的选择策略设计中。具体而言,在本研究中将每个隐藏层节点输出设为0的概率定为0.5,并使被drop掉的节点在前向传播和反向传播过程中不参与计算,在每次实验中都会生成不同的模型架构组合。因此也可视为一种模型融合的方式。此外还降低了各神经元之间的相互依赖关系,并非所有节点都必须依赖其他活跃节点才能发挥功能作用;这种机制不仅增强了整个网络架构的稳定性(即增加了系统的鲁棒性),而且有效防止了过拟合现象的发生

3 网络架构

在这里插入图片描述

第二、四、五次循环 Convolutional 层仅与处于同一 GPU 上面前一次循环中的 Convolutional 核进行关联性计算;第三次循环 Convolutional 层则会与第二次循环中的所有 Convolutional 核建立关联关系;紧接着局部响应性 Normalization 运算元被安排放置于第一次和第二次循环 Convolutional 运算元处理结果输出序列之后面的位置;紧接着 Maximum 池化运算元被安排放置于响应归一化运算元以及第五次循环 Convolutional 运算元处理结果输出序列之后面的位置;最后 ReLU 激活函数被安排放置于所有的循环 Convolutions 以及全链接 (FC) 运算元处理结果输出序列之后面的位置。

网络结构详细介绍参考:<>

4 学习细节

  • 采用随机梯度下降法
  • 权重衰减系数设定为ε = 1e^{-4}(这一设置有助于减少训练过程中的误差)
  • 其中,在第2、4、5卷积层以及两个全连接层中设置了偏置项b = 1(这些设置有助于在ReLU函数初期更好地激活),而在其他层中则设定了偏置项b = 0
  • 起始学习率设定为一个较小值\eta_0 = 1e^{-2}(当验证集错误率不再随当前学习率\eta的提升而增加时,则通过手动调整将学习率除以十)
  • 通过双GPU并行计算来加速训练过程

5 实验结果

基于ILSVRC-2010的数据集,在该网络体系中实现了top-1和top-5测试集的错误率分别为37.5%和17.0%,较之其他模型表现出更为优异的性能。

在这里插入图片描述

因为ILSVRC-2012测试集标签并未公开可获取的缘故,我们未能收集全部模型在测试阶段的表现数据。通过综合评估五个具有相似架构的CNN预测结果的数据分析得出错误率,在这一基础上计算出最终数值为16.4%。

在这里插入图片描述

6 结果讨论

研究表明

全部评论 (0)

还没有任何评论哟~