首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

人工智能–DenseNet模型

人工智能之DenseNet模型

前言:人工智能机器学习有关算法内容,请参见公众号“科技优化生活”之前相关文章。人工智能之机器学习主要有三大类:1)分类;2)回归;3)聚类。深度神经网络是不是越深越好?理想情况下,只要不过拟合,应该是越深越好。但是实际情况是网络加深,准确度却下降,针对这个问题,除了ResNet模型外,也有人提出了DenseNet模型来解决,今天我们重点探讨一下DenseNet模型^_^。

通过上一篇ResNet模型介绍, 我们知道传统的“提拉米苏”式卷积网络随着层数的加深,容易因梯度消失而造成训练集准确率下降现象。于是有牛人提出ResNet模型,它采用了Skip Connection, 梯度能畅通无阻地通过各个Res blocks,可以提高卷积网络深度,从而提高了卷积网络模型的准确率。

针对层数加深而引起的梯度弥散或消失问题,除了提出了ResNet模型外,又有牛人提出了DenseNet模型

DenseNet模型更为极端,它的Skip Connection不仅仅只连接上下层,直接实现了跨层连接,每一层获得的梯度都是来自前面几层的梯度加成。

DenseNet模型概念:

受 Highway、ResNet 等算法思路的启发,有人提出了DenseNet模型,即提出了一种跨层的连接网络。DenseNet设计比较大胆,每个层的input 包括之前所有层的信息,通过将前面N多个层的 Feature 组合起来,形成对特征更丰富的描述和判别。从思想上来讲,是比较容易接受的。

DenseNet模型改变了传统网络反向传递时,梯度传播方式,由线性变成树状反向,这样的好处就在于减少了梯度消失的可能,并且加速训练,有利于更深层网络的训练。稠密的网络结构有类似正则功能,在小数据集合上能更好地避免过拟合

DenseNet模型属于对ResNe模型扩展的一系列工作中比较有代表性的一个。

DenseNet模型结构:

一个词概括网络的结构特点就是Dense,一句话概括的话:

Foreach layer, the feature maps of all preceding layers are treated asseparate inputs whereas its own feature maps are passed on as inputs to allsubsequent layers.

DenseNet整个模型结构采用了模块化设计,其典型网络模块结构包含稠密块(Dense Block)和过渡层(transition layers),可以简单来可以看作是Dense Block-transition layers-Dense Block-transition layers…,如下图所示:

DenseNet在增加深度的同时,加宽每一个DenseBlock的网络宽度,能够增加网络识别特征的能力,而且由于DenseBlock的横向结构类似 Inception block的结构,使得需要计算的参数量大大降低。

下面来看看Dense Block内部结构,如下图所示。以5层Dense Block为例,层宽度(Growth rate)为k=4的Dense Block,层与层之间的激励函数(即Hl(⋅)Hl(⋅))为BN-ReLU-Conv(3x3)的结构。这个Growth rate实际上就是每一层特征图的数量,这样第l层就有k0+k×(l−1)k0+k×(l−1)个特征图。

简单地讲,就是每一层的输入来自前面所有层的输出。如下图:x0是input,H1的输入是x0(input),H2的输入是x0和x1(x1是H1的输出)……

为了进一步减少参数量,作了以下改进

1)将Hl(⋅)Hl(⋅)该为BN-ReLU-Conv(1x1)-BN-ReLU-Conv(3x3)的结构,记为DenseNet-B

2)为了进一步减少参数量,在DenseNet-B的基础上,对过渡层的特征图进行压缩,产生[θm][θm]个特征图,其中0

DenseNet模型本质:

DenseNet模型本质或核心思想是HighWay Nets的思想:就是skip connection,对于某些的输入不加选择的让其进入之后的layer(skip),从而实现信息流的整合,避免了信息在层间传递的丢失和梯度消失的问题,还抑制了某些噪声的产生。

DenseNet则是让l层的输入直接影响到之后的所有层,它的输出为:xl=Hl([X0,X1,…,xl−1])。并且由于每一层都包含之前所有层的输出信息,因此其只需要很少的特征图就够了,这也是为什么DneseNet的参数量较其他模型大大减少的原因。

DenseNet模型优点:

1)减轻了vanishing-gradient(梯度消失);

2)加强了feature的传递;

3)更有效地利用了feature,支持feature重用;

4)一定程度上较少了参数数量。

DenseNet模型缺点:

1)训练时十分消耗内存,要消耗相当于 L(L+1)/2 层网络的内存;

2) 计算复杂度较大,比较耗显存和时间;

3) 当前深度学习框架对 DenseNe t的密集连接没有很好的支持,只能借助于反复的拼接(Concatenation)操作;

4) 对于大多数深度学习框架(如Torch和TensorFlow),每次拼接操作都会开辟新的内存来保存拼接后的特征。

DenseNet和ResNet比较:

1)DenseNet采用Concat层整合不同来源的特征,而ResNet则采用Eltwise层的加法操作。

2)DenseNet主要优势都是由Concat层带来的:

a)Concat层只是特征拼接,不对特征做任何改变。因此,只需相邻层的一个短接,后续所有层都可以拥有到该层的通路。 这些通路意味着更佳的信息前传与梯度反传。

b)Concat层会使得feature map 变厚,因此即使使用更少的卷积参数,feature map也不会因过小而产生信息瓶颈。这也是DenseNet一定程度上参数更少的原因。

3)DenseNet采用transition层(BN+1x1卷积+2x2AvePooling)来实现下采样,而ResNet则多采用MaxPooling以及卷积的stride。

4)DenseNet由于在一个模块中要使用Concat,因此feature map的大小必须保持不变。 而ResNet则会某种情况下存在采样的特殊情况。

DenseNet模型性能:

在四个极具竞争力的物体识别标准图像库(CIFAR-10,CIFAR-100, SVHN, and ImageNet)对DenseNet模型进行测试。结果表面在大多数的测试图像库中,DenseNet模型网络比同等深度的其他网络表现出了更好的性能和效果,然而它只需要很少的计算两来达到很高的性能。如下表所示:

DenseNet模型和ResNet模型在参数和浮点运算量对比结果,如下图所示:

由于每个Layer的输入会比较多,因此可以减少每一层的 Channel 数量,Feature 利用率比较高,整体算下来,同样的连接数量,DenseNet会比 ResNet 的 Feature 更少,通过实验对比,DenseNet用一半的计算量达到了ResNet的效果。

DenseNet在 ResNet 基础上,提出了更优秀的 shortcut 方式。Dense Connection不仅能使得feature 更加robust,还能带来更快的收敛速度。显存和计算量上稍显不足,需要业界进一步的优化才能广泛应用。

结语:

除了ResNet模型解决因层数加深而引起的梯度弥散或消失问题外,还有DenseNet模型。DenseNet模型设计比较大胆,每个层的input 包括之前所有层的信息,通过将前面N多个层的 Feature 组合起来,形成对特征更丰富的描述和判别。其核心思想是HighWay Nets的思想:就是skip connection,对于某些的输入不加选择的让其进入之后的layer(skip),从而实现信息流的整合,避免了信息在层间传递的丢失和梯度消失的问题,还抑制了某些噪声的产生。通过实验对比,DenseNet用一半的计算量达到了ResNet的效果。目前DenseNet在显存和计算量上稍显不足,需要业界进一步的优化才能广泛应用。

------以往文章推荐-----

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180603G1F0OT00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券