ImageNet Classification With Deep Convolutional Neural Networks阅读笔记

ImageNet Classification With Deep Convolutional Neural Networks

Summary

AlexNet在前人的基础上,使用了ReLU**函数,两个GPU、局部归一化、重叠池化的概念;模型由5个卷积层和3个全连接层组成;最后为了减少过拟合,还进行了数据扩充、对RGB通道进行主成分分析、dropout的优化,

Problem Statement

在之前研究的基础上,发现大量有标签的数据强大的算力是必须的
由于模型的复杂性,需要用先验知识来补偿我们没有得到的数据

Research Objective

improve its performance
reduce its training time
preventing overfitting,

Methods

预处理

只从每个像素中减去训练集上的平均活动以外,我们在像素的(居中)原始RGB值上训练了我们的网络。

架构

架构的特点

  1. ReLU函数

saturating nonlinearities:
sigmoid**函数
f(x)=11+ex f(x)=\frac{1}{1+e^{-x}}
tanh**函数
f(x)=tanh(x) f(x)=tanh(x)

non-saturating nonlinearity:
ReLU**函数
f(x)=max(0,x) f(x)=max(0,x)
实验证明,非饱和非线性**函数的速度是饱和非线性**函数的好几倍
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-rVjzFTPH-1589298370168)(./ReLU.png)]
2. 在多GPU上训练
3. Local response normalization(局部归一化)(这一块在读的时候不太懂)
在神经生物学有一个概念叫做侧抑制(lateral inhibitio),指的是被**的神经元抑制相邻神经元。归一化(normalization)的目的是“抑制”,局部归一化就是借鉴了“侧抑制”的思想来实现局部抑制,尤其当使用ReLU时这种“侧抑制”很管用,因为ReLU的响应结果是无界的(可以非常大),所以需要归一化。使用局部归一化的方案有助于增加泛化能力。
bx,yi=ax,yi/(k+αj=max(0,in/2)min(N1,i+n/2)(ax,yi)2)βb_{x,y}^{i}=a_{x,y}^{i}/(k+\alpha \sum_{j=max(0,i-n/2)}^{min(N-1,i+n/2)}(a_{x,y}^{i})^{2})^{\beta }

  1. Overlapping pooling 重叠池化

将池化层视为由间隔为s个像素的池化单元的网格组成(步长为s) ,池化区域为z*z
若s=z,和在CNN中的池化相同
若s<z,则为重叠池化
减少了错误率,且更不容易过拟合

整体架构

ImageNet Classification With Deep Convolutional Neural Networks阅读笔记
8个学习层:5层卷积层,3层全连接层,最后一层的输出传递给1000路softmax分类器
2,4,5层只和上一层中与自己在同一个GPU上的kernel map相连
第3层与第2层所有的kernel map,全连接层与上一层的所有神经元相连
归一化层在第1,2层后,池化层在归一化层和第5个卷积层之后
ReLU函数被用到每个卷积层和全连接层的输出

  1. 第一层卷积层
    输入为224 × 224 × 3 的图像,96个11 × 11 × 3的卷积核, 步长为4像素
    再进行归一化,最大值池化
  2. 第二层卷积层
    将第一层的输出与256个 5 × 5 × 48的卷积核卷积
    再进行归一化,最大值池化
  3. 第三层卷积层
    将第二层的输出与384 个3 × 3 × 256的卷积核卷积
  4. 第四层卷积层
    384 个 3 × 3 × 192卷积核
  5. 第五层卷积层
    256 个 3 × 3 × 192卷积核
  6. 全连接层每层有4096 个神经元

减少过拟合

  1. Data augmentation 数据扩充
    图像平移和水平翻转:对256×256的图片进行随机裁剪到224×224,然后进行水平翻转,相当于将样本数量增加了((256-224)^2)×2=2048倍;
  2. 更改训练图像中RGB通道的强度
    即,对ImageNet training set中图像的RGB像素值集执行PCA,
    执行PCA的步骤:
    对于每个训练图像,我们添加找到的主成分的倍数,其大小与对应的特征值乘以从均值0和标准差0.1的高斯得出的随机变量成比例。(做一个(0,0.1)的高斯扰动
    图像像素为:
    Ixy=[IxyR,IxyG,IxyB]TI_{xy}=[I_{xy}^{R},I_{xy}^{G},I_{xy}^{B}]^T,加上
    [p1,p2,p3][α1λ1,α2λ2,α3λ3]T[\mathbf{p_{1}},\mathbf{p_{2}},\mathbf{p_{3}}][\alpha_1\lambda _1,\alpha_2\lambda _2,\alpha_3\lambda _3]^T
    pi\mathbf{p_{i}}λi\lambda _i是RGB像素值的3*3协方差矩阵的特征值和特征向量
    对象的颜色和光照改变,对象的身份不变
  3. dropout
    以0.5的概率把隐藏层的单元置为0,被设置为0的神经元不参与前向传播和后向传播。在前两层中用dropout

其他细节

  1. 权重衰变为0.0005,作用不仅仅是一个正则项,而且减小了模型的训练误差
  2. 从一个均值为0,标准差为0.01的高斯函数初始化权值;将2,4,5卷积层、全连接层的偏差赋值为1;这种初始化通过给ReLU提供正输入加速了学习。其他层的初始化为神经元偏差赋值为0
  3. 所有层的学习率相等,在训练过程中手动调节。当验证错误率不再随着当前学习率提高而提高时,将学习率除以10。学习率初始化为0.01,并在终止之前降低三倍

Evaluation

  • ImageNet数据集:22,000个类别左右,超过1500万张带标签的高分辨率图像
    两个错误率:top-1和top-5,其中top-5错误率是测试图像中分数正确的标签不在模型认为最可能的五个标签中的比例 。
  • ImageNet Large-Scale Visual Recognition Challenge (ILSVRC):ImageNet数据集的子集,大约1000类,每类1000张图片
    roughly 1.2 million training images, 50,000 validation images, and 150,000 testing images

error rates

  • ILSVRC-2010
    ImageNet Classification With Deep Convolutional Neural Networks阅读笔记
  • ILSVRC-2012
    ImageNet Classification With Deep Convolutional Neural Networks阅读笔记

Qualitative evaluations

  1. 网络对从各种频率和方向选择的内核,以及各种有色斑点都进行了学习,并且两个GPU上有不同的特性,GPU 1上的内核在很大程度上与颜色无关,而GPU 2上的内核在很大程度上是特定于颜色的。 这种特殊化发生在每次运行期间,并且与任何特定的随机权重初始化(对GPU进行重新编号)无关。
  2. 不在中心的物体也可以被识别出来
  3. 用欧式距离计算相似度,,效率较低,可以训练自动编码器将这些向量压缩为短二进制代码来提高效率

Conclusion

  1. 较大的,有深度的神经网络,在足够的数据和算力的支持下,可以得到很好的结果
  2. AlexNet中去除任何一层都会降低结果精度
  3. 下一步的目标:在视频序列上使用非常大且深的卷积网络。在视频序列中时间结构提供了非常有用的信息,即在静态图像中缺失或不那么明显。

Notes

References