深度学习论文随记(一)---AlexNet模型解读

深度学习论文随记(一)---AlexNet模型解读

ImageNet  classification with deep convolutional neural networks

Author: A  Krizhevsky, I  Sutskever , GE Hinton

Year:2012

1、导引

其实这篇论文按道理讲,并不是第一个把卷积神经网络应用到深度学习中的工作,往前其实有个LeNet,是深度学习三驾马车之一的Yann Lecun在1998年就设计出来了。

但是一般深度学习入门要看的第一篇论文,还是会推荐这篇,我个人认为,这篇论文的意义在于,它是使得Deep Learning这种机器学习的方法征服计算机视觉领域的开山之作。

2012年,深度学习三驾马车中的另一位 Geoffrey Hinton为了证明自己的研究工作是有用的,他和他的学生Alex Krizhevsky 在ILSVRC竞赛中出手,刷新了classification的记录,一战封神!!!所以,这篇文章所述的网络结构也就被称为AlexNet。至此之后,无数的学者投入到Deep Learning的研究中去。

2、AlexNet模型解读

这张图片本来上半部分就没有,论文中就是给的这个图。

然后之所以用的上下两半一样的结构,是因为他们当时用的GPU计算力有限,所以用了两块GPU:GTX 580。现在都是2017年了,你笔记本上的GPU估计都是GTX970了,所以下面讲的时候就当作是只用的一个GPU来分析。

AlexNet共有八层,有60M以上的参数量。

前五层为卷积层:convolutional layer;

后三层为全连接层,fully connected layer。

最后一个全连接层输出具有1000个输出的softmax。(这个不懂什么意思的参考机器学习理论中的softmax regression,就是一个多类的logistic regression)

大致的分层结构如下:

●第一层:

输入图片为224x 224 x3, 表示长宽是224个像素,RGB彩色图通道为3通道,所以还要乘以3.(学界普遍认为论文中说的224不太合适,讲道理应该是227的大小才对,这也成为一个悬案),

②然后采用了96个11 x 11 x 3 的filter。在stride4的设置下,对输入图像进行了卷积操作。所以经过这一卷积后的操作,输出就变成了55 x 55 x96 的data map。这三个数字的由来:(227-11)/ 4 + 1 = 55,96就是滤波器的个数。

③然后经过激活函数ReLu,再进行池化操作-pooling:滤波器的大小为3 x 3,步长stride2. 所以池化后的输出为27x 27 x 96

(55-3)/ 2 + 1 =27.     96仍为原来的深度。

④LRN,局部响应归一化。后来大家都认为这个操作没有什么太大的作用,所以后面的网络几乎都没有这个操作,我也就不提了。

●其他第2、3、4、5层的计算过程类似。

●第六层:本层的输入为6 x 6 x 256,全连接层其实就是一个矩阵运算,它完成一个空间上的映射。所以把输入看成一个列向量X,维度为9216(6 x 6 x 256),也就是你可以把输入看成一个9216 x 1的矩阵。

然后和参数矩阵W相乘,参数矩阵W你此时设置为4096 x 9216

所以最后本全连接层的输出就是 矩阵相乘Y = W·X4096 x 1的矩阵

●第八层:第八层的输出就为1000 x 1的矩阵,即1000维度的一个列向量,对应softmax regression的1000个标签

3、一些创新点分析

ReLU

RectifiedLinear Uints,修正线性单元即f(x)=max(0,x)。是一种非饱和非线性激活函数。相较于f(x)=tanh(x)和sigmoid函数:f(x)=(1+e^-x)^-1,这两种饱和非线性激活函数而言,SGD梯度下降的时间更快。

Dropout

  它做的就是以0.5的概率将每个隐层神经元的输出设置为零。以这种方式”droppedout”的神经元既不参与前向传播,也不参与反向传播。所以每次提出一个输入,该神经网络就尝试一个不同的结构,但是所有这些结构之间共享权重。因为神经元不能依赖于其他特定神经元而存在,所以这种技术降低了神经元复杂的互适应关系。正因如此,要被迫学习更为鲁棒的特征,这些特征在结合其他神经元的一些不同随机子集时有用。前两个全连接层使用dropout。如果没有dropout,我们的网络会表现出大量的过拟合。dropout使收敛所需的迭代次数大致增加了一倍。

③数据扩充

一般的观点认为神经网络是靠足够多的数据训练出来的。增加海量的数据,在一定程度上能提升算法准确率。当数据有限时,可以通过已有的数据做一定的变换生成新的数据,进而扩充数据量。

