目录
from
# 从ResNet说起
# 更深的网络
# 理解shortcut
# WRN之宽度残差块
# 退化现象
from
WideResNet(宽残差网络)算法解析-鸟类识别分类-Pytorch实战-CSDN博客
# 前言
- ResNet可以训练出更深的CNN模型
- ResNet模型的核心是建立前面层和后面层之间“短路链接”(shortcuts,skip connection)
- 网络层数的增加,分类准确率提高1%的代价=层数的两倍
- 残差网的训练:特征利用率逐渐下降,训练速度非常慢
→于是人们想到增加模型的宽度,出现了Wide Residual Networks(WRNs)架构
→减少深度的同时,增加模型的宽度
# 从ResNet说起
- 残差单元(resdual unit)= 2个卷积层(conv)+1个跳跃连接(shortcut)
- 解决梯度消失和梯度爆炸的问题(怎么解决的?)
- 让网络在更深的层数下取得更好的性能
- 跳跃连接(shortcut):直接将输入信号从一个残差单元传递到下一个残差单元(所以跳跃连接怎么了?) 解决:深度神经网络的退化问题
# 更深的网络
- 梯度消失和梯度爆炸
- 若每一层的误差梯度小于1,反向传播时,网络越深,梯度越趋近于0
- 若每一层的误差梯度大于1,反向传播时,网络越深,梯度越来越大
- 退化问题
- 随着层数的增加,预测效果反而越来越差。
- 解决
- 为了解决梯度消失或梯度爆炸问题:在网络中使用 BN(Batch Normalization)层来解决
- 解决退化问题:跳跃连接(shortcut 理解为捷径)
# 理解shortcut
让特征矩阵隔层相加,注意F(X)和X形状要相同,所谓相加是特征矩阵相同位置上的数字进行相加。
它对每层的输入做一个reference(X), 学习形成残差函数, 而不是学习一些没有reference(X)的函数。
# WRN之宽度残差块
- 图(a):ResNet的残差块结构
- 图(b):RresNet提出的bottleneck结构,用于更深的层
- 图(c):宽残差块结构,通过增加输出通道的数量使模型变得更宽
- 图(d):在两层卷积中加入了dropout
卷积核的数量决定输出通道的数量
宽残差块是指在残差块内增加更多的卷积核,从而增加特征通道的数量。传统的残差块由两个卷积层组成,每个卷积层通常只有少量的卷积核。而在WideResNet中,每个残差块都包含两个卷积层,其中第二个卷积层的卷积核数目非常大,相当于将特征通道的数目提高了数倍。
宽度残差网的核心❤️:增加输出通道的宽度
# 退化现象
from:残差神经网络(ResNet) - 知乎 (zhihu.com)
- 把退化现象归因为深层神经网络难以实现“恒等变换(y=x)”。乍一看,让人难以置信,原来能够模拟任何函数的深层神经网络,竟然无法实现恒等变换这么简单的映射了
- 退化现象让我们对非线性转换进行反思,非线性转换极大的提高了数据分类能力,但是,随着网络的深度不断的加大,我们在非线性转换方面已经走的太远,竟然无法实现线性转换。
- 随着网络深度的不断增大,所引入的激活函数也越来越多,数据被映射到更加离散的空间,此时已经难以让数据回到原点(恒等变换)