AlexNet论文学习

AlexNet论文阅读

个人心得:
1.更大的数据集(如ImageNet)可以帮助CNN训练至收敛。
2.适合的梯度下降函数(Relu)可以加速训练
3.GPU并行运算更加迅速
4.数据增广、批处理训练dropout、池化操作、LRN正则化可以减少过拟合

摘要

Alex小组训练了一个DCNN,由五个卷积层,一些max-pooling 层,三个全连接层组成,采用了GPU训练和"dropout"正则化,在ImageNet数据集上取得了很好的效果。

1.简介

收集更大的数据集、建立更大的模型、使用更好的防止过拟合的方法可以改善目标识别任务的表现。
目标识别任务的复杂性意味着,即使是ImageNet这样的数据集也没法指定某一问题,因此我们的模型需要大量的先验知识,以补偿没有的数据。
可以通过调节深度和宽度控制CNN的能力,并且CNN可以对图像性质(统计数据的平稳性和像素的位置相关性)做出strong and mostly correct 的假设。
CNN具有更少的connection和参数,更容易训练(GPU可以帮助训练,大数据可以减少过拟合)。
Alex小组训练了最大的CNN,并且部署在GPU训练,发现了深度对CNN性能很重要。

2.数据集

ImageNet由不同分辨率图像组成,我们将图片调整成256*256,并且直接对RGB图像做训练。

3.结构

AlexNet网络结构
AlexNet包含8个学习层(5个卷积层和3个全连接层),下面按重要性描述结构(前面的更重要)
3.1 ReLU非线性
标准的神经元输出是函数 f 对输入 x 的作用 f(x) = tan(x) 或 f(x) = sigmoid(x)。而在ImageNet上我们主要关心过拟合,因此采用ReLU函数加速训练。(此处x应该指神经元权值运算结果z)
3.2 GPU训练
采用GPU训练加速了模型训练,并且可以并行训练。
3.3 Local Response Normalization
ReLU能有效地防止饱和。然而我们发现LRN仍然有助于模型泛化。
LRN
n是相似空间位置近邻kernel的总和,N是层中kernel的总数。这种响应正则化是类似于神经元启发性的侧向抑制。
k,n,α,β(本论文为2, 5, 10^-4, 0.75)是超参数,我们在ReLU后面采用这种正则化。
3.4 重叠池化
CNN中的pooling操作汇合了在相似kernel中的临近组神经元的输出。传统的pooling并不重叠。一个pooling layer可被认为是池化单元网格间隔s个像素组成,每个单元汇合池化单元位置的中心尺寸z*z的近邻。当s=z时,是传统池化,当s<z时,获得重叠池化。重叠池化可以减少过拟合。
3.5 总体结构
overall architecture

网络共八层,5层卷积层,3层全连接。最后一层全连接输出到1000路softmax,softmax层在1000个类别上产生分布。ReLU作用于每个卷积和全连接层的输出。
1.conv1层:
conv1Data Flow Diagram

注:输入应为2272273,否则算出输出维度不为55(有说舍弃小数,但一般设计时取整或用padding填充)。
Input的通道数 = kernel的通道数。
Output的channel数 = kernel的个数。
卷积层输出: W/H = (W - F + 2P)/S + 1 D2 = K
池化层输出: W/H = (W - F + 2
P)/ S + 1 D2 = D1
**注:**为实现高宽减少一半,池化层也有padding
卷积操作:故输出为555596个像素层,使用双GPU并行训练,故分成两组,每组48个卷积核,则对应生成两组555548的像素层。像素层经过relu1单元的处理,生成激活像素层,仍为两组555548的像素层数据。
池化操作:这些像素层数据经过pooling运算,pooling运算 F = 3(kernel_size),s = 2。故池化后像素规模为两组272748像素层。
LRN操作: norm尺度为5*5
反向传播时,每个卷积核对应一个偏差值,即第一层的96个卷积核对应上层输入的96个偏差值。
???

2.conv2层
conv2
默认卷积层步长为1,池化层(默认应该为2?)
W = (27 - 5 + 22)/ 1 + 1 = 27
H = 27
D = 256
卷积层输出27
27128(两组)
W = (27 - 3)/ 2 + 1 = 13
D = 128
池化层输出 13
13*128(两组)
反向传播时,每个卷积核对应一个偏差值,即第一层的96个卷积核对应上层输入的256个偏差值。
???

3.conv3层
conv3
W = H = 13 D = 192(两组)
共1313384个像素层
4.conv4层
conv4
1313192(两组),共1313384像素层
5.conv5层
conv5
卷积层输出1313128(两组)
池化层输出66128(两组)
共输出66256个像素层
6.FC1
FC1
由于全连接层输入数据尺寸为66256,采用66256的滤波器对第六层的输入数据做卷积运算,每个66256尺寸的滤波器对第六层输入数据进行卷积运算生成一个运算结果,通过一个神经元输出运算结果。共有4096个运算通过relu生成4096个值,然后经过dropout,输出结果值。
**全连接层实现:**实际使用时,全连接层可由卷积操作实现:前层是全连接的全连接层,可以将其转化为1*1的卷积 前层是卷积层的全连接层,可以将其转化为卷积核为 h * w 的全局卷积(h,w为前层输出的高和宽),后一层(输出层)的神经元个数作为卷积核的个数(卷积核数量为卷积层的输出通道数)。
**全连接层作用:**将分布式特征representation映射到标记样本空间。即将特征representation整合在一起,输出一个值,大大减少了特征位置对分类带来的影响。但因为空间结构特性被忽略了,所以全连接层不适合用于在方位上找Pattern的任务,比如segmentation,只适合分类任务。
7.FC2
FC2
8.FC3
FC3

4.减少过拟合

4.1数据增广
采用了两种数据增广形式,第一种是图像平移和垂直映射。
第二种是改变RGB通道强度。执行PCA
4.2Dropout
随机(本文为0.5)对神经元输出置0,神经网络结构发生了变化但仍共享权值。

5.训练细节

SGD,初始化权值方法,并行训练方法

6.总结

1.CNN对图片分类是有效的,目标不在图片中心也能识别
2.深度对CNN表现很重要
3.时序结构会提供许多有用的信息(Video?NLP?)
4.CNN可以对图像性质(统计数据的平稳性和像素的位置相关性)做出可靠并几乎正确的假设。
5.猜想:如果两个图片生成的特征激活向量的欧氏距离很小,可以说NN高层认为它们很相似。
使用此度量,可以实现较好的图像检索。
通过欧氏距离计算两个4096维度效率太低,可以使用自动编码压缩向量成二进制码。这比直接在原始像素上使用自动编码效果更好。因为在raw pixels上使用quto-encoder,没用到标签数据,只是检索有相似边缘模式(similar patterns of edges)的图像,却不管他们语义(semantically)上是否相似。即,抽取特征后,压缩计算相似度。

各层作用

参考文章:https://zhuanlan.zhihu.com/p/180554948
https://blog.csdn.net/qq_24695385/article/details/80368618

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值