Alex Net(ImageNet Classification with Deep Convolutional Neural Networks)
2018-03-24 21:24
603 查看
Alex Net
目录
Novel Idea
ReLU
Dropout
Data Augmentation
Analyse of the Architecture
Rest Part
参考:
文章重点解析:【卷积神经网络-进化史】从LeNet到AlexNet
模型框架分析:神经网络模型之AlexNet的一些总结
全连接层解释:解释一下全连接层
Dropout
Dataset Augmentation
但是它有一些致命的缺点:
Sigmoids saturate and kill gradients.
sigmoid 有一个非常致命的缺点,当输入非常大或者非常小的时候,会有饱和现象,使神经元的梯度是接近于0。如果初始值很大,梯度在反向传播时因为需要乘上一个sigmoid 的导数,所以会变得越来越小,这会导致网络变的很难学习。
Sigmoid 的 output 不是0均值.
这是不可取的,因为这会导致后一层的神经元将得到上一层输出的非0均值的信号作为输入。如果数据进入神经元的时候是正的:x>0elementwiseinf=wTx+b,那么 w 计算出的梯度也会始终都是正的。
当然,如果是按batch去训练,那么那个batch可能得到不同的信号,所以这个问题可以缓解一下。因此,非0均值这个问题虽然会产生一些不好的影响,不过跟上面提到的 kill gradients 问题相比还是要好很多。
ReLU 的数学表达式如下:
f(x)=max(0,x)
很显然,从图左可以看出,输入信号<0时,输出都是0,>0 的情况下,输出等于输入。w 是二维的情况下,使用ReLU之后的效果如下:
AlexNet 提出了一个非常有效的模型组合版本,它在训练中只需要花费两倍于单模型的时间。这种技术叫做Dropout:对每个隐层神经元都以0.5的概率将其输出设置为零。以这种方式“dropped out”的神经元既不参与前向传播,也不参与反向传播。
所以每次输入一个样本,就相当于该神经网络就尝试了一个新的结构,但是所有这些结构之间又共享权重。因为神经元不能依赖于其他特定神经元而存在,所以这种技术降低了神经元复杂的互适应关系。
正因如此,网络需要被迫学习更为稳定的特征,这些特征在结合其他神经元的一些不同随机子集时有用。在测试时,将所有神经元的输出都乘以0.5,对于获取指数级dropout网络产生的预测分布的几何平均值,这是一个合理的近似方法。
将数据扩大了2048倍(32*32*2,32为256 - 224)
对RGB信道进行扰动
利用PCA得到的矩阵计算出特征值pi与特征向量λi并利用由U(0,0.1)产生的随机值αi进行扰动:Ixy=Ixy+[p1,p2,p3][α1λ1,α2λ2,α3λ3]T
附公式:
输入图片大小:W×W
Filter大小:F×F
步长:S
卷积时填充的像素数:P
N=⌊W−F+2PS⌋+1
第一层:
Convolution:第一层图像大小为224*224*3,卷积核大小为11*11*3,数量为96,步长为4,用上述公式计算可得:⌊224−11+2P4⌋+1=55,可以得出在卷积前,对图像进行了填充的预处理,让图像大小变为228*228*3(原博客中为227*227*3,但是padding时对两侧同时增加两列零向量可能更直观)。输出为55*55*48(分为两个GPU)。
ReLU、LRN(正则化)
Max pooling:输入为55*55*48(对其中一个GPU分析),池化层大小为3*3,步长为2,经过处理后得到的图像大小为⌊55−32⌋+1=27,即27*27*48(两个GPU)。
第二层:
Convolution:输入图像大小为27*27*48,卷积核大小为5*5*48,数量为256,步长为1,用上述公式计算可得:⌊27−5+2P1⌋+1=27,可以得出在卷积前,每幅像素层的左右两边和上下两边都要填充2个像素。输出为27*27*128(分为两个GPU)
ReLU、LRN(正则化)
Max pooling:输入为27*27*128(对其中一个GPU分析),池化层大小为3*3,步长为2,经过处理后得到的输出大小为⌊27−32⌋+1=13,即13*13*128(两个GPU)。
第三层:
Convolution:输入图像大小为13*13*128,卷积核大小为3*3*128,数量为384,步长为1,类似前述过程,经过填充(P = 1)用上述公式计算可得:⌊13−3+21⌋+1=13。输出为13*13*192(分为两个GPU)
ReLU、LRN(正则化)
Max pooling:该层没有进行池化,输出图像为13*13*192(两个GPU)
第四层:
Convolution:输入图像大小为13*13*192,卷积核大小为3*3*192,数量为384,步长为1,类似前述过程,经过填充(P = 1)用上述公式计算可得:⌊13−3+21⌋+1=13。输出为13*13*192(分为两个GPU)
ReLU、LRN(正则化)
Max pooling:该层没有进行池化
第五层:
Convolution:输入图像大小为13*13*192,卷积核大小为3*3*192,数量为256,步长为1,类似前述过程,经过填充(P = 1)用上述公式计算可得:⌊13−3+21⌋+1=13。输出为13*13*128(分为两个GPU)
ReLU、LRN(正则化)
Max pooling:输入为13*13*128(对其中一个GPU分析),池化层大小为3*3,步长为2,经过处理后得到的输出大小为⌊13−32⌋+1=6,即6*6*128(两个GPU)。
fc6(全连接层):
输入图像为13*13*256(总共),经过4096个13*13*256大小的卷积核,最后得到的输出为1*1*4096。
fc7:
输入为1*1*4096,经过4096个1*1*4096大小卷积核的卷积,得到1*1*4096的输出。
fc8:
输入为1*1*4096,经过全连接,得到1000个神经元。
迭代池化(Overlapping Pooling)
局部响应正则化(Local Response Normalization)
参数模型调整:以0.01开始,每次除以10
目录
Novel Idea
ReLU
Dropout
Data Augmentation
Analyse of the Architecture
Rest Part
参考:
文章重点解析:【卷积神经网络-进化史】从LeNet到AlexNet
模型框架分析:神经网络模型之AlexNet的一些总结
全连接层解释:解释一下全连接层
Novel Idea
ReLUDropout
Dataset Augmentation
ReLU
Sigmoid 是常用的非线性激活函数,把输入的连续实值压缩到0和1之间。特别的,如果是非常大的负数,那么输出就是0;如果是非常大的正数,输出就是1.但是它有一些致命的缺点:
Sigmoids saturate and kill gradients.
sigmoid 有一个非常致命的缺点,当输入非常大或者非常小的时候,会有饱和现象,使神经元的梯度是接近于0。如果初始值很大,梯度在反向传播时因为需要乘上一个sigmoid 的导数,所以会变得越来越小,这会导致网络变的很难学习。
Sigmoid 的 output 不是0均值.
这是不可取的,因为这会导致后一层的神经元将得到上一层输出的非0均值的信号作为输入。如果数据进入神经元的时候是正的:x>0elementwiseinf=wTx+b,那么 w 计算出的梯度也会始终都是正的。
当然,如果是按batch去训练,那么那个batch可能得到不同的信号,所以这个问题可以缓解一下。因此,非0均值这个问题虽然会产生一些不好的影响,不过跟上面提到的 kill gradients 问题相比还是要好很多。
f(x)=max(0,x)
很显然,从图左可以看出,输入信号<0时,输出都是0,>0 的情况下,输出等于输入。w 是二维的情况下,使用ReLU之后的效果如下:
Dropout
结合预先训练好的许多不同模型来进行预测,是一种非常成功的减少测试误差的方式。但因为每个模型的训练都需要花好几天时间,因此这种做法不适用于大型神经网络。AlexNet 提出了一个非常有效的模型组合版本,它在训练中只需要花费两倍于单模型的时间。这种技术叫做Dropout:对每个隐层神经元都以0.5的概率将其输出设置为零。以这种方式“dropped out”的神经元既不参与前向传播,也不参与反向传播。
所以每次输入一个样本,就相当于该神经网络就尝试了一个新的结构,但是所有这些结构之间又共享权重。因为神经元不能依赖于其他特定神经元而存在,所以这种技术降低了神经元复杂的互适应关系。
正因如此,网络需要被迫学习更为稳定的特征,这些特征在结合其他神经元的一些不同随机子集时有用。在测试时,将所有神经元的输出都乘以0.5,对于获取指数级dropout网络产生的预测分布的几何平均值,这是一个合理的近似方法。
Data Augmentation
对256*256的原始图像进行随机crop,抽出224*224的块,并翻转将数据扩大了2048倍(32*32*2,32为256 - 224)
对RGB信道进行扰动
利用PCA得到的矩阵计算出特征值pi与特征向量λi并利用由U(0,0.1)产生的随机值αi进行扰动:Ixy=Ixy+[p1,p2,p3][α1λ1,α2λ2,α3λ3]T
Analyse of the Architecture
文中的架构如下:附公式:
输入图片大小:W×W
Filter大小:F×F
步长:S
卷积时填充的像素数:P
N=⌊W−F+2PS⌋+1
第一层:
Convolution:第一层图像大小为224*224*3,卷积核大小为11*11*3,数量为96,步长为4,用上述公式计算可得:⌊224−11+2P4⌋+1=55,可以得出在卷积前,对图像进行了填充的预处理,让图像大小变为228*228*3(原博客中为227*227*3,但是padding时对两侧同时增加两列零向量可能更直观)。输出为55*55*48(分为两个GPU)。
ReLU、LRN(正则化)
Max pooling:输入为55*55*48(对其中一个GPU分析),池化层大小为3*3,步长为2,经过处理后得到的图像大小为⌊55−32⌋+1=27,即27*27*48(两个GPU)。
第二层:
Convolution:输入图像大小为27*27*48,卷积核大小为5*5*48,数量为256,步长为1,用上述公式计算可得:⌊27−5+2P1⌋+1=27,可以得出在卷积前,每幅像素层的左右两边和上下两边都要填充2个像素。输出为27*27*128(分为两个GPU)
ReLU、LRN(正则化)
Max pooling:输入为27*27*128(对其中一个GPU分析),池化层大小为3*3,步长为2,经过处理后得到的输出大小为⌊27−32⌋+1=13,即13*13*128(两个GPU)。
第三层:
Convolution:输入图像大小为13*13*128,卷积核大小为3*3*128,数量为384,步长为1,类似前述过程,经过填充(P = 1)用上述公式计算可得:⌊13−3+21⌋+1=13。输出为13*13*192(分为两个GPU)
ReLU、LRN(正则化)
Max pooling:该层没有进行池化,输出图像为13*13*192(两个GPU)
第四层:
Convolution:输入图像大小为13*13*192,卷积核大小为3*3*192,数量为384,步长为1,类似前述过程,经过填充(P = 1)用上述公式计算可得:⌊13−3+21⌋+1=13。输出为13*13*192(分为两个GPU)
ReLU、LRN(正则化)
Max pooling:该层没有进行池化
第五层:
Convolution:输入图像大小为13*13*192,卷积核大小为3*3*192,数量为256,步长为1,类似前述过程,经过填充(P = 1)用上述公式计算可得:⌊13−3+21⌋+1=13。输出为13*13*128(分为两个GPU)
ReLU、LRN(正则化)
Max pooling:输入为13*13*128(对其中一个GPU分析),池化层大小为3*3,步长为2,经过处理后得到的输出大小为⌊13−32⌋+1=6,即6*6*128(两个GPU)。
fc6(全连接层):
输入图像为13*13*256(总共),经过4096个13*13*256大小的卷积核,最后得到的输出为1*1*4096。
fc7:
输入为1*1*4096,经过4096个1*1*4096大小卷积核的卷积,得到1*1*4096的输出。
fc8:
输入为1*1*4096,经过全连接,得到1000个神经元。
Rest Part
利用多GPU进行训练迭代池化(Overlapping Pooling)
局部响应正则化(Local Response Normalization)
参数模型调整:以0.01开始,每次除以10
相关文章推荐
- ImageNet Classification with Deep Convolutional Neural Networks 阅读笔记
- ImageNet Classification with Deep Convolutional Neural Networks 译文
- ImageNet Classification with Deep Convolutional Neural Networks-AlexNet阅读笔记
- ImageNet Classification with Deep Convolutional Neural Networks论文翻译——中文版
- ImageNet Classification with Deep Convolutional Neural Networks 论文解读
- ImageNet Classification with Deep Convolutional Neural Networks论文翻译——中英文对照
- ImageNet Classification with Deep Convolutional Neural Networks -- 解读
- 《ImageNet Classification with Deep Convolutional Neural Networks》(AlexNet)论文翻译
- ImageNet Classification with Deep Convolutional Neural Networks笔记(摘要版)
- ImageNet Classification with Deep Convolutional Neural Networks 阅读理解及问题
- ImageNet Classification with Deep Convolutional Neural Networks笔记
- ImageNet Classification with Deep Convolutional Neural Networks 阅读笔记
- ImageNet Classification with Deep Convolutional Neural Networks论文笔记
- alexnet笔记(ImageNet Classification with Deep Convolutional Neural Networks)
- ImageNet Classification with Deep Convolutional Neural Networks 论文翻译
- ImageNet Classification with Deep Convolutional Neural Networks 论文学习
- 整理ImageNet Classification with Deep Convolutional Neural Networks中的要点
- 《ImageNet Classification with Deep Convolutional Neural Networks》ImageNet与深卷积神经网络分类
- 《ImageNet Classification with Deep Convolutional Neural Network》
- ImageNet Classification with Deep Convolutional Neural Networks阅读笔记