ImageNet Classification with Deep Convolutional Neural Networks
这些观点源自个人学习经验,并非官方立场,请随时提出建议
这样直观观察下去也是看不出什么端倪;在阅读相关领域的文章时, 部分采用的是AlexNet架构; 经过回溯AlexNet的经典论文后才真正发现其独特的创新之处.
1.数据集
ImageNet由超过一千万张标注了属性的高质量像素照片构成,在约2.2万个类别中进行分类管理。这些图片源自网络,并借助Amazon Mechanical Turk平台进行人工标注以完成这一过程。ILSVRC项目采用ImageNet的一个子集,在该子集中划分为 thousand 个类别,在每个类别下平均拥有 thousand 张图片左右。总体而言,在 ImageNet 上通常会报告两个关键指标:top-1 和 top-5 错误率(error rates)。其中 top-5 指标指的是测试样本中真实类别不属于预测结果中最可能的前 five 个类别中的百分比。
考虑到ImageNet中的图像具有不同的分辨率设置,并且该网络架构要求固定分辨率以便于统一训练过程。因此,在进行训练前对图像进行预处理以适应固定分辨率的需求是必要的步骤。具体来说,在处理过程中首先将图像较短的一边截取至256像素,并从中心位置裁剪出一个256x256的区域作为后续网络输入的基础数据集的一部分。除了计算训练集每个像素处的平均激活度并进行归一化外,并未采取其他形式的数据增强或预处理措施来提升模型性能
2.结构
这是基本的Alexnet的结构图

详细说一下Alexnet的结构
其中AlexNet通常采用的是一个分辨率更高的图像输入,并且经过第一次卷积后输出特征图尺寸变为约为原来的1/8(约39×39 pixels),这与论文中的描述存在明显差异。因此,在这种情况下认为该研究者的方法可能存在错误,并建议其应使用原始分辨率更大的图像进行训练以获得更好的性能表现
以下图片引用自:
<>
CONV1:

数据的处理通过两个GPU,只有在部分层两GPU才有交互
CONV2:

将CONV2的输出作为CONV3的输入,只有在此处两个GPU才会有交互
CONV3:

CONV4:

CONV5:

FC6:

FC7:

FC8:

此为Alexnet网络的完整架构。
请注意,在第1至2层以及第4至8层的过程中,在两个GPU上执行。
3.取得好成绩的原因
按paper中的描述详细讲述这些东西为什么能提高最终网络的性能。
- ReLu Nonlinearity
为什么引入Relu呢?
第一,采用sigmoid等函数,算激活函数时(指数运算),计算量大,反向传播求误差梯度时,求导涉及除法,计算量相对大,而采用Relu激活函数,整个过程的计算量节省很多。第二,对于深层网络,sigmoid函数反向传播时,很容易就会出现梯度消失的情况(在sigmoid接近饱和区时,变换太缓慢,导数趋于0,这种情况会造成信息丢失),从而无法完成深层网络的训练。第三,Relu会使一部分神经元的输出为0,这样就造成了网络的稀疏性,并且减少了参数的相互依存关系,缓解了过拟合问题的发生(以及一些人的生物解释balabala)。
具体的详细信息可以参考如下文章:
相比基于tanh的网络,在相同训练规模下运行更多训练块的是基于ReLU的深度卷积网络;下图展示了一个基于CIFAR-10数据集的四层卷积网络在分别采用tanh和ReLU激活函数并达到25% training error水平下的迭代次数

- Local Response Normalization(LRN)
采用ReLu函数f(x)=max(0,x)后,在激活网络输出时与tanh、sigmoid等激活函数相比具有不同的数值特征。因此,在ReLu处理后通常会执行一次归一化操作。LRU理论由其创始人提出的是一种解决信息处理问题的方法,在神经科学领域中有一个关键的概念被称为"Local Response Normalization"(LRN),主要关注局部抑制现象。

Dropout也是一种常用的技术,在深度学习领域也得到了广泛讨论。与传统的线性模型使用正则化方法不同,在神经网络中Dropout通过调整网络结构来实现对过拟合的抑制效果。具体来说,在某一层神经元中,设定一个概率值并随机移除该层的一些神经元节点(即被随机移除),同时保证输入层和输出层的节点数量保持不变,并按照神经网络的学习算法系统地进行参数更新。在每次迭代过程中,都会重新随机移除部分节点(即被随机移除),直到整个训练过程最终完成。
文章涉及两种减小过拟合的技术:一种是Dropout方法,在网络结构这一部分已经介绍过输入图像尺寸为227的原因;另一种则是Data Augmentation技术,在论文中被提及作为作者提出的一种方法。为了防止模型过拟合最简单有效的方式就是增加训练数据量;然而,在实际操作中增加数据也并非随意为之:论文中提到的做法是从原始图像尺寸为256×256的区域随机裁剪出大小为227×227的patch(即在上述网络结构部分讨论到的输入图像尺寸为何选择不采用原始大小的原因)。另外一种方法则是利用主成分分析(PCA)来扩展数据集。这种方法在一定程度上显著提升了训练效果;特别是在训练样本数量有限的情况下具有较高的适用性。
