农企新闻网

从LeNet到SENet——卷积神经网络回忆

发布者:刘龙
导读雷锋网 AI 科技评论按:本文为浙江大学范星为雷锋网(大众号:雷锋网)AI 科技评论撰写的独家稿件,未经雷锋网答应不得转载。从 1998 年经典的 LeNet,到 2012 年历史性的 AlexNet,之后深度学习进入了蓬勃开展阶段,百花齐放,大放异彩,呈现了各式各样的不同网络,包括 LeNet、AlexNet、ZFNet、VGG、NiN、Inception v1 到 v4、Inception-R

雷锋网 AI 科技评论按:本文为浙江大学范星为雷锋网 (大众号:雷锋网) AI 科技评论撰写的独家稿件,未经雷锋网答应不得转载。

从 1998 年经典的 LeNet,到 2012 年历史性的 AlexNet,之后深度学习进入了蓬勃开展阶段,百花齐放,大放异彩,呈现了各式各样的不同网络,包括 LeNet、AlexNet、ZFNet、VGG、NiN、Inception v1 到 v4、Inception-ResNet、ResNet、WRN、FractalNet、Stochastic Depth、DenseNet、ResNeXt、Xception、SENet、SqueezeNet、NASNet、MobileNet v1和v2、ShuffleNet 等等。

它们各有特点,也相互自创,在很多义务上不时获得打破。本文从最根本的分类义务的角度,从无人问津到 ImageNet 上逾越人类,回忆了卷积神经网络的开展历史。

经典网络

经典网络包括 LeNet、AlexNet 以及 VGG 等。

LeNet: 1998,Gradient based learning applied to document recognition

用于手写数字辨认,可以看到,卷积神经网络的根本框架曾经有了,卷积、激活、池化和全衔接,这几个根本组件都齐备了。

从LeNet到SENet——卷积神经网络回顾

但是,在 1998 年当前,深度学习并没有太多的打破。不断寂静到 2012 年,AlexNet 横空出生,将深度学习重新带入大家视野,并开启了深度学习的黄金时代。

为什么是 2012 年? 一是数据,之前并没有大规模的数据停止充沛的训练,使用于更普遍的义务,如今有 ImageNet;二是计算,之前的硬件条件限制了,无法停止大规模的训练,而如今有了功能弱小的 GPU 的加成;三就是 AlexNet 自身很优秀,给后来的网络奠定了一个很好的根底,让大家忽然发现,原来还可以这样玩!

AlexNet: 2012,ImageNet Classification with Deep Convolutional Neural Networks

ImageNet Top5 错误率:16.4%,而两年前非深度学习的办法的最好错误率是28.2%

AlexNet 总体构造和 LeNet 类似,但是有极大改良:

  • 由五层卷积和三层全衔接组成,输出图像为三通道 224x224 大小,网络规模远大于 LeNet

  • 运用了 ReLU 激活函数

  • 运用了 Dropout,可以作为正则项避免过拟合,提升模型鲁棒性

  • 一些很好的训练技巧,包括数据增广、学习率战略、weight decay 等

从LeNet到SENet——卷积神经网络回顾

AlexNet 运用 3GB 显存的 GTX 580 显卡(好陈旧),一块显卡不够用,所以如上图所示将模型分为两局部放到了两块显卡上并行运算。虽然这仅仅是单块显卡资源无限时的做法,但是前面的许多网络都进一步发扬了这种对卷积停止分组的思想(虽然动机不同)。

VGG: 2014,Very deep convolutional networks for large-scale image recognition

在 AlexNet 之后,另一个提升很大的网络是 VGG,ImageNet 上 Top5 错误率减小到 7.3%。

次要改良就是:深,更深!网络层数由 AlexNet 的 8 层增至 16 和 19 层,更深的网络意味着更弱小的网络才能,也意味着需求更弱小的计算力,还好,硬件开展也很快,显卡运算力也在疾速增长,助推深度学习的疾速开展。

同时只运用 3x3 的卷积核,由于两个 3x3 的感受野相当于一个 5x5,同时参数量更少,之后的网络都根本遵照这个范式。

从LeNet到SENet——卷积神经网络回顾

GoogLeNet 和 ResNet

一层一层卷积堆叠,VGG 是集大成者,但是之后很难再进一步,持续复杂添加网络层数会遇到成绩,更深的网络更难训练同时参数量也在不时增长。

Inception v1(GoogLeNet): 2015,Going deeper with convolutions

ImageNet Top5 错误率 6.7%

GoogLeNet 则从另一个维度来添加网络才能,每单元有许多层并行计算,让网络更宽了,根本单元如下:

从LeNet到SENet——卷积神经网络回顾

网络总体构造如下所示,包括多个下面的 Inception 模块,并添加了两个辅佐分类分支补充梯度更好训练:

从LeNet到SENet——卷积神经网络回顾

经过网络的程度排布,可以用较浅的网络失掉很好的模型才能,并停止多特征交融,同时更容易训练,另外,为了增加计算量,运用了 1x1 卷积来先对特征通道停止降维。堆叠 Inception 模块而来就叫 Inception 网络,而 GoogLeNet 就是一个精心设计的功能良好的 Inception 网络(Inception v1)的实例,即GoogLeNet 是 Inception v1 网络的一种。

