文档章节

卷积神经网络学习路线(十二)| 继往开来的DenseNet

BBuf
 BBuf
发布于 01/10 00:00
字数 1904
阅读 28
收藏 0

「深度学习福利」大神带你进阶工程师,立即查看>>>

前言

这是卷积的第十二篇文章,主要为大家介绍一下DenseNet,值得一提的是DenseNet的作者也是上一篇卷积神经网络学习路线(十一)| Stochastic Depth(随机深度网络)论文的作者,即清华的黄高。相比于里程碑式创新的ResNet来讲,DenseNet的作用或许用继往开来来形容是最合适不过了。论文原文地址见附录。

介绍

论文先讲到了先前的网络因为使用了shortcut连接,网络已经变得越来越深了。接着引入了论文要介绍的DenseNet,正是利用了shortcut连接的思想,每一层都将前面所有层的特征图作为输入,最后使用concatenate来聚合信息。实验显示,DenseNet减轻了梯度消失问题,增大了特征重用,大大减少了参数量。Figure 1DenseNet的一个组件(dense block),整个网络是由多个这种组件堆叠出来的。可以看到DenseNet使用了concatenate来聚合不同的特征图,类似于ResNet残差的思想,提高了网络的信息和梯度流动,使得网络更加容易训练。

Figure 2展示了使用3个dense block搭建出来的DenseNet网络:

在这里插入图片描述

相关工作

  • 通过级联来加深网络。

    • 80年代的级联结构和DenseNet结构有点相似,但那时的主要目的是为了逐层训练多层感知机。
    • 最近,提出使用batch梯度下降训练全连接级联网络。虽然在小数据集上有效,但这个方法最多只适合有几百个参数的网络。
    • 何凯明等人提出的ResNet。
  • 通过shortcut连接加深网络。

    • Highway网络是第一个将网络深度做到100+的,使用了gating mapping。
    • ResNet在Highway的基础上,将gating mapping换成了identity mapping。
    • Stochastic depth ResNet通过随机dropout掉一些identity mapping来强制学习,这表明,ResNet中有很多冗余层,DenseNet就是受到这个启发来做的。
  • 通过加宽网络来使网络更深。

    • GoogleNet使用Inception模块加深了网络
    • WRN加宽了ResNet
    • FractalNet 也加宽了网络
  • 提高特征重用。

    • 相比于通过加深,加宽网络来增强表示能力,DenseNet关注特征重用。dense架构容易训练,并且参数更少。特征图谱通过 concat 聚合可以增加后面层输入的变化,提高效率。
    • Inception 系列网络中也有用 concatenate来聚合信息,但DenseNet更加简单高效。
  • 其他工作。

    • NIN 将微型 mlp 结构引入 conv 来提取更加复杂的特征。
    • Deeply Supervised Network (DSN) 添加辅助 loss 来增强前层的梯度。
    • Ladder Networks 在 自动编码器 中引入了横向连接。
    • Deeply-Fused Nets (DFNs) 提高信息流。

实现方法

对于一个卷积神经网络,假设输入图像 。该网络包含L层,每一层都实现了一个非线性变换 ,其中 表示第 层。 可以是一个组合操作,如BN, ReLU, Conv,将第 层的输出记作

稠密连接

为了进一步改善网络层之间的信息交流流,论文提出了不同的连接模式:即引入从任何层到所有后续层的直接连接。结果,第 层得到了之前所有层的特征映射 作为输入: ,其中 表示特征映射的级联。

复合函数

定义 为三个连续操作的组合,即:

池化层

DenseNet使用了 的平均池化做特征下采样。

增长率

当每个 都产生 个特征映射时,它表示第 层有 个输入特征, 表示输入层的通道数。DenseNet与已存在架构不同之处在于DenseNet可以有很窄的层,例如:  。其中参数 称为网络的增长率。下表展示了不同深度的DenseNet网络结构,其中

在这里插入图片描述

为什么DenseNet结构有效?

对此的一种解释是DenseNet中的每个层都可以访问对应块中所有前面的特征映射,因此可以访问网络的“集体知识”。我们可以将特征映射看作网络的全局状态。每个层将自己的 个特征映射添加到这个状态。增长速度控制着每一层新信息对全局状态的贡献。全局状态一旦写入,就可以从网络中的任何地方访问,并且与传统网络体系不同,不需要逐层复制它。

瓶颈层

虽然每一层只产生 个输出特征映射,但它通道具有更多的输入。有文章指出,在每个 卷积之前可以引入 卷积层作为瓶颈层,以减少输入特征映射的数量,从而提高计算效率。实验发现这种设计对于DenseNet特别有效,并将具有瓶颈层的网络称为DenseNet-B,即具有BN-ReLU-Conv(1×1)-BN-ReLU-Conv(3×3)组件的的

压缩

为了进一步提高模型的紧凑性,可以减少过度层上的特征映射的数量。如果一个dense block包含m个特征映射,可以让其紧跟着的变化层生成 个输出特征映射,其中 作为压缩因子。当 时,跨转换层的特征映射的数量保持不变。

实验

