您的位置:首页 > 理论基础 > 计算机网络

<模型汇总_1>牛逼的深度卷积神经网络CNN

2017-04-26 11:10 645 查看
最近在整理深度学习中用到的算法、常见的模型和优化技巧,于是,决定整理成一个深度学习模型和一个深度学习优化算法单元,大家一起学习,有什么问题可以在微信群里讨论,同时也热烈欢迎大家加入微信群“深度学习与NLP”,入群方式可以看公众号右下角。下面给出模型单元的目录:

1、CNN:Convolutional
Neural Network

2、GAN:Generative
Adversarial Learning,sequence
GAN

3、Dual Learning

4、Binarized
neural network

5、DBN:Deep
Belief Network

6、MultiTask
Learning

7、Transfer
Learning

8、Human/machine
collaborative Learning

9、SAE:Stacked
Auto Encoder

10、DRL:Deep
reinforcement learning

11、Learning
to Learning

12、Unsupervised
& weakly supervised Learning

13、RNN:Recurrent
Neural Network

LSTM:Long
short term memory

GRU:Gated
recurrent unit

Seq2Seq:

Attention:

14、Network
morphism

15、One-shot
Learning

今天带来第一期,我们就来谈谈牛逼的深度卷积神经网络CNN:

CNN:Convolutional
Neural Network

VGGNet,LeNet,Google
Net,Residual Net

从神经学角度来说,卷积神经网络的设计灵感来源于人脑视觉皮层对外界事物的感知,人眼以图像的形式把感知到的外界事物传递给大脑,大脑通过逐层的对该图像进行抽象,抽取出图像的边角等代表图像的高纬特征给大脑做出准确的判断。回顾历史,1984年,日本学者福岛邦彦提出了卷积神经网络的原始模型神经感知机(Neocognitron),1998年,Yan.
LeCun提出了深度学习常用模型之一卷积神经网络(Convoluted
Neural Network, CNN),成就了现在基于CNN的图像、语音、计算及视觉和NLP技术的快速发展。

CNN的精华是:三概念两核心,这里做个简要的概要性介绍。

两核心是指CNN的两个核心操作:卷积和池化。

卷积:主要起到作用是抽取特征,使网络具有一定转移不变性,也有一定降维的作用。概述:设定一个n行m列的卷积窗口,采用的relu(elu,leakyrelu)做为激活函数函数,对输入X进行卷积操作。注意:1、卷积可能单通道或者多通道卷积;2、卷积操作时分为padding和非padding两种方式,padding也分为很多方式,比如zero-padding,mean-padding等。3、对同一个输入可以设置不同大小卷积和,或从不同的位置,或不同的卷积步长多次进行卷积,目的就是为了尽可能多的抽取特征。

池化:主要起降维的作用。概述:设置一个n行m列的池化窗口,对输入X进行池化操作,采用relu(elu,leakyrelu)做为激活函数。也可采用sigmoid或tans型激活函数,但注意函数的饱和死区特性导致的反向传播时的梯度消失问题,可以配合Batch
Normalization使用。池化也有很多方式,比如最大值池化、平均值池化。

三概念指的是CNN的三个重要概念:局部感受野、权值共享和下采样/降采样。

局部感受野:卷积操作时卷积窗口与输入X重合的部分。

权值共享:卷积操作或池化操作时,卷积窗口或池化窗口的权值不发生变化。

下采样/降采样:直观感觉就是池化操作。

可见,卷积和池化的随机组合赋予了CNN很大的灵活性,因此也诞生了很多耳熟能详的经典网络:AlexNet,VGGNet,Google
Inception Net,ResNet,四种网络在深度和复杂度方面一次递增。AlexNet获得了ILSVRC(ImageNet Large Scale Visual Recognition Challenge)比赛2012年冠军(8层神经网络,top-5错误率16%,使用更多额外数据可达到15.3%),VGGNet获得2014年ILSVRC的亚军(19层神经网络,top-5错误率7.3%),Google Inception Net获得2014年ILSVRC冠军(22层神经网络,top-5错误率6.7%),ResNet获得2015年冠军(top-5错误率3.57%,152层神经网络)。下面概要介绍下这几种网络。

AlexNet

AlexNet是由Hinton的学生Alex Krizhevsky在2012年提出的深度卷积网络,可以看做是Lenet加深加宽版本。AlexNet中采用了一系列的新的技术点:成功应用了Relu、Dropout和LRN等trick,首次采用GPU进行加速,作者还开源了他们在GPU上训练网络的源代码。AlexNet整个网络包含6亿3000万个连接,6千万个参数,65万个神经元,包含5个卷积层,其中三个后面连接了最大池化层,最后还用了3个全连接层。2012年ALexNet以显著的优势赢得了2012年ILSVRC比赛冠军,top-5错误率降低至16.4%,比第二名26.2%成绩有了巨大的提升。AlexNet推动了神经网络的再次崛起,确立了深度学习在计算及视觉的统治地位,同样也促进了深度学习在语音识别,自然语言处理等领域的拓展应用。