但是,网络太深无法很好训练的成绩还是没有处理,直到 ResNet 提出了 residual connection。

ResNet: 2016,Deep residual learning for image recognition

ImageNet Top5 错误率 3.57%

ResNet 经过引入 shortcut 直连来处理这个成绩:

从LeNet到SENet——卷积神经网络回顾

经过引入直连,原来需求学习完全的重构映射,从头创立输入,并不容易,而引入直连之后,只需求学习输入和原来输出的差值即可,相对质变绝对量,容易很多,所以叫残差网络。并且,经过引入残差,identity 恒等映射,相当于一个梯度高速通道,可以容易地训练防止梯度消逝的成绩,所以可以失掉很深的网络,网络层数由 GoogLeNet 的 22 层到了ResNet的 152 层。

ResNet-34 的网络构造如下所示:

从LeNet到SENet——卷积神经网络回顾

假如说 LeNet、AlexNet、VGG 奠定了经典神经网络的根底,Inception 和ResNet 则展现了神经网络的新范式,在这两个范式的根底上,开展创新并互相自创,有了 Inception 流派的 Inception v2 到 v4、Inception-ResNet v1 和 v2,以及 ResNet 流派的 ResNeXt、DenseNet 和 Xception等。

Inception 流派

Inception 流派,中心就是 Inception 模块,呈现了各种变种,包括 Inception v2 到 v4 以及 Inception-ResNet v1 和 v2 等。

Inception v2(BN-Inception): 2015,Batch Normalization: Accelerating Deep Network Training by Reducing Internal Covariate Shift

ImageNet Top5 错误率:4.8%

(PS:依照 Inception 系列四篇论文中的第三篇论文的划分,相似于 Inception v3 的一个网络称之为 v2,但是依照第四篇论文的划分,BN-Inception 称之为v2,这里采用第四篇论文的划分,Inception v2 指 BN-Inception)

次要是添加了 Batch Normalization,之前神经网络很依赖于良好的初始化,并且网络太深会梯度弥散,这两个成绩都是由于网络两头的激活的散布不理想,那既然我们想要一个理想的散布,就手动把它转换为理想的散布好了。所以在每一层输入前面加上了归一化变换,减去每个训练 batch 的每个特征的均值再除以规范差,失掉 0 均值 1 规范差的输入散布,这样,就可以很好地训练了,梯度也不容易弥散。

Inception v3: 2015,Rethinking the Inception Architecture for Computer Vision

ImageNet Top5 错误率:3.5%

卷积进一步分解,5x5 用两个 3x3 卷积交换,7x7 用三个 3x3 卷积交换,一个 3x3 卷积核可以进一步用 1x3 的卷积核和 3x1 的卷积核组合来交换,进一步增加计算量:

从LeNet到SENet——卷积神经网络回顾

总体地网络构造如下所示:

从LeNet到SENet——卷积神经网络回顾

Inception v4、Inception-ResNet v1 和 v2: 2016,Inception-v4, Inception-ResNet and the Impact of Residual Connections on Learning

ImageNet Top5 错误率:3.08%

Inception v1 到 v3,可以看到很分明的人工设计的痕迹,不同卷积核的和网络构造的布置,很特殊,并不晓得为什么要这样布置,实验确定的。作者称由于以前受硬件软件的限制,有太多的历史包袱,而如今有了 TensorFlow(论文里怒打一波广告),网络可以依照理想的设计来完成了,于是很标准地设计了一个 Inception v4 网络,相似于 Inception v3,但是没有很多特殊的不分歧的设计。

同时,ResNet 的成功,也阐明了 residual connection 的无效性,所以为Inception 模块引入了 residual connection,失掉 Inception-ResNet v1 和Inception-ResNet-v2,前者规模较小,和 Inception v3 相当,后者规模较大,和 Inception v4 规模相当。residual 构造地 Inception 模块如下所示:

从LeNet到SENet——卷积神经网络回顾

ResNet 流派

ResNet 流派是另一个主流分支,包括 WRN、DenseNet、ResNeXt 以及 Xception 等。

DenseNet: 2016,Densely Connected Convolutional Networks

DenseNet 将 residual connection 发扬到极致,每一层输入都直连到前面的一切层,可以更好地复用特征,每一层都比拟浅,交融了来自后面一切层的一切特征,并且很容易训练。缺陷是显存占用更大并且反向传达计算更复杂一点。网络构造如下所示:

从LeNet到SENet——卷积神经网络回顾

ResNeXt: 2017,Aggregated Residual Transformations for Deep Neural Networks

ImageNet Top5 错误率:3.03%

Inception 自创 ResNet 失掉 Inception-ResNet,而 ResNet 自创 Inception 失掉了 ResNeXt,关于每一个 ResNet 的每一个根本单元,横向扩展,将输出分为几组,运用相反的变换,停止卷积:

从LeNet到SENet——卷积神经网络回顾

