AlexNet详解3

摘要:
发布网络结构历史。这个AlexNet是我今天要谈论的。AlexNet由2012年ImageNet竞赛的获胜者AlexKrizhevsky设计。这种网络结构与LeNet有什么不同?2012年AlexNet出现时,以卷积神经网络为核心的深度学习开始火热。让我们看一下AlexNet的结构图。AlexNet结构图卷积神经网络的结构不是所有层的简单组合。它由“模块”组成。在模块内部,每一层的布置都是特殊的。例如,AlexNet的结构图由八个模块组成。

Reference.

Krizhevsky A, Sutskever I, Hinton G E. ImageNet Classification with Deep Convolutional Neural Networks [J]. Advances in Neural Information Processing Systems, 2012, 25(2):2012.
https://code.google.com/p/cuda-convnet/


说来惭愧,看了深度学习快五个月了,前几周的Paper Review上刚刚注意到AlexNet,那果断用啊,话说LeNet虽然好用,那也是快20年以前的网络结构了,AlexNet是2012年的结构,不管怎么说肯定好呀。贴一张网络结构的历史

AlexNet详解3第1张
闹,这个AlexNet就是我今天要讲的东西

AlexNet是2012年ImageNet竞赛冠军获得者Alex Krizhevsky设计的,这个网络结构和LeNet有什么区别呢?

1 卷积神经网络的组成部分

套路是一样的,先介绍一下深度学习的卷积神经网络(ConvNet)的组成吧。

1.1 卷积层(Convolutional Layer)

这个不多说,学过信号的都大概知道卷积是个什么玩意儿,不懂的话可以参考额。。。别参考了,好好学基础知识去吧~要说明的一点是这个卷积的过程很好地模拟了人的视觉神经系统的过程,听老师说人眼看东西也就是一个卷积的过程哦,这个我可不能保证哦~

AlexNet详解3第2张
卷积的动态过程

1.2 降采样层(Pooling Layer)

降采样就是用一个值来代替一块区域,这个值可以是区域的平均值,最大值,最小值等等,反正有代表性就好了,这个层的目的就是减少数据量。

AlexNet详解3第3张
降采样过程

1.3 激活函数层(Activation Layer)

激活函数的作用是把卷积后的结果压缩到某一个固定的范围,这样可以一直保持一层一层下去的数值范围是可控的。比如一些常见的激活函数

  • sigmoid:控制在[0, 1]
  • tanh:控制在[-1, 1]
  • ReLU:控制在[0, 正无穷]
  • 还有好多新的激活函数,这儿就不举例了,知道它们的作用就OK
    AlexNet详解3第4张
    我用的是ReLU激活函数

1.4 标准化层(Normalization Layer)

AlexNet详解3第5张
没什么大不了的,就用了个公式来标准化一下

1.5 全连接层(Full Connected Layer)

全连接层给人的感觉就是人工神经网络的那样,把所有的网络结点都用一些带权重的值连接起来。这个层一般出现在CNN的后面部分,这个层很长,可以作为图像的特征向量来用,也有论文是把全连接层放到SVM,RF,Adaboost,ANN等传统的分类器里头分类,来代替CNN最后的softmax层,那我也做过这个实验,得到的结果并不好,我不知道这些大牛是怎么弄的。这儿打个问号?

AlexNet详解3第6张
顾名思义,所有的结点都是连接起来的,这儿的权重会特别多,因为全连接了嘛

1.6 扔掉层(Dropout Layer)

这个层我不知道怎么翻,反正作用就是把一些没用的结点给扔掉。

  • 这个思路参考了人的大脑的实际运行状态,研究表明大脑在分析图像的过程中真正被激活的神经元并不多,具体哪些被激活靠得就是先前的学习,和留下来的记忆。那如果没有这个dropout层,我们的CNN在判断所有的图像是相当于所有的结点都激活了,这样和现实的情况不符,所以我们要模拟大脑,把一下没什么用的结点给扔掉。
  • 这个层的作用是加快运算速度,防止过拟合,让网络更加的普适,更加有所谓的“鲁棒性”——装个逼,其实就是更好哈哈:)
  • 实现的方法是设置一个阈值,如果这个结点与结点之间的权重高于这个值,那么说明这是强关系,我们保留,如果权重低于这个值,说明关系不大,我们把它扔掉得了。!!这个实现方法说错了,特别感谢@hzzzol同学的指正,正确的解释应该是:
  • Dropout是在训练过程中以一定概率1-p将隐含层节点的输出值清0,而用bp更新权值时,不再更新与该节点相连的权值。什么意思,就是这个就是个概率问题,和权值的大小,激活程度无关哦,被抽中的结点无条件被丢掉。(Dropout简单理解DropConnect简单理解
AlexNet详解3第7张
由于权重太多,那我们就把一些没用的扔掉
  • 这个层常常出现在全连接层的地方,因为全连接层中的结点与结点连接太多了,消耗了CNN中绝大多数的内存资源,而这中间有一大部分是没有必要的。
    AlexNet详解3第8张
    你看,最后几层多浪费!

2 LeNet与AlexNet

以上是对CNN的一个简单的阐述,当然啰,比较琐碎,一个完整的CNN结构是由多个1)卷积层,2)降采样层,3)激活函数层,4)标准化层,5)全连接层和6)扔掉层 有序地拼接而成的,那么又来了这个问题,LeNet和AlexNet的拼法到底有什么不同呢?