通过Table 2可以看出DenseNet在准确率和参数量上取得了较好的平衡,精度上全面超越ResNet网络。Figure 3对比了ResNetDenseNet参数量和FLOPS是如何影响测试错误率的,可以看出相同准确率时DenseNet 的参数更少,推理时的计算量也更小。Figure 4可以看出,在相同性能下DenseNet的参数量是ResNet的三分之一;1001层的pre-activation ResNet(参数为10M)的性能和100层的DenseNet (参数为0.8M)相当。说明DenseNet的参数利用效率更高。

在这里插入图片描述

结论

这篇论文论文提出了一个新的网络结构DenseNet,解决了ResNet遗留的网络层冗余的问题,引入了具有相同特征映射大小的任意两个层之间的直接连接。我们发现,DenseNet可以自然地扩展到数百个层,且没有表现出优化困难。DenseNet趋向于随着参数量的增加,在精度上也产了对应的提高,并没有任何性能下降和过拟合的情况。但是根据天下没有免费的午餐定理,DenseNet有一个恐怖的缺点就是内存占用极高,比较考验硬件,另外DenseNetResNet一样仍存在调参困难的问题。

附录

  • 论文原文:https://arxiv.org/pdf/1608.06993.pdf
  • 参考:https://www.cnblogs.com/zhhfan/p/10187634.html


欢迎关注我们的微信公众号GiantPandaCV,期待和你一起交流机器学习,深度学习,图像算法,优化技术,比赛及日常生活等。

图片.png

                            


本文分享自微信公众号 - GiantPandaCV(BBuf233)。
如有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。

BBuf
粉丝 1
博文 226
码字总数 557691
作品 0
私信 提问
加载中
请先登录后再评论。
Nutch学习笔记4-Nutch 1.7 的 索引篇 ElasticSearch

上一篇讲解了爬取和分析的流程,很重要的收获就是: 解析过程中,会根据页面的ContentType获得一系列的注册解析器, 依次调用每个解析器,当其中一个解析成功后就返回,否则继续执行下一个解...

强子哥哥
2014/06/26
712
0
Swing界面分析和调试工具--Swing Inspector

Swing Inspector是一个Java Swing/AWT用户界面分析和调试工具,功能与firebug类似,具有强大的Swing/AWT用户界面分析和调试相关功能。 适用于从java swing初级到高级的所有开发人员,能够快速...

匿名
2013/03/06
3.4K
0
个人计算机操作系统--eComStation

eComStation(简写为 eCS)是一款基于OS/2,由Serenity Systems发布的个人计算机操作系统。它包含了一系列在OS/2的IBM版本中没有的组件及应用。 eComStation的最初版本v1发布于2001年,基于I...

匿名
2013/03/26
3.2K
0
神经网络库--GoNN

GoNN是一个用GO语言写的神经网络库 GoNN目前实现了BP网络,RBF网络和感知机 在著名的手写体字符识别数据库MNIST上,GoNN达到了98.2%的正确率。 此外,项目中还包含简单的例子:sin曲线拟合、鸾...

fxsjy
2012/11/01
4.2K
0
ORM数据访问组件--ELinq

ELinq 是一个轻量简单易用的开源Linq ORM数据访问组件,支持Nullable类型和枚举类型,对Linq的谓词提供了完美的支持,旨在让绝大部份的主流数据库都使用 Linq 来进行程序开发,让开发人员访问...

netcasewqs
2012/12/17
2K
2

没有更多内容

加载失败,请刷新页面

加载更多

大数据研发学习之路--Hadoop集群搭建

阅读编译文档 准备一个hadoop源码包,我选择的hadoop版本是:hadoop-2.7.7-src.tar.gz,在hadoop-2.7.7的源码 包的根目录下有一个文档叫做BUILDING.txt,这其中说明了编译hadoop所需要的一些...

DSJ-shitou
32分钟前
8
0
OSChina 周五乱弹 —— 特么是别的公司派来的特洛伊木马吧?

Osc乱弹歌单(2020)请戳(这里) 【今日歌曲】 小小编辑推荐:《我会守在这里》- 毛不易 《我会守在这里》- 毛不易 手机党少年们想听歌,请使劲儿戳(这里) @FalconChen :股市连跪了五天,...

小小编辑
33分钟前
36
2
如何在find中排除目录。命令 - How to exclude a directory in find . command

问题: I'm trying to run a find command for all JavaScript files, but how do I exclude a specific directory? 我正在尝试为所有JavaScript文件运行find命令,但是如何排除特定目录? ......

法国红酒甜
今天
69
0
《Java8实战》笔记(02):通过行为参数传递代码

本文源码 应对不断变化的需求 通过筛选苹果阐述通过行为参数传递代码 初试牛刀:筛选绿苹果 public static List<Apple> filterGreenApples(List<Apple> inventory){List<Apple> result = ......

巨輪
今天
19
0
JeeSite 4 架构特点、安全方面、为什么好、工匠精神、不忘初心

1、底层架构 以 Spring Boot 2 为基础,Maven 多项目依赖,模块分项目,松耦合,方便模块升级、增减模块。 模块化的数据库自动升级程序,当模块升级代码需要更新数据库时,自动执行对应版本 ...

ThinkGem
昨天
13
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部