【模型解读】“全连接”的卷积网络,有什么好?

这是深度学习模型解读第8篇,本篇我们简单介绍Densenet。

作者&编辑 | 言有三

1 从skip connect到dense connect

我们知道,曾经深度网络训练不好收敛,Resnet的出现打破了这一僵局,背后的思想仅仅只是拉了一个skip connect,也就是将输入和输出相连相加,下面是一个resnet18的展示。这个输入输出,可以是刚好相邻的两个卷积block,也可以是跳过若干层的两个。

假如,我们再进一步,将这个思想发挥到极致,会怎样?把所有层都与其他所有层相连,也就是说N层的网络,会有(N*N-1)/2个连接,如下图所示:

这就是densenet【1】,CVPR 2017最佳论文,可以看作是一个发挥到极致的resnet。

2 为什么会设计densenet?

大家如果对resnet理解不够深的话,可以回过头去读我们的上一期对resnet的解读。残差连接的必要性和有效性,在那篇文章中做了很详细的解读。

【模型解读】resnet中的残差连接,你确定真的看懂了?

神经网络越深,网络的能力越强,就越有可能过度学习数据集,导致过拟合。大家应该还记得,作为第一个深层网络Alexnet网络,它提出了重要的策略dropout,对于提高模型的泛化能力非常有效。alexnet网络至今仍然可以用于很多的任务,这足以说明其鲁棒性。后来BN和数据增强等正则化策略替代dropout也在一定程度上缓解了过拟合的问题。文【2】是densenet作者们早期的研究,它们通过训练时随机丢掉一些网络层,提高了ResNet的泛化性能。

从这里可以看出来一个重要特性,这也是神经网络中大家比较关心的问题,网络的冗余性绝对是存在的,而且不小,通过探索dropout值的比例对性能的影响可以去估算这个冗余。

既然丢掉某些层间连接或者整个层不影响性能,就说明这一层学习到的非线性转变很小,既然转变很小,那么每一层学习几百个通道,还有必要吗?这几百个通道,正是万恶的计算量所在。

考虑到这一点,densenet就同时做了两件事情,一是将网络中的每一层都直接与其前面层相连,提高特征的利用率;二是把网络的每一层设计得很窄,也就是卷积的输出通道数通常很小,只有几十,该层学习非常少的特征图并与输入concat使用。

这实现了资源的最大化利用和计算量的压缩。ImageNet分类数据集上达到同样的准确率,DenseNet 所需的参数量不到ResNet的一半,所需的计算量也只有ResNet的一半左右。

思想就是这么简单,当然,我们在使用的时候,不会真的这么夸张去将所有层都连接起来,更多的是将网络的后面一些层做dense连接。毕竟网络设计的通用思想是网络越深宽度更宽,这里做dense连接对于减小计算量更有意义。

3 简单思考

人类对深度学习模型只有三个要求,运行速度快,网络模型小,性能好。

提升网络性能,最朴素的方法就是加深加宽网络,但这与前面两者是冲突的。所以,工程师们都在想方设法压榨每一个通道的性能,但又要避免网络发生过拟合。

既要没用的网络层减少,又要有用的网络层不能太灵敏,那就只有一条路可以走了。充分压榨已有的网络层的性能,让他们充分交流。

网络发展到现在,早已经不是Lenet,Alexnet,Vggnet这样简单的网络加深的路线,网络各层之间信息的融合,在图像分割(FCN),目标检测(FPN)等任务中都至关重要,看看下面的网络图就知道。

FCN结构

FPN结构

不同层之间的连接,融合不同抽象层级的信息,融合不同尺度的信息,densenet将这个发挥到了极致,就这么简单。

同时,在我的知乎专栏也会开始同步更新这个模块,欢迎来交流

https://zhuanlan.zhihu.com/c_151876233

注:部分图片来自网络

—END—

转载请留言,侵权必究

本系列的完整目录:

【模型解读】从LeNet到VGG,看卷积+池化串联的网络结构

【模型解读】network in network中的1*1卷积,你懂了吗

【模型解读】GoogLeNet中的inception结构,你看懂了吗

【模型解读】说说移动端基准模型MobileNets

【模型解读】pooling去哪儿了?

【模型解读】resnet中的残差连接,你确定真的看懂了?

【模型解读】“不正经”的卷积神经网络

【模型解读】“全连接”的卷积网络,有什么好?

【模型解读】从“局部连接”回到“全连接”的神经网络

【模型解读】深度学习网络只能有一个输入吗

【模型解读】从2D卷积到3D卷积,都有什么不一样

【模型解读】浅析RNN到LSTM

感谢各位看官的耐心阅读,不足之处希望多多指教。后续内容将会不定期奉上,欢迎大家关注有三公众号 有三AI