2.1 LeNet

再次祭出这幅经典的LeNet图

AlexNet详解3第9张
太经典啦!

LeNet的成功应用案例是手写字体的识别,就是给一堆手写的阿拉伯数字,用网络来判断这是个什么字。应用的就是当时的邮局等地方,还有门牌号。其实传统的分类器已经可以做到很好的水平了(正确率在96%吧大概),那LeNet作为新起之秀,正确率达到了98%,那在当时就很有名啊,赚了好多好多钱呢,然后卷积神经网络的研究就开始火了呀。到了2012出现AlexNet,以卷积神经网络为核心的深度学习就开始烫了哈哈。
我们可以看到LeNet中有1)卷积层,2)降采样层(就是Subsampling),和3)全连接层,当然喽,应该是由激活函数层的,只是图中没有画,当时用的应该是sigmoid函数吧,反正现在不用了。你可以发现刚刚提到的扔掉层(dropout)和标准化层没有用诶,为什么呢,因为
当时还没有这个啊==b
可以注意到LeNet的

  • 输入尺寸是32*32像素
  • 卷积层:3个
  • 降采样层:2个
  • 全连接层:1个
  • 输出:10个类别(数字0-9的概率)

然后softmax根据网络输出,也就是这个图像是0-9的概率值大小来判断输入的是多少,比如输出的是个结点,4的值是0.9,其他都是0.001这样的,那么就是说这个输入的图像就是4了,然后根据这个输出的概率,我们可以排列一下输入图像输入某一类的概率值,从大到小,取3个比如,ImageNet竞赛的规则就是这三个里头有一个是对的就当你的网络预测是对的,不然就是预测错误。

2.2 AlexNet

我个人的感觉是AlexNet更强调了全连接层的作用,它用了两个全连接层,那么为了减少权重的数目,才引出了dropout这个概念,其他的区别其实不能叫做区别

  • 输入尺寸:227*227像素(因为竞赛的需要)
  • 卷积层:好多(因为输入尺寸的需要)
  • 降采样层:好多(因为输入尺寸的需要)
  • 标准化层:这个反正就是一个公式
  • 输出:1000个类别(因为竞赛的需要)

这儿要说明一下:不要以为卷积层的个数、降采样层的个数、卷积核的尺寸、卷积核的个数这些网络细节会对最后的训练结果产生什么了不得的影响,这些就按照你的输入图像的尺寸来就行了。没有什么说头,你也可以去参考现在已经有的网络结构去设计,都可以的。这些参数大多都是手动调的,依据就是看看学习的结果如何。

放一下AlexNet的结构图

AlexNet详解3第10张
整体AlexNet结构图

卷积神经网络的结构并不是各个层的简单组合,它是由一个个“模块”有机组成的,在模块内部,各个层的排列是有讲究的。比如AlexNet的结构图,它是由八个模块组成的。

AlexNet详解3第11张
模块一
AlexNet详解3第12张
模块二

模块一和模块二是CNN的前面部分,

卷积-激活函数-降采样-标准化

构成了一个计算模块,这个可以说是一个卷积过程的标配,CNN的结构就是这样,从宏观的角度来看,就是一层卷积,一层降采样这样循环的,中间适当地插入一些函数来控制数值的范围,以便后续的循环计算。

AlexNet详解3第13张
模块三、四

模块三和四也是两个卷积过程,差别是少了降采样,原因就跟输入的尺寸有关,特征的数据量已经比较小了,所以没有降采样,这个都没有关系啦。

AlexNet详解3第14张
模块五

