LeNetAlexNetGoogLeNetVGGResNetInception-ResNet-v2FractalNetDenseNet
Posted deep_learninger
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了LeNetAlexNetGoogLeNetVGGResNetInception-ResNet-v2FractalNetDenseNet相关的知识,希望对你有一定的参考价值。
2006年Hinton他们的Science Paper再次引起人工神经网络的热潮,当时提到,2006年虽然Deep Learning的概念被提出来了,但是学术界的大家还是表示不服。当时有流传的段子是Hinton的学生在台上讲paper时,台下的机器学习大牛们不屑一顾,质问你们的东西有理论推导吗?有数学基础吗?搞得过SVM之类吗?回头来看,就算是真的,大牛们也确实不算无理取闹,是骡子是马拉出来遛遛,不要光提个概念。
时间终于到了2012年,Hinton的学生Alex Krizhevsky在寝室用GPU死磕了一个Deep Learning模型,一举摘下了视觉领域竞赛ILSVRC 2012的桂冠,在百万量级的ImageNet数据集合上,效果大幅度超过传统的方法,从传统的70%多提升到80%多。个人觉得,当时最符合Hinton他们心境的歌非《我不做大哥好多年》莫属。
这个Deep Learning模型就是后来大名鼎鼎的AlexNet模型。这从天而降的AlexNet为何能耐如此之大?有三个很重要的原因:
- 大量数据,Deep Learning领域应该感谢李飞飞团队搞出来如此大的标注数据集合ImageNet;
- GPU,这种高度并行的计算神器确实助了洪荒之力,没有神器在手,Alex估计不敢搞太复杂的模型;
- 算法的改进,包括网络变深、数据增强、ReLU、Dropout等,这个后面后详细介绍。
- 数据扩展:裁剪,镜像,平移,旋转,颜色,光照等。
从此,Deep Learning一发不可收拾,ILSVRC每年都不断被Deep Learning刷榜,如图1所示,随着模型变得越来越深,Top-5的错误率也越来越低,目前降到了3.5%附近,而在同样的ImageNet数据集合上,人眼的辨识错误率大概在5.1%,也就是目前的Deep Learning模型的识别能力已经超过了人眼。而图1中的这些模型,也是Deep Learning视觉发展的里程碑式代表。
图1. ILSVRC历年的Top-5错误率
在仔细分析图1中各模型结构之前我们先需要了解一下深度学习三驾马车之一————LeCun的LeNet网络结构。为何要提LeCun和LeNet,因为现在视觉上这些神器都是基于卷积神经网络(CNN)的,而LeCun是CNN的祖师爷,LeNet是LeCun打造的CNN经典之作。
LeNet以其作者名字LeCun命名,这种命名方式类似的还有AlexNet,后来又出现了以机构命名的网络结构GoogLeNet、VGG,以核心算法命名的ResNet。LeNet有时也被称作LeNet5或者LeNet-5,其中的5代表五层模型。不过别急,LeNet之前其实还有一个更古老的CNN模型。
最古老的CNN模型
1985年,Rumelhart和Hinton等人提出了后向传播(Back Propagation,BP)算法[1](也有说1986年的,指的是他们另一篇paper:Learning representations by back-propagating errors),使得神经网络的训练变得简单可行,这篇文章在Google Scholar上的引用次数达到了19000多次,目前还是比Cortes和Vapnic的Support-Vector Networks稍落后一点,不过以Deep Learning最近的发展劲头来看,超越指日可待。
几年后,LeCun利用BP算法来训练多层神经网络用于识别手写邮政编码[2],这个工作就是CNN的开山之作,如图2所示,多处用到了5*5的卷积核,但在这篇文章中LeCun只是说把5*5的相邻区域作为感受野,并未提及卷积或卷积神经网络。关于CNN最原始的雏形感兴趣的读者也可以关注一下文献[10]。
图2. 最古老的CNN网络结构图
LeNet
1998年的LeNet5[4]标注着CNN的真正面世,但是这个模型在后来的一段时间并未能火起来,主要原因是费机器(当时苦逼的没有GPU啊),而且其他的算法(SVM,老实说是你干的吧?)也能达到类似的效果甚至超过。
图3. LeNet网络结构
初学者也可以参考一下Caffe中的配置文件:
https://github.com/BVLC/caffe/blob/master/examples/mnist/lenet.prototxt
AlexNet、VGG、GoogLeNet、ResNet对比
LeNet主要是用于识别10个手写数字的,当然,只要稍加改造也能用在ImageNet数据集上,但效果较差。而本文要介绍的后续模型都是ILSVRC竞赛历年的佼佼者,这里具体比较AlexNet、VGG、GoogLeNet、ResNet四个模型。如表1所示。
模型名 | AlexNet | VGG | GoogLeNet | ResNet |
---|---|---|---|---|
初入江湖 | 2012 | 2014 | 2014 | 2015 |
层数 | 8 | 19 | 22 | 152 |
Top-5错误 | 16.4% | 7.3% | 6.7% | 3.57% |
Data Augmentation | + | + | + | + |
Inception(NIN) | – | – | + | – |
卷积层数 | 5 | 16 | 21 | 151 |
卷积核大小 | 11,5,3 | 3 | 7,1,3,5 | 7,1,3,5 |
全连接层数 | 3 | 3 | 1 | 1 |
全连接层大小 | 4096,4096,1000 | 4096,4096,1000 | 1000 | 1000 |
Dropout | + | + | + | + |
Local Response Normalization | + | – | + | – |
Batch Normalization | – | – | – | + |
AlexNet
接下里直接上图即可,AlexNet结构图如下:
图4. AlexNet网络结构
换个视角:
图5. AlexNet网络结构精简版
AlexNet相比传统的CNN(比如LeNet)有哪些重要改动呢:
(1) Data Augmentation
数据增强,这个参考李飞飞老师的cs231课程是最好了。常用的数据增强方法有:
- 水平翻转
- 随机裁剪、平移变换
- 颜色、光照变换
(2) Dropout
Dropout方法和数据增强一样,都是防止过拟合的。Dropout应该算是AlexNet中一个很大的创新,以至于Hinton在后来很长一段时间里的Talk都拿Dropout说事,后来还出来了一些变种,比如DropConnect等。
(3) ReLU激活函数
用ReLU代替了传统的Tanh或者Logistic。好处有:
- ReLU本质上是分段线性模型,前向计算非常简单,无需指数之类操作;
- ReLU的偏导也很简单,反向传播梯度,无需指数或者除法之类操作;
- ReLU不容易发生梯度发散问题,Tanh和Logistic激活函数在两端的时候导数容易趋近于零,多级连乘后梯度更加约等于0;
- ReLU关闭了右边,从而会使得很多的隐层输出为0,即网络变得稀疏,起到了类似L1的正则化作用,可以在一定程度上缓解过拟合。
当然,ReLU也是有缺点的,比如左边全部关了很容易导致某些隐藏节点永无翻身之日,所以后来又出现pReLU、random ReLU等改进,而且ReLU会很容易改变数据的分布,因此ReLU后加Batch Normalization也是常用的改进的方法。
(4) Local Response Normalization
Local Response Normalization要硬翻译的话是局部响应归一化,简称LRN,实际就是利用临近的数据做归一化。这个策略贡献了1.2%的Top-5错误率。
(5) Overlapping Pooling
Overlapping的意思是有重叠,即Pooling的步长比Pooling Kernel的对应边要小。这个策略贡献了0.3%的Top-5错误率。
(6) 多GPU并行
这个不多说,比一臂之力还大的洪荒之力。
VGG
VGG结构图
图6. VGG系列网络结构
换个视角看看VGG-19:
图7. VGG-19网络结构精简版
VGG很好地继承了AlexNet的衣钵,一个字:深,两个字:更深。
GoogLeNet
图8. GoogLeNet网络结构
GoogLeNet依然是:没有最深,只有更深。
主要的创新在于他的Inception,这是一种网中网(Network In Network)的结构,即原来的结点也是一个网络。Inception一直在不断发展,目前已经V2、V3、V4了,感兴趣的同学可以查阅相关资料。Inception的结构如图9所示,其中1*1卷积主要用来降维,用了Inception之后整个网络结构的宽度和深度都可扩大,能够带来2-3倍的性能提升。
图9. Inception结构
ResNet
网络结构如图10所示。
图10. ResNet网络结构
ResNet依然是:没有最深,只有更深(152层)。听说目前层数已突破一千。
主要的创新在残差网络,如图11所示,其实这个网络的提出本质上还是要解决层次比较深的时候无法训练的问题。这种借鉴了Highway Network思想的网络相当于旁边专门开个通道使得输入可以直达输出,而优化的目标由原来的拟合输出H(x)变成输出和输入的差H(x)-x,其中H(X)是某一层原始的的期望映射输出,x是输入。
图11. ResNet网络结构
总结
Deep Learning一路走来,大家也慢慢意识到模型本身结构是Deep Learning研究的重中之重,而本文回顾的LeNet、AlexNet、GoogLeNet、VGG、ResNet又是经典中的经典。
16年又有很多网络提出来,比较典型的有
Inception-ResNet-v2: 将深度和宽带融合到一起
为了进一步推进这个领域的进步,今天Google团队宣布发布Inception-ResNet-v2(一种卷积神经网络——CNN),它在ILSVRC图像分类基准测试中实现了当下最好的成绩。Inception-ResNet-v2是早期Inception V3模型变化而来,从微软的残差网络(ResNet)论文中得到了一些灵感。相关论文信息可以参看我们的论文Inception-v4, Inception-ResNet and the Impact of Residual Connections on Learning(Inception-v4, Inception-ResNet以及残差连接在学习上的影响):
残差连接(Residual connections )允许模型中存在shortcuts,可以让研究学者成功地训练更深的神经网络(能够获得更好的表现),这样也能明显地简化Inception块。将两种模型架构对比,见下图:
在第二幅Inception-ResNet-v2图中最上部分,你能看到整个网络扩展了。注意该网络被认为比先前的Inception V3还要深一些。在图中主要部分重复的残差区块已经被压缩了,所以整个网络看起来更加直观。另外注意到图中inception区块被简化了,比先前的Inception V3种要包含更少的并行塔 (parallel towers)。
如下方图表所示,Inception-ResNet-v2架构的精确度比之前的最优模型更高,图表中所示为基于单个图像的ILSVRC 2012图像分类标准得出的排行第一与排行第五的有效精确度。此外,该新模型仅仅要求两倍于Inception v3的容量与计算能力。
例如,尽管Inception v3与Inception-ResNet-v2都很擅长识别每一条狗所属的类别,这种新模型的性能更为显著。例如,旧模型可能会错误地将右边的图片识别为阿拉斯加雪橇犬,新模型Inception-ResNet-v2能够准确地识别两个图片中狗的类别。
阿拉斯加雪橇犬(左)和西伯利亚雪橇犬(右)。图片来源:维基百科。
为了使人们理解开始试验,我们也将要发布新型Inception-ResNet-v2预训练实例,作为TF-Slim 图像模型库的组成部分。
看到本研究领域关于这一经过改进的模型所取得的进展,而且人们开始采用这种新模型,并将其性能在多种任务作对比,我们为此感到非常兴奋。你也想要开始使用这种新模型吗?让我们一起来看看附带的操作指示,学会如何训练,评估或微调一个网络。
Inception-ResNet-v2具体代码实现过程参见:
https://github.com/tensorflow/models/blob/master/slim/nets/inception_resnet_v2.py
随着2012年AlexNet的一举成名,CNN成了计算机视觉应用中的不二选择。目前,CNN又有了很多其他花样,比如R-CNN系列,
FractalNet
ResNet
-
【题目】分形网络:无残差的极深神经网络(FractalNet:Ultra-Deep Neural Networks without Residuals)
-
【作者】芝加哥大学
GustavLarsson,丰田工大学芝加哥分校 Michael Maire及 Gregory Shakhnarovich
摘要
我们为神经网络的宏观架构引进了一种基于自相似的设计策略。单一扩展规则的重复应用生成一个极深的网络,其结构布局正是一个截断的分形。这样的网络包含长度不同的相互作用子路径,但不包含任何直通式连接(pass-through connections):每个内部信号在被下一层看见之前,都被一个过滤器和非线性部件变换过了。这个性质与当前显式规划极深网络的结构使得训练成为一个残差学习问题的方法形成鲜明对比。我们的实验表明,残差表示不是极深卷积神经网络成功的基本要素。分形设计在 CIFAR-100 数据集(https://www.cs.toronto.edu/~kriz/cifar.html) 上达到 22.85% 的错误率,与残差网络的最佳水平持平。
除了高性能之外,分形网络还展现了有趣的性质。它们可被认为是各种深度的子网络的隐式联合且计算效率高。我们探讨了对于训练的影响,简单提及了与“师徒”行为的联系,最重要的,展示了提取高性能固定深度子网络的能力。为了实现后一个任务,我们发展路径舍弃方法(drop-path;对 dropout 的自然扩展)正则化分形架构里子路径的协同适应。通过这样的正则化,分形网络展示了一种无例外的性质:浅层子网络给出快捷的答案,而深度子网络(有较多延迟)给出更精准的答案。
1. 引言
最近的 ResNet 在深度和精度上比卷积神经网络(CNN)做出了极大进步,方法是让网络对残差进行学习。ResNet 的变型以及类似的架构通过直接通道(pass-through channel;相当于恒等函数的网络)使用了共同的初始化和锚定技术。这样,训练有两个方面不同。第一,目标变成对残差输出的学习而不是对未被提及的绝对映射学习。第二,这些网络展示了一种深度监督,因为接近恒等的层有效减少了损失距离。何恺明等人 推测前者(即残差的构造)是关键的。
答案并非如此。我们通过构造不依赖于残差的极深架构揭示了这一点。我们的设计原则非常单纯,用“分形”一个词以及一幅图(图 1)就足以描述。可是,分形网络隐含地重现了过去的成功架构里硬性加入的许多性质。深度监督不仅自然出现,并且驱动了一种网络内部的“师徒学习”(student-teacher learning)。其他设计的模块化构成单元几乎都是分形网络嵌套子结构的特殊情形。
对于分形网络,训练的简单性与设计的简单性相对应。单个连接到最后一层的损失函数足以驱动内部行为去模仿深度监督。参数是随机初始化的。由于包含不同深度的子网络,分形网络对总体深度的选取不敏感;让深度足够,然后训练会刻划出有用的子网络集合。
图 1:分形架构。左:简单的扩展规则生成分形架构。基础情形
分形设计导致的一系列涌现行为可能会让近期为了达到类似效果发展出的工程技巧变得不那么必要。这些技巧包括,恒等初始化的残差函数形式,手动深度监督,手工雕琢的架构模块,以及师徒训练体系。第 2 节回顾了这些相互关联的技术。混合设计当然可以把它们中任何一个与分形架构集成;关于这种混合体在多大程度上是多余或是互相促进这个问题,我们持开放态度。
我们的主要贡献有以下两点:
-
引入了
FractalNet,第一个在极深卷积神经网络领域对于ResNet 的替代品。FractalNet 在科学上令人吃惊,它表明了残差学习对于极深网络不是必需的。 -
通过分析和实验,我们阐释了FractalNet 与一系列被加入到之前深度网络设计的那些现象之间的联系。
还有一个贡献,我们为极深网络开发了一种称为路径舍弃的新的正则化规则。已有的关于深度残差网络的工作其实缺乏有效正则化技术的展示,而仅仅依赖于数据增强。无需数据增强,通过 dropout 和路径舍弃训练的分形网络远远超过了报道的残差网络的性能。
路径舍弃不仅是一种直观的正则化策略,而且提供了保证训练出的分形网络拥有无例外性质的方法。具体来说,训练期间对路径舍弃的特定安排阻止了不同深度的子网络的协同适应。结果就是,浅和深的网络必需各自能输出正确结果。测试期间,对浅子网络的请求在整个网络完成之前给出快速而精度普通的答案。
第 3 节给出了分形网络和路径舍弃的细节。第 4 节提供了基于 CIFAR-10, CIFAR-100 以及 SVHN 数据集与残差网络的比较。我们还评估了正则化和数据增强策略,探究了训练期间的子网络师徒行为,评价了通过路径舍弃得到的 anytime 网络。第 5 节提供了综合。通过容纳许多已知但看起来不同的设计原理,自相似结构也许会变成神经网络架构的基本组件。
2. 相关研究(略)
3. 分形网络