本篇论文用到了三种数据变换方式:

A 平移变换(crop) 从256×256的图像中提取随机的224×224的小块:

四个边角和中心区域共5个

B反射变换(flip) 把A中的5张图进行水平反转

C光照和彩色变换

我们在遍及整个ImageNet训练集的RGB像素值集合中执行PCA。对于每个训练图像,我们成倍增加已有主成分,比例大小为对应特征值乘以一个从均值为0,标准差为0.1的高斯分布中提取的随机变量。这样一来,对于每个RGB图像像素

,我们增加下面这项:

其中与分别是RGB像素值的3×3协方差矩阵的第i个特征向量与特征值,是前面提到的随机变量。每个对于特定训练图像的全部像素只提取一次,直到那个图像再次被用于训练,在那时它被重新提取。这个方案大致抓住了自然图像的一个重要属性,即,光照强度与颜色是变化的,而对象识别是不变的。

④重叠池化

一个pooling层可以被认为是由间隔s像素的pooling单元网格组成,每个网格总结出一个z×z大小的邻近关系,都位于pooling单元的中心位置。若设s=z,我们得到传统的局部pooling,正如常用于CNN中的那样。若设s<z,则得到有重叠pool。整个网络结构中,s=2,z=3,即pool区域的大小为3*3,间隔为2,即相邻两个pool,会重叠一个像素,这种方法使top-1和top-5错误率分别减少0.4%和0.3%,与s=2,z=2相比,它们池化结果有相同的维度,并且重叠pool在训练过程中不容易产生过拟合。

⑤LRN局部响应归一化

后来加入到DL研究工作中的大佬们说这个LRN设计有点搞笑,而且用处其实不大,所以我直接就忽略。

4、图片预处理

①大小归一化

将所有图片都归一化为256x256大小,至于为什么直接不归一化到224(227),请参考上文说的扩充数据集的操作。

②减去像素平均值

所有图片每个像素值都减去所有训练集图片平均值

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏ATYUN订阅号

用Keras进行深度学习模式的正则化方法:Dropout

Dropout是神经网络和深度学习模型的简单而有效的正则化技术。 在这篇文章中,你将发现Dropout正则化技术,以及如何使用Keras将其应用于Python中...

3515
来自专栏AI科技大本营的专栏

资源 |​ 史上最全机器学习笔记

本文由LCatro整理 机器学习 机器学习算法原理 https://github.com/wepe/MachineLearning 机器学习实战原书内容与批注 ...

40910
来自专栏PaddlePaddle

解析卷积神经网络——数据扩充

《解析卷积神经网络——深度学习实践手册》基础理论篇部分已经更新完毕,从今天开始更新实践应用篇,正文部分为数据扩充篇目的知识

773
来自专栏目标检测和深度学习

教程 | 可视化CapsNet,详解Hinton等人提出的胶囊概念与原理

选自freecodecamp 作者:Nick Bourdakos 机器之心编译 参与:Pedro、思源 CapsNet 将神经元的标量输出转换为向量输出提高了表...

3107
来自专栏企鹅号快讯

基于tensorflow的手写数字识别

一、前言 本文主要介绍了tensorflow手写数字识别相关的理论,包括卷积,池化,全连接,梯度下降法。 二、手写数字识别相关理论 2.1 手写数字识别运算方法...

2197
来自专栏Petrichor的专栏

机器学习: Metric Learning (度量学习)

度量学习 (Metric Learning) == 距离度量学习 (Distance Metric Learning,DML) == 相似度学习

782
来自专栏人工智能

深入机器学习系列12-高斯混合模型

高斯混合模型   现有的高斯模型有单高斯模型()和高斯混合模型()两种。从几何上讲,单高斯分布模型在二维空间上近似于椭圆,在三维空间上近似于椭球。在很多情况下,...

2149
来自专栏机器之心

入门 | 理解深度学习中的学习率及多种选择策略

2606
来自专栏技术小站

吴恩达深度学习笔记 course4 week 4 特殊应用:人脸识别与神经风格转换

output:如果图片是对应的K人中的一人,则输出此人ID,否则验证不通过    ,人脸识别比人脸验证更难一些,如果一个人脸验证系统的正确率为99%,即错误率为...

732
来自专栏ATYUN订阅号

神经网络太臃肿?教你如何将神经网络减小四分之一

想要让深度神经网络更快,更节能一般有两种方法。一种方法是提出更好的神经网络设计。例如,MobileNet比VGG16小32倍,快10倍,但结果相同。另一种方法是...

3507

扫码关注云+社区