【模型解读】“全连接”的卷积网络,有什么好?相关推荐

  1. Densely connected convolutional networks(密集连接的卷积网络)

    本文是 CVPR 2017 论文 Densely connected convolutional networks. 的翻译学习,因为作者本人水平有限,如有不准确的地方还望读者不吝赐教. 摘要 最近的 ...

  2. 全连接、卷积、循环神经网络介绍

    神经网络简介 训练神经网络主要围绕下面四部分: 层,多个层组合成网络(或模型) 输入数据和相应目标 损失函数,即用于学习的反馈信号 优化器,决定学习过程如何进行 层.损失函数.优化器之间的关系: 层: ...

  3. 通俗讲解多层全连接前向网络的基本结构

    通俗讲解多层全连接前向网络的基本结构 1 模拟神经元 2 单层神经网络的分类器 3 激活函数 3.1 Sigmoid 3.2 Tanh 3.3 ReLU 4.4 Leaky ReLU 3.5 Maxo ...

  4. 【数据挖掘】卷积神经网络 ( 池化 | 丢弃 | 批量规范化 | 卷积神经网络完整流程示例 | 卷积 | 池化 | 全连接 | 输出 | 卷积神经网络总结 )

    文章目录 I . 池化 II . 丢弃操作 III . 批量规范化 IV . 卷积神经网络 完整流程示例 ( 1 ) : 原始输入图 V . 卷积神经网络 完整流程示例 ( 2 ) : 卷积层 C1C ...

  5. Pytorch Note32 稠密连接的卷积网络 DenseNet

    Pytorch Note32 稠密连接的卷积网络 DenseNet 文章目录 Pytorch Note32 稠密连接的卷积网络 DenseNet DenseNet Dense Block DenseN ...

  6. Pytorch 实现全连接神经网络/卷积神经网络训练MNIST数据集,并将训练好的模型在制作自己的手写图片数据集上测试

    使用教程 代码下载地址:点我下载 模型在训练过程中会自动显示训练进度,如果您的pytorch是CPU版本的,代码会自动选择CPU训练,如果有cuda,则会选择GPU训练. 项目目录说明: CNN文件夹 ...

  7. 「模型解读」从2D卷积到3D卷积,都有什么不一样

    https://www.toutiao.com/a6711317983035130371/ 接着模型解读系列,在中国科幻作家刘慈欣的科幻小说<三体Ⅲ·死神永生>中,首次提出了降维打击这个概 ...

  8. 【模型解读】从2D卷积到3D卷积,都有什么不一样

    接着模型解读系列,在中国科幻作家刘慈欣的科幻小说<三体Ⅲ·死神永生>中,首次提出了降维打击这个概念,这是本质上区别于同一维度的攻击,破坏性也更大. 而现在我们要说的是从二维卷积升级到三维卷 ...

  9. pytorch实现IMDB数据集情感分类(全连接层的网络、LSTM)

    目录 一.任务描述 二.思路分析 三.准备数据集 3.1 基础dataset的准备 3.2 文本序列化 四.构建模型 4.1 仅有全连接层 4.2 LSTM 4.3 训练和测试 五.完整代码 5.1 ...

最新文章

  1. iOS 开发 高级:使用 宏定义macros (#,##,...,__VA_ARGS_)
  2. 通过修改注册表提升SSD性能(Intel 5系列芯片组)
  3. 【超详细】DBCP连接池配置参数说明
  4. Swift学习之map、flatMap、filter、reduce的使用
  5. [原]排错实战——拯救加载调试符号失败的IDA
  6. 【BIM入门实战】Revit2018项目模板、族库图文安装教程
  7. 基于java的数据结构学习——数组实现的栈以及简单应用C++实现
  8. ubuntu shuangxitong
  9. Bailian2930 加减乘除【水题】
  10. java中级参考教材答案_Java中级开发工程师笔试题及答案(2)
  11. 常用网络测试的命令的实验报告计算机网络,实验一常用网络命令的使用实验报告-20210409133504.docx-原创力文档...
  12. icon 做成html形式,CSS icon的各种做法
  13. wps如何只让他显示3级标题_wps怎么把标题显示出来
  14. Spark视频王家林大神 第7课: Spark机器学习内幕剖析
  15. vs2008中文版提供下载(包含中文msdn),包括vs2008序列号和破解方法。
  16. 关于Virtual的英语含义
  17. 在HBuilder里为什么输入汉字是繁体字,而我的输入法设置的是简体
  18. mysql notifier什么_MySQLNotifier这个东西有什么作用?
  19. html展开插件,分享10款功能强大的HTML5/CSS3应用插件
  20. 社区产品如何搭建内容体系?看看懂球帝与虎扑如何做

热门文章

  1. Java8 HashMap详解
  2. oracle创建外键约束的两种方式
  3. Java对【JSON数据的解析】--Gson解析法
  4. mybatis传递多个参数_Mybatis传递多个参数的4种方式(干货)
  5. (Mybatis)Mybatis简介和初步使用
  6. textarea实现datalist效果_手把手撸代码实现Virtual Dom amp;amp; Diff
  7. ue4 怎么传递变量到另一个蓝图_资深建模教你放置UE4蓝图节点,所以你就不要偷懒啦,认真点学...
  8. c语言搜索关键字吗,c语言-以关键字搜索程序
  9. easyui分页查询为什么会有下拉框_做网站优化为什么要分析百度下拉词和相关搜索?...
  10. 小米6通话音量补丁_智能手机的音量键有很多功能,你用过吗?