模块五也是一个卷积过程,和模块一、二一样事儿的,就是重复重复。好了,可以总结一下,模块一到五其实都是在做卷积运算,根据输入的图像尺寸在适当决定哪几层要用降采样。然后再加上一些必要的函数来控制数值,就可以了。模块五输出的其实已经是66的小块儿了(一般我设计都是到11的小块,由于ImageNet的图像大,所以66也正常的。)
为什么原来输入的227
227像素的图像会变成6*6这么小呢,主要原因是归功于降采样,当然啰,卷积层也会让图像变小,如图,一层层的下去,图像越来越小

AlexNet详解3第15张
CNN过程
AlexNet详解3第16张
模块六
AlexNet详解3第17张
模块七、八

模块六和七就是所谓的全连接层了,全连接层就和人工神经网络的结构一样的,结点数超级多,连接线也超多,所以这儿引出了一个dropout层,来去除一部分没有足够激活的层,其实我记的没错的话这个思想在ANN里头早就有了。
模块八就是一个输出的结果,结合上softmax做出分类。有几类,输出几个结点,每个结点保存的是属于该类别的概率值。:)


好了,讲完了,就酱。
GoogLeNet和VGG我现在还没有看呢,估计应该套路和LeNet和AlexNet差不多,可能网络的深度加了,超大规模的GPU了,或者网络更加精简了,反正整体的思路是不变的,我回头还是要看一看的:)

免责声明:文章转载自《AlexNet详解3》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇Cocos2d-x使用Luajit将Lua脚本编译成bytecode,启用加密(23)事件分发机制下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

LabVIEW部分视觉函数中文解说

IMAQ Learn Pattern 2 VI在匹配阶段创建您要搜索的图案匹配的模板图像的描述,此描述的数据被附加到输入模板图像中。在匹配阶段,从模板图像中提取模板描述符并且用于从检查图像中搜索模板。 Image:是一个您要搜索模板图像的参考检查图像。 Learn Pattern Setup Data(学习模式设置数据):是一个字符串,包含从本控件或从高级...

机器学习——正则化与交叉验证

0正则化 模型选择的典型方法是正则化。正则化是结构风险最小化策略的实现,是在经验风险上加一个正则化项或惩罚项。正则化一般是模型复杂度的单调递增函数,模型越越复杂,正则化的值就越大,比如,正则化项可以是模型参数向量的范数: 其中,第1项是经验风险,第二项是正则化项,a>=0为调整两者之间的关系函数。 正则化项可以取不同的形式。例如,回归问题中,损失函...

微软开源自动机器学习工具NNI安装与使用

微软开源自动机器学习工具 – NNI安装与使用   在机器学习建模时,除了准备数据,最耗时耗力的就是尝试各种超参组合,找到最佳模型的过程了。对于初学者来说,常常是无从下手。即使是对于有经验的算法工程师和数据科学家,也是很难把握所有的规律,只能多次尝试,找到较好的超参组合。而自动机器学习这两年成为了热门领域,它将机器学习过程中包括自动特征提取、模型选择、参数...

CNN网络的基本介绍(二)

四、激活函数 激活函数又称非线性映射,顾名思义,激活函数的引入是为了增加整个网络的表达能力(即非线性)。若干线性操作层的堆叠仍然只能起到线性映射的作用,无法形成复杂的函数。常用的函数有sigmoid、双曲正切、线性修正单元函数等等。 使用一个神经网络时,需要决定使用哪种激活函数用隐藏层上,哪种用在输出节点上。    比如,在神经网路的前向传播中,这两步会使...

机器学习 —— 概率图模型(推理:消息传递算法)

  概率图模型G(V,E)由节点V和边E构成。在之前马尔科夫模型相关的博客中,我谈到马尔科夫模型的本质是当两个人交流后,其意见(两个随机变量)同意0与不同意1的概率组合。而势函数表达的是两个意见相同或者相左的程度。   我们搞的那么麻烦,最后想要得到的不就是每个意见正确与否(随机变量取不同值的概率)吗?与其采用解析的方法去算,去把所有其他的变量边际掉,那干...

python数据分析用什么软件?(萌新进)

Python是数据处理常用工具,可以处理数量级从几K至几T不等的数据,具有较高的开发效率和可维护性,还具有较强的通用性和跨平台性,这里就为大家分享几个不错的数据分析工具。 Python数据分析需要安装的第三方扩展库有:Numpy、Pandas、SciPy、Matplotlib、Scikit-Learn、Keras、Gensim、Scrapy等,以下是第三方...