📒from ©实现pytorch实现DenseNet(CNN经典网络模型详解) - 知乎 (zhihu.com)
是什么之 DenseBlock
读图:
- x0是input
- H1的输入是x0 (input)
- H2的输入是x0和x1 (x1是H1的输出)
Summary:
- 传统卷积网,网络有L层,就会有L个连接
- DenseNet中,会有L(L+1)/2个连接<------>每一层的输入来自前面所有的层的输出
原文仅有的两个公式:
通过这两个公式理解 ResNet 和 DenseNet
Summary
Identity function
输出等于输入(继续
是谁,在哪儿。啥时候
作为CVPR2017年的Best Paper, DenseNet脱离了加深网络层数(ResNet)和加宽网络结构(Inception)来提升网络性能的定式思维,从特征的角度考虑,通过特征重用和旁路(Bypass)设置,既大幅度减少了网络的参数量,又在一定程度上缓解了gradient vanishing问题的产生.结合信息流和特征复用的假设,DenseNet当之无愧成为2017年计算机视觉顶会的年度最佳论文.
©实现pytorch实现DenseNet(CNN经典网络模型详解) - 知乎 (zhihu.com)
评价
- DenseNet网络层数深
- 相比ResNet参数量更少
- 旁路增加了特征重用
- 网络更易于训练,并具有一定的正则效果
- 缓解了gradient vanishing和model degradation问题
杂谈:
- CNN网络层数不断增加,梯度消失和模型退化的问题出现在人们面前
- gradient vanishing 梯度消失的问题真的很严重
- model degradation
- batch normalization一定程度上解决了 gradient vanishing
- ResNet 和 Highway Networks 通过恒等映射设置旁路,进一步减少了gradient vanishing 和 model degradation
- Fractal Nets通过将不同深度的网络并行化,获得深度的同时保证梯度的传播
- 不同网络架构的核心思想:将feature map 跨网络层 连接
DenseNet v.s. ResNet
- 何恺明 ResNet 的假设:若某一较深的网络多出另一较浅网络的若干层有能力学习到恒等映射,那么这一较深网络训练得到的模型性能一定不会弱于该浅层网络
- = 如果对某一网络中增添一些可以学到恒等映射的层组成新的网络,那么最差的结果也就是新网络中的这些层在训练后成为恒等映射而不会影响原网络的性能
- DenseNet假设:(特征复用) 与其多次学习冗余的特征,特征复用是一种更好的特征提取方式
DenseNet优点
- 网络更窄,参数更少
- DenseNet❤️:dense block
- dense block每个卷积层的输出 feature map数量都很小( feature map < 100)
- feature map理解为 网络的宽度
- 密集连接使得特征和梯度的传递更加有效,网络也更容易训练(why?
A:
- 原文句子:Each layer has direct access to the gradients from the loss function and the original input signal, leading to an implicit deep supervision.每个层都可以直接访问损失函数的梯度和原始输入信号,从而导致了一种隐式的深度监督。
- 首先明确:梯度消失在网络越深的时候越容易出现(原因在于:输入信息和梯度信息在很多层之间传递导致的)
- ∴dense connection
- 第1个优点:相当于 每一层都直接连接input和loss,因此可以减轻梯度消失现象
- 第2个优点:正则化效果,对过拟合有抑制作用(原因在于参数减少了,所以过拟合现象减轻)