摘要:本文总结了AlexNet的技术要点,详细剖析了AlexNet神经网络每一层的输入输出等,并将caffe中AlexNet网络的对应部署列了出来。
1.AlexNet的技术要点
(1)双GPU并行计算:该网络采用了两块GPU计算,将卷积核分成两部分分别在GPU上运行。
(2)ReLU激活函数:LeNet采用的是sigmoid激活函数,因sigmoid函数在饱和阶段(函数两端)导数趋近于0,故在反向计算梯度时会使得计算得到的梯度趋近于0,造成梯度消失。AlexNet则采用的是ReLU( RectifiedLinear Units)激活函数,这就解决了梯度消失的困扰(在输入大于0时,梯度为1),并且也符合人类神经元的特性(在输入小于0时,梯度为0,即参数不会变,称为神经元的单边抑制)。目前大部分激活函数都会采用ReLU函数。
注:ReLu:f(x)= max(0,x)Sigmoid: f(x) =f(x) = (1 + e ?x ) ?1
(3) 局部响应归一化(Local Response Normalization,LRN):在神经网络中,我们用激活函数将神经元的输出做一个非线性映射,但是tanh和sigmoid这些传统的激活函数的值域都是有范围的,但是ReLU激活函数得到的值域没有一个区间,所以要对ReLU得到的结果进行归一化。注:现在LRN已不常用了。
(4)重叠池化( Overlapping Pooling):卷积核在遍历图像进行池化时,步长小于卷积核尺寸造成对重叠部分的重复池化。在caffe中重叠池化的一个例子如下:
文章图片
(5)dropout :在全连接层随机丢弃一定比例(一般是0.5)神经元,每次只训练50%的参数。最后该全连接层每一个参数都得到训练,在测试时随机抽出50%的参数去预测。dropout是正则化的一种方式,可以有效避免过拟合。在caffe中dropout的一个例子如下:
文章图片
(6)数据增强(data augmentation):神经网络过拟合的表现为在训练集上准确率很高,而在测试集上准确率很低。过拟合一般是由两个方面造成的,一是数据不够多,二是神经网络的拟合能力太强。所以通过已有的数据,经过一些变换处理,使其在像素层面上不同,而在宏观上不变(即数据的标签不变),通过这样数据增强的处理可以有效减弱过拟合。
2.AlexNet详解:(共8层,五层卷积层,三层全连接层)
文章图片
(1)输入:输入为227*227*3(有RGB 3个通道,每个通道为227*227大小)
文章图片
(2)第一层:输入为227*227*3的大小,由96个11*11*3的卷积核进行卷积,步长为4,(227-11)/4+1=55,所以经过卷积操作后结果为55*55*96.由于采用两块GPU计算,卷积核分两部分进行卷积,所以每一层结果为55*55*48。经过ReLU操作后LRN,其大小不会变。大小为55*55*48的特征图经过max pooling,pooling卷积核大小为3*3,步长为2,输出为(55-3)/2+1=27。所以第一层最后输出为27*27*48(每一层,共两层)。
文章图片
(3)第二层:输入为27*27*48(每一层,共两层),经过补边操作(每边加两个像素),后经过256个5*5*48的卷积核,步长为1,(27+2*2-5)/1+1=27,所以经过补边、卷积操作后大小为27*27*128。同样,经过ReLU操作后LRN,其大小不会变。大小为27*27*128的特征图经过max pooling,pooling卷积核大小为3*3,步长为2,输出为(27-3)/2+1=13.所以第二层最后输出为13*13*128(每一层,共两层)。
(4)第三层:输入为13*13*128(每一层,共两层),经过补边操作(每边加一个像素),后经过384个3*3*128的卷积核,步长为1,(13+2*1-3)/1+1=13,所以经过补边、卷积操作后大小为13*13*192(每一层,共两层),最后经过ReLU大小不变。
(5)第四层:输入为13*13*192(每一层,共两层),经过补边操作(每边加一个像素),后经过384个3*3*192的卷积核,步长为1,(13+2*1-3)/1+1=13,所以经过补边、卷积操作后大小为13*13*192(每一层,共两层),最后经过ReLU大小不变。
(6)第五层:输入为13*13*192(每一层,共两层),经过补边操作(每边加一个像素),后经过256个3*3*192的卷积核,步长为1,(13+2*1-3)/1+1=13,所以经过补边、卷积操作后大小为13*13*128(每一层,共两层),然后经过ReLU大小不变。最后经过max pooling,pooling大小为3*3,步长为2,(13-3)/2+1=6,所以最后输出为6*6*128(每一层,共两层).
(7)第六层:输入为6*6*128(每一层,共两层),总的尺寸为6*6*256.用4096个6*6*256卷积核进行卷积,结果为4096个1*1的特征图,每一层为2048个1*1的特征图,即每一层为2048维向量。然后经过ReLU和dropout。所以该层最终结果为4096个数据。
文章图片
(8)第七层:第6层输出的4096个数据与第7层的4096个神经元进行全连接,然后经由ReLU和Dropout进行处理后生成4096个数据。
文章图片
(9)第八层:第7层输入的4096个数据与第8层的1000个神经元进行全连接。最后经softmax输出每个类型的概率。
文章图片
【深度学习|卷积神经网络 AlexNet详解】
推荐阅读
- 深度学习|Pytorch总结五之 模型选择、?拟合和过拟合
- NLP|Transformer - Attention Is All You Need - 跟李沐学AI
- #|新闻主题分类任务——torchtext 库进行文本分类
- 自然语言处理|自然语言处理(七)(AG_NEWS新闻分类任务(TORCHTEXT))
- TensorFlow|Tensorflow 神经网络训练加速
- 神经网络|Datawhale-李宏毅深度学习/神经网络训练方法
- 深度学习|【深度学习】吴恩达深度学习-Course1神经网络与深度学习-第三周浅层神经网络作业
- 深度学习|神经网络和深度学习-第2周 logistic-regression-as-a-neural-network
- 深度学习|神经网络和深度学习(二)-神经网络的编程基础