深度学习三人行(第10期)----CNN经典网络之LeNet-5和AlexNet
上一期,我们一起学习了深度学习卷积神经网络中的代码实现,内存计算以及池化层的原理等,
深度学习三人行(第9期)----卷积神经网络实战进阶(附代码)
接下来我们一起学习下关于CNN中比较经典的网络LeNet-5和AlexNet的相关知识,学习的路上我们多多交流,共同进步。本期主要内容如下:
CNN一般框架
LeNet-5网络
AlexNet网络
小结
一. CNN一般框架
卷积神经网络的典型框架就是由几个卷积层(卷积层后面一般紧跟着ReLU**层),然后接着是一个池化层,再几个卷积层,再一个池化层等等,随着网络的传输,图像的尺寸越来越小,但是特征图越来越多。在卷积层的结尾往往会跟几个全连接层(+ReLU**),最后跟一个输出层(比如softmax输出层)。如下图:
这里留一个问题,关于卷积层卷积核的问题,一个9x9的卷积核和两个3x3的卷积核效果是否一样?原因是什么?欢迎留言讨论。
经过这几年的发展,卷积神经网络出现了多种经典的网络,一个很好的衡量方法就是在一些大赛中模型的错误率,比方说ILSVRC ImageNet比赛。这个比赛在最近五年类,从26%的错误率降低到3%。CNN独领风骚!这其中第一个网络就是1998年的LeNet-5网络,接下来就是2012年的AlexNet,2014年的GoogLeNet和2015年的ResNet。
二. LeNet-5网络
LeNet-5网络是比较出名的经典的CNN网络,该网络在1998年被Yann LeCun创建,广泛用于手写字体识别(MNIST),我们一起看一下它的结构:
这里有一些细节值得注意:
MNIST数据的图像是28x28尺寸的,但是在输入网络之前,图像被0扩充到了32x32,并且被归一化,而后面的网络并没有用padding,所以图像的size会随着网络的加深而不断变小。
平均值的池化层比通常用的稍微复杂一些:每一个神经元计算输入的平均值,然后每张特征图再乘以一个可学习的系数,之后再加上一个可以学习的偏置项,最后在**。
C3卷积层中的大部分神经元并不是与S2层的6张图都相连,而是只与其中的三张或四张特征图相连。
输出层也是有一些特别,一般的输出层都是计算输入和权重的相乘,而该网络的输出却是输入和权重之间欧式距离的平方,每一个输出衡量了图像属于某一类具体数字的程度。
三. AlexNet网络
该网络以大优势赢得2012年的ImageNet ISLVRC大赛,由Alex Krizhevsky发现,跟LeNet-5网络有些相似,但是更大更深一些。该网络的一大特色就是直接的将卷积层堆叠到一起,而不是卷积层之后跟着池化层。如下:
为了降低过拟合的风险,Alex用了之前讨论的两种正则化技术
深度学习三人行(第7期)----深度学习之避免过拟合(正则化)
首先在training的时候对F8和F9运用了dropout(50% dropout 率),其次通过随机平移,翻转以及改变光照等技术进行数据增强。
AlexNet在C1和C3的ReLU层后面用了一个比较具有竞争性的正则化技术,称作局部响应正则化。这种正则化技术使得那些最强**的神经元去抑制那些相邻特征图中相同位置的神经元。这就使得不同的特征图更加的特别化,推动它们去寻找更加广泛的特征,最终增加了模型的泛化能力。下面的公式显示了如何应用局部响应正则化:
其中bi在特征图i上面某个位置上的正则化输出结果,ai为ReLU**函数之后的那个**的神经元,但是还没有正则化,k, α,β和r都是超参数,k叫做偏置,r是深度半径,fn为特征图的个数。
举个例子,如果r=2并且某个特征图上某个位置有一个强**的神经元,那么它将抑制该特征图上下两张特征图的该位置的神经元**。
在AlexNet中,超参数一般设置如下:r=2, α=0.00002,β=0.75和k=1,这个在TensorFlow中可以用函数
local_response_normalization()实现。
四. 小结
今天,我们一起学习了卷积神经网络的经典框架,以及常用在手写字符识别的经典网络LeNet-5,还有运用局部响应正则化技术的AlexNet,在学习的路上,我们共同进步,多谢有你。
(如需更好的了解相关知识,欢迎加入智能算法社区,在“智能算法”公众号发送“社区”,即可加入算法微信群和QQ群)