ALexNet的网络结构如下图:



每层的超参数及参数数量:



AlexNet网络的更多的细节可以阅读论文:

ImageNet
Classification with Deep Convolutional Neural
Networks,Alex
Krizhevsky

VGGNet

VGGNet是牛津大学计算机视觉研究组(Visual
Geometry Group)和Google DeepMind公司的研究员们一起研发的深度卷积神经网络。VGGNet探索了卷积神经网络的深度与其性能之间的关系,通过反复的堆叠3×3的小型卷积核和2×2的最大池化层,构建了16~19层深度的卷积神经网络,整个网络结构简洁,都使用同样大小的卷积核尺寸(3×3)和最大池化尺寸(2×2)。VGGNet的扩展性很强,迁移到其他图片数据上的泛化性很好,因此,截止到目前为止,也常被用来抽取图像的特征。VGGNet训练后的模型参数在其官方网站开源了,可以用来做为其他类似图像分类任务的初始化参数,被广泛用于其他很多地方。

 


从以上两张表可以发现,网络层数从11层增加到19层,网络的参数量并没有增长很多,随着网络深度的增加,网络的计算量并没有明显增加,主要的参数来源于最后三个全连接层。C相比B多了几个1×1的卷积层,它的目的主要适用于线性变换,输入输出的通道数不变,并没有发生降维。

VGGNet网络的更多的细节可以阅读论文:

VERY DEEP CONVOLUTIONAL NETWORKS FOR
LARGE-SCALE IMAGE RECOGNITION

Google Inception Net

Google Inception Net 首次出现在ILSVRC
2014比赛就以较大的优势获得了第一名,那届比赛中的Inception Net通常被称为Inception
V1,它最大的特点就是控制计算量和参数量的同时,获得了非常好的分类性能-top-5错误率6.67%。Inception
V1降低参数量的目的有两点:一是,参数越多模型越庞大,需要提供更多的数据量进行参数训练;二是,参数越多,耗费更多的计算资源。Inception
V1参数量更少但效果比AlexNet,VGGNet更好的原因除了层数更深,表达能力更强以外,还有两点:一是,去除了最后全连接层,采用全局平均池化层(就是用1×1来代替图片尺寸变换)。在AlexNet和VGGNet中最后的全连接层参数几乎占到了网络全部参数的90%,这很容易引起过拟合,Inception
V1在去除全连接层之后模型训练更快且减轻了过拟合。使用全局平均池化层来代替全连接层的做法借鉴了Network
in NetWork的做法。二是,Inception V1精心设计了Inception
Module提高参数利用率,结构如下图所示:



整个Inception V1的网络结构如下图所示:



随后基于Inception V1之后,陆续又有Inception
V2、V3、V4发布,更多细节可以阅读论文:

Inception V1:Going
deeper with convolutions

Inceptionv2:Batch
Normalization Accelerating Deep Network Training

Inceptionv3:Rethinking
the Inception Architecture for Computer Vision

Inception-v4:Inception-ResNet
and the Impact of Residual Connections on Learning

 

ResNet

ResNet(Residual
Neural Network)是由微软研究院的Kaiming He等四人提出来的,通过使用Residual
Unit成功训练了152层的神经网络,在ILSVRC
2015比赛中以top-5错误率3.57%的成绩获得第一名,该网络称为ResNet
V1。ResNet的原理同瑞士Schmiduber教授提出的HighWay
Network很相似,Schmiduber教授也是神经网络的元老人物,他是LSTM的发明者。ResNet与Highway
Network一样,允许原始输入信息直接传递到后面的层中,构成一个残差单元(Residual Unit),结构如下图所示,这样做相当于改变了学习目标,学习的不再是一个完整的输出H(x),二是输出与输入的差H(x)-
x,即残差。


 

与普通的CNN相比,ResNet最大的不同在于ResNet有很多的旁路直线将输入直接连到网络后面的层中,是网络后面的层也可以直接学习残差,这种网络结构成为shortcut或skip
connection。这样做解决了传统CNN在信息传递时,或多或少会丢失原始信息的问题,保护数据的完整性,整个网络只需要学习输入、输出差别的一部分,简化了学习的难度和目标。

ResNet V1网络结构如下图所示:


 

更多细节内容可以阅读论文:

ResNetV1_Deep residual learning for image recognition

Highway Networks

ResNetV2_Identity Mappings in Deep Residual Networks

 更多深度学习在NLP方面应用的经典论文、实践经验和最新消息,欢迎关注微信公众号“深度学习与NLP”或“DeepLearning_NLP”或扫描二维码添加关注。

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息