【论文笔记】AlexNet论文要点拆分与解析
作者:互联网
KeyWords:论文背景 、论文贡献、主要内容、可视化结果
论文原文:ImageNet Classification with Deep Convolutional Neural Networks
Pytorch实现:AlexNet pytorch/vision GitHub
目录
一、背景
· 当时的图像分类任务的模型简单,主要采用传统机器学习的方法,容易产生过拟合的问题;
· 现实生活中需要分类的物体往往具有多样性的特点,随着数据集地增大,需要更高容量的模型来用于学习,而卷积神经网络(CNN)可以通过调节深度和宽度来控制模型的容量,且能够充分利用自然图像的局部空间相关性的特性。
二、贡献
· 在ImageNet ILSVRC竞赛中取得冠军,top-5(图片最可能属于的前5个类别)错误率远低于第2名;
· 人们开始更加重视CNN,将其用于计算机视觉的核心算法,具有很大的历史意义。
三、要点拆分
KeyWords:ReLU激活函数、GPU并行处理、局部响应归一化(LRN)、重叠池化、减少过拟合的方法
1、ReLU激活函数
在AlexNet网络之前常用的激活函数是sigmoid函数和tanh函数, 这两种激活函数都是饱和激活函数,当输入落入饱和区时会导致梯度消失,使得网络难以收敛,其函数图像见下:
ReLU函数在x>0的区间内不存在饱和区(饱和概念见下补充知识),导数始终为1,保持梯度不衰减,从而缓解梯度消失问题,使得模型得以更好更快的收敛。但随着训练的推进,部分输入会落入x<0的硬饱和区间,此时梯度为0,权重无法更新即“神经元死亡”现象。对此提出了Leaky-ReLU激活函数的改进方法。
(左图为ReLU函数图像及表达式,右图为Leaky-ReLU函数图像及表达式)
(扩展)先验知识:激活函数、饱和
· 激活函数:卷积层之间的操作是线性的,所以需要激活函数来引入非线性因素,提供网络的非线性建模能力。
· 饱和激活函数:又分为软饱和和硬饱和。当|x|>c(c为常数)时,如果f'(x)->0则该函数为软饱和激活函数;如果f'(x)=0则该饱和函数为硬饱和函数。
· 激活函数的性质:
可微性:当优化方法是基于梯度的时候,这个性质是必须的;
单调性:当激活函数是单调的时候,单层网络能够保证是凸函数;
输出值的范围:当激活函数输出值是有限的时候,基于梯度的优化方法会更加稳定,因为特征的表示受有限权值的影响更显著;当激活函数的输出是无限的时候,模型的训练会更加高效,不过在这种情况小,一般需要更小的学习率。
2、GPU并行处理
从网络结构中可以看出模型被分为了两个部分,分别放入两个不同的GPU进行训练,在前5层卷积中只有第2层到第3层之间两GPU有信息交换。这样做的主要原因是但是GPU内存不够大,无法支撑大规模的网络,但先如今随着GPU性能的增强,已可以承载更大容量的网络。同时该方法也为后来的分组卷积奠定了理论基础。
3、局部响应归一化 (存在争议)
归一化可以防止输入掉进饱和区,有助于模型的快速收敛。
局部归一化借用了生物上神经元的“侧抑制”的思想,及活动的神经元会对周围的神经元产生抑制作用。以此对局部神经元的活动创建竞争机制,使其响应大的值变得相对更大,并抑制反馈小的神经元(可以理解为让网络学习更主流的知识减少旁门外道的影响),提升模型的泛化能力。
(扩展)后期争议:
2015年 Very Deep Convolutional Networks for Large-Scale Image Recognition.提到LRN并没有起到相应作用。并且随着更加有说服能力的块归一化,也称之为批量归一化,即BN的出现,后续的CNN架构模型里不再使用LRN了。
4、重叠池化(Overlapping Pooling)
在一般池化中,池化窗口 z与滑动步长s相等。而重叠池化中的s<z,此时相邻的滑窗之间会有重叠。在Hinton的实验中使用重叠池化的操作使得top-1和top-5的误差率分别降低了0.4%和0.3%,且相比一般池化更加不容易过拟合。
(拓展)先验知识:池化的作用
· 降维、减少计算量,去除冗余信息、防止过拟合;
· 扩大感受野;
· 增强不变性:包括translation(平移),rotation(旋转),scale(尺度)不变性。
5、减小过拟合的方法
方法1:数据增强(人工增大数据集)
· 对图像进行平移和水平翻转:训练过程,在256*256的图像上随机提取224*224大小的图像进行训练,增大训练集;测试阶段在原256*256图像的四个角点和中心的位置上提取224*224大小的图片和该图片的水平翻转图片(共10张图片),增大测试集。
· 改变图片RGB通道强度:模拟了现实场景中存在的光照改变和颜色改变的情况。
方法2:Dropout(随机失活)
对于降低误差可以采用将许多不同模型的预测结果结合起来的方法,但是对于本身规模就很大的网络在时间成本上无异于雪上加霜。相较之下Dropout依旧采用了以上的思想,即每次训练过程中以0.5的概率随机丢掉一部分节点形成不同的网络结构的方法,但其以两倍的训练时间为成本得到更好的预测结果来抑制过拟合,是可以接受的。
· Dropout的过程:
①遍历整个网络将每个节点被失活(丢掉)的概率设为0.5;
②随机删除节点,即设置丢掉节点的输出为0,该节点不再进行前向传播与反向传播;
③在简化后的网络上训练样本。
每次输入样本都将重复以上操作。
四、结果可视化评估
左图的是测试的8张测试图像和AlexNet模型所认为最可能的5个图像分类标签和概率,其中正确标签的概率用红色柱形表示。右图的第一列是5张测试图像,剩下的6列是6张在最后的隐藏层的特征向量与测试图像的特征向量有最小的欧氏距离的训练图像。是对于模型的可视化和可解释性的一点小探索。
标签:函数,论文,GPU,拆分,图像,激活,饱和,AlexNet,归一化 来源: https://blog.csdn.net/weixin_48014434/article/details/121656468