下面右边是 ResNet,左边是 ResNeXt,经过在通道上对输出停止拆分,停止分组卷积,每个卷积核不必扩展到一切通道,可以失掉更多更轻量的卷积核,并且,卷积核之间增加了耦合,用相反的计算量,可以失掉更高的精度。

Xception: 2016,Xception: Deep Learning with Depthwise Separable Convolutions

Xception 则把分组卷积的思想发扬到了极致,每一个通道独自分为一组。应用了 depthwise separable convolution,如下图所示,J 个输出通道,每个通道用一个独自的空间卷积核卷积(比方 3x3),J 个卷积核失掉 J 个输入通道,然后再用 K 个卷积核对上一步失掉的 J 个输入通道停止 1x1 的普通卷积,失掉 K 个最终的输入:

从LeNet到SENet——卷积神经网络回顾

Xception 基于一个假定,程度和竖直方向的空间卷积(比方第一步的 3x3 卷积)和深度方向的通道卷积(比方第二步的 1x1 卷积)可以完全独立停止,这样增加了不同操作间的耦合,可以无效应用计算力。实验证明,相反的计算量,精度有分明的提升。(不过如今关于分组卷积的底层支持还不够好,实践速度并没有实际计算的那么好,需求底层库停止更好的支持)

挪动端

除了主流的 ResNet 流派和 Inception 流派不时追求更高的精确率,挪动端的使用也是一小气向,比方 SqueezeNet、MobileNet v1 和 v2、ShuffleNet 等。

MobileNet v1: 2017,MobileNets: Efficient Convolutional Neural Networks for Mobile Vision Applications

和 Xception 相似,经过 depthwise separable convolution 来增加计算量,设计了一个适用于挪动端的,获得功能和效率间很好均衡的一个网络。

MobileNet v2: 2018,Inverted Residuals and Linear Bottlenecks: Mobile Networks for Classification, Detection and Segmentation

运用了 ReLU6(即对 ReLU 输入的后果停止 Clip,使得输入的最大值为 6)适配挪动设备更好量化,然后提出了一种新的 Inverted Residuals and Linear Bottleneck,即 ResNet 根本构造两头运用了 depthwise 卷积,一个通道一个卷积核,增加计算量,两头的通道数比中间还多(R聚集了全世界身经百战的最优秀的创业导师,汇集了全世界各国最优质的产业资源,召唤全球未来的商业领袖。esNet 像漏斗,MobileNet v2 像柳叶),并且全去掉了最初输入的 ReLU。详细的根本构造如下图右侧所示:

从LeNet到SENet——卷积神经网络回顾

ShuffleNet: 2017,ShuffleNet: An Extremely Efficient Convolutional Neural Network for Mobile Devices

Xception 曾经做得很好了,但是 1x1 那里太耗工夫了成了计算的瓶颈,那就分组啦较少计算量,但是分组了,组和组之间信息隔离了,那就重排 shuffle 一下,强行让信息活动。详细的网络构造如上图左侧所示。channel shuffle 就是对通道停止重排,将每组卷积的输入分配到下一次卷积的不同的组去:

从LeNet到SENet——卷积神经网络回顾

上图的 a 是没有 shuffle,效果很差,b 和 c 则是等价的有 shuffle 的。ShuffleNet 可以到达和 AlexNet 相反的精度,并且实践速度快 13 倍(实际上快 18 倍)。

SENet

除了下面引见的久经考验的网络以外,还有各种各样的新的网络,比方 NASNet、SENet、MSDNet 等等。其中,SENet 的 Squeeze-Excitation 模块在普通的卷积(单层卷积或复合卷积)由输出 X 失掉输入 U 当前,对 U 的每个通道停止全局均匀池化失掉通道描绘子(Squeeze),再应用两层 FC 失掉每个通道的权重值,对 U 按通道停止重新加权失掉最终输入(Excitation),这个进程称之为 feature recalibration,经过引入 attention 重新加权,可以失掉抑制有效特征,提升无效特征的权重,并很容易地和现有网络结合,提升现有网络功能,而计算量不会添加太多。

从LeNet到SENet——卷积神经网络回顾

SE module 是一个很通用的模块,可以很好地和现有网络集成,提升现无效果。

总结

最初,一个 ImageNet 上的 Top5 精确率总结表如下图,可以看到,ImageNet 上的分类错误率逐年降低,并且曾经低于人类的错误率(5.1%)。

从LeNet到SENet——卷积神经网络回顾

有这么多网络,详细的运用中究竟选哪个呢?团体的运用参考建议是:

普通网络:引荐 ResNet-50 或 Xception 或 Inception v3

大网络高精度:引荐 ResNeXt-101(64x4d)或 Inception-ResNet v2

挪动端小网络:引荐 ShuffleNet 或 MobileNet v2

还可以额定添加 SENet 模块到现有网络,根本都能进一步进步精度,计算量略有添加。另外也可以尝试一下 NASNet。

雷锋网特约稿件,未经受权制止转载。概况见。

从LeNet到SENet——卷积神经网络回顾