深入理解残差模块(残差函数,残差块block,residual模块,残差结构)


 

简单的堆叠卷积层和池化层行不行?

堆叠在20层的网络结构的时候,模型的训练错误在1%-2%左右,但是当训练的层数增加到56层的时候,训练的错误在7%-8%。很明显通过卷积层和池化层的增加是不行的

 

 

是什么原因造成训练的结果很差的呢?

两个问题:随着网络层数的增加,梯度消失和梯度爆炸这个问题越来越明显。我们做一个假设,假设每一层的梯度误差是一个小于1的数,在反向传播的过程当中,每向前传播一次,都要乘上一个小于1的误差梯度。当网络越来越深的时候,乘上的小于1 的系数就越来越趋近于0. 这样梯度越来越小,造成了梯度消失的情况。

反过来,梯度是一个大于1的数,在反向传播的过程中,每传播一次梯度就要乘上一个大于1 的数,当网络越来越深的时候,乘上大于1 的系数就无限大,梯度就越来越大,造成梯度爆炸的情况。

梯度消失和梯度爆炸的情况怎么解决呢?

通常是对数据标准化处理权重初始化以及BN这些方法来解决。一个问题是退化问题:随着网络层数的增加,在训练集上的准确率却饱和甚至下降了。
在解决了梯度消失和梯度爆炸的情况,还是存在层数的增加误差很大的情况,怎么解决退化问题呢?

通过残差的结构就能解决退化问题,图中的实线代表的是验证集的错误率,虚线代表的训练集的错误率,我们看验证集的错误率,随着层数的增加,错误率减小了,效果越好。

 

 
残差模块

正是因为提出了残差模块,可以搭建更深的网络。

 

 上面左边的图主要是针对于网络层数较少(ResNet-34)的使用的残差结构,右边的图是针对层数较多的网络使用的残差结构。
先看左边的结构,主线是输入特征通过两个3×3 的卷积层得到结果,在这个主线的右边是有一个从输入到输出的结构,整个的结构的意思是在主线上经过一系列的卷积层之后得到的特征矩阵再与输入特征矩阵进行一个相加的操作(两个分支的矩阵在相同的维度上做的相加的操作),相加之后通过激活函数输出。注意:主分支与shortcut的输出特征矩阵shape必须是相同的。
 上面右边的这个结构,与左边结构的不同是在输入和输出上加了一个1×1的卷积层,这两个1×1的卷积层的作用是用来做什么的呢?
在图中可以知道这个输入矩阵的深度是256-d,通过第一层的卷积层(卷积核是64 )之后,这个输入矩阵的长和宽是不变的,但是通道数由原来的256变成了64.(第一层的卷积层是起到降维的作用)。到第三层的时候通道数变成了256 ,此时输出和输入的维数是一样的,此时就可以进行相加。

左右两个不同的残差结构对比节省了多少的参数呢?
左边的结构是1,179,648 ,右边结构的参数是69,632,这样看来,使用的残差结构越多,使用的参数就越少

文章中给的图:

 

 

 
 在34层的残差结构上由的层之间用的是实线,有的层用的是虚线。这有什么不同?

 首先采用实线的部分输入矩阵和输出矩阵的shape是一样的,所以能够直接进行相加,但是虚线所连接的输入和输出矩阵的shape是不一样的。右边的两张图进行一个对比可以得到:第一个3×3 128的卷积层的步长是2,从一开始输入矩阵的长是56 到输出的矩阵的长是28,这样缩减了一半。通过卷积核128进行一个增加维数的操作,使得输出矩阵的深度是128。在shortcut的部分是添加了一个128 的卷积核,步长也是2.通过增加这个shortcut的卷积核使得输入矩阵的长和宽也缩减了原来的一半。这样的操作就保证了主线的输出矩阵和shortcut的输出矩阵是一样的。

输入矩阵的维数是[56,56,256],输出矩阵的维数是[28,28,512],这样的情况对应的是层数为50,101,152的。这是如何进行操作的呢?


右上图,对于第一个卷积层的1×1 起到一个降维的作用。将输入的矩阵的深度变成了128,并没改变特征矩阵的高和宽,通过第二层的3×3的卷积层,输出卷积核的长和宽就缩减为原来的一半,变成28×28×128. 再通过最后1×1 的卷积层来增加了深度,从原来的256变成了512

 所以虚线的作用是将输入矩阵的 长宽高进行一个变化。对于实线是没有变化的。所以对于 conv3,conv4,conv5 的第一层是虚线的结构。第一层必须将上一层的特征矩阵长宽高调整为当前层所需要的长宽高。

 
原文链接:https://blog.csdn.net/upupyon996deqing/article/details/124862680

=================================================================

ResNet block可以是多种多样的

 

=================================================================

残差网络

 

 

 

 

 

https://zhuanlan.zhihu.com/p/42706477

========================================================

 

 

 

 

 

 

 

 

 

 

 https://mp.weixin.qq.com/s?__biz=MzI4MDYzNzg4Mw==&mid=2247490749&idx=3&sn=aaa2dc1fcdfe450e0fc1401e0ee6eb75&chksm=ebb42469dcc3ad7f90361d66364bb14816a70662126c3e8f6309b8d68b6336767a425a6fbfca&scene=27

 ==================================================

 

 

 

https://zhuanlan.zhihu.com/p/72679537

https://zhuanlan.zhihu.com/p/42706477

=========================================================

 

 

 

 https://www.zhihu.com/question/67956791/answer/2296306568

===========================================================

 

 

 

 https://www.cnblogs.com/boligongzhu/p/15085678.html

===========================================================

 

 

 

 

 

 

 

https://www.bilibili.com/video/BV1bV41177ap/?spm_id_from=333.337.search-card.all.click&vd_source=6292df769fba3b00eb2ff1859b99d79e

===========================================================

什么时候要用残差连接,残差连接怎么加进去

 

===========================================================

https://blog.csdn.net/weixin_42878111/article/details/129337611

残差连接介绍

残差连接是一种神经网络中的一种运用技巧。由于深层网络容易出现梯度消失或梯度爆炸的问题,因此可以通过残差连接的方式,将网络的深度扩展到数十层以上,从而提高模型的性能。残差连接的基本思想是,在网络的某些层中,将输入的信号直接连接到输出,从而在网络中引入“跨层连接”。

二、残差连接解决问题
残差连接技巧主要用于深度神经网络的训练中,尤其是在深度网络层数较多时。具体而言,残差连接技巧可以应用于以下几个场景:
解决梯度消失问题:

深度神经网络的层数增加时,梯度的传播容易受到梯度消失的影响,导致训练困难。残差连接技巧可以通过跨层直接连接来提供捷径,从而缓解梯度消失问题。
提高模型性能:

残差连接技巧可以增加模型的深度,从而提高模型的表达能力和性能。此外,由于残差连接可以提供跨层直接连接的效果,因此可以帮助模型更好地学习特征,从而进一步提高模型性能。
降低训练难度:

残差连接技巧可以加速模型的训练,从而降低训练难度。由于残差连接可以提供跨层直接连接的效果因此可以使模型更容易收敛,减少训练时间和计算资源的消耗。总之,残差连接技巧在深度学习领域中具有广泛的应用价值,可以帮助深度神经网络更好地学习特征和提高性能,也可以降低训练难度和消耗。

在传统的神经网络中,每一层的输入都是前一层的输出,通过不断地进行非线性变换,逐渐提取高级别的特征。但是,随着网络层数的增加,梯度在反向传播过程中会逐渐变小,从而导致模型训练出现困难。残差连接通过直接将前一层的输出加到后一层的输入中,使得梯度能够更容易地传递到前一层,从而使得深度神经网络的训练更加容易。此外,残差连接还能够减少模型的训练误差,并且可以提高模型的泛化能力,从而更好地适应未见过的数据。因此,在深度学习领域,残差连接已经成为了一种广泛使用的技术,被应用于各种神经网络模型中,例如ResNet、DenseNet等。

 

===========================================================

 https://zhuanlan.zhihu.com/p/449792026

在深度神经网络中,当网络很深时,除了增加计算资源消耗以及模型过拟合问题外,还会出现梯度消失/爆炸问题,导致浅层网络参数无法更新。

而且深层的网络还有一个问题,假设我们的初始设定网络是M层,而其实最优化模型对应的层数可能是K层,那么多出来的(M-K)层网络结构,不仅不会提升模型的表达能力,反而使得模型的效果变差(表现为Loss先下降并趋于稳定值,然后再次上升。),这就产生了网络退化问题。

基于以上问题,CV领域里ResNet模型中的残差网络闪亮登场了。

其实我在看BERT模型的原理时也发现了BERT模型中存在着残差连接(Transformer中的attention层之后的Add,与LayerNorm一起使用)的现象。现在想想,果然加的很有必要啊!

定义问题统计学中的残差和误差是非常易混淆的两个概念。误差是衡量观测值和真实值之间的差距,残差是指预测值和观测值之间的差距。为什么叫残差网络呢?作者的解释是,网络的一层通常可以看做y=H(x),而残差网络的一个残差块为:H(x)=F(x)+x,则F(x) = H(x)-x,而y=x是观测值,H(x)是预测值,所以H(x)-x即为残差,也即F(x)是残差,故称残差网络

深层网络在前向传播时,随着网络加深,网络获得的信息会逐层递减,而ResNet针对该问题的处理方式是“直接映射”,即下一层不仅包括该层的信息x,还包括该层经非线性变换后的新信息F(x)。这样的处理使得信息反而呈现逐层递增趋势。这可太好用了,可以不用担心信息的丢失问题了。

 

 

 

 

===========================================================

 随着网络层数的增加,网络发生了退化(degradation)的现象:随着网络层数的增多,训练集loss逐渐下降,然后趋于饱和,当你再增加网络深度的话,训练集loss反而会增大。注意这并不是过拟合,因为在过拟合中训练loss是一直减小的。

当网络退化时,浅层网络能够达到比深层网络更好的训练效果,这时如果我们把低层的特征传到高层,那么效果应该至少不比浅层的网络效果差,或者说如果一个VGG-100网络在第98层使用的是和VGG-16第14层一模一样的特征,那么VGG-100的效果应该会和VGG-16的效果相同。所以,我们可以在VGG-100的98层和14层之间添加一条直接映射(Identity Mapping)来达到此效果。

从信息论的角度讲,由于DPI(数据处理不等式)的存在,在前向传输的过程中,随着层数的加深,Feature Map包含的图像信息会逐层减少,而ResNet的直接映射的加入,保证了 l+1 层的网络一定比 l 层包含更多的图像信息。基于这种使用直接映射来连接网络不同层直接的思想,残差网络应运而生。
————————————————
版权声明:本文为CSDN博主「HealthScience」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/weixin_43135178/article/details/115447031

===========================================================

一个基于残差连接的网络通常由若干残差块(Residual Block)组成。每个残差块内部包含多个卷积层(Convolutional Layer)、批量归一化层(Batch Normalization Layer)、激活函数(Activation Function)和残差连接(Residual Connection)

 

 

=============================

===========================================================

https://blog.csdn.net/weixin_47964305/article/details/131254001

1. 残差连接是什么?
残差连接是一种跳过连接,它将输入添加到网络的中间层或输出上。

2. 残差连接的作用是什么?
残差连接的作用是解决神经网络中的梯度消失问题,它可以让梯度更容易流过很深的神经网络。

3. 残差块是什么?
残差块是由残差连接组成的神经网络模块,通常由两组或三组卷积层加激活函数组成,并添加残差连接。

4. 为什么说残差连接可以缓解梯度消失问题?
因为残差连接可以让梯度直接传递到很深的层,而不需要通过每一层的激活函数,所以可以避免在每层的激活函数中衰减太多。

5. ResNet是什么?
ResNet是基于残差网络的架构,它通过在很深的网络添加残差连接来获得很高的准确率。ResNet曾获得ImageNet竞赛的冠军。

6. ResNet的典型网络结构是什么?
典型的ResNet包含多个残差块,每个残差块由几组卷积层加激活函数组成。整个ResNet使用全局平均池化和全连接层做分类。

7. 残差块通常采用什么样的连接方式?
残差块通常采用两种连接方式:
1)恒等映射:y = x + F(x)
2)投影映射:y = x + F(x) * W,其中W是一个可学习的1x1卷积

8. ResNet的命名规则是什么?
ResNet使用数字表示网络 depth,例如ResNet-18表示包含18个残差块,ResNet-50表示包含50个残差块,以此类推。

9. ResNet有什么变种?
常见的ResNet变种有ResNet-D, ResNeXt, SE-ResNet, Res2Net等。它们在残差连接和残差块的基础上进行了改进

10. ResNet的应用场景有哪些?
ResNet常用于图像分类、图像分割、目标检测等计算机视觉任务,并在这些领域达到很高的效果。它也被应用到Natural Language Processing的任务中。

11. Res2Net是什么?它和ResNet的区别是什么?
Res2Net是一种改进的ResNet,它使用多分支的残差结构,而不像ResNet只有单一的残差路径。Res2Net可以增强特征的表达能力,获得更高的准确率。

12. ResNeXt是什么?它和ResNet的区别是什么?
ResNeXt是一种改进的ResNet,它在残差块内使用了组卷积(group convolution)来增强模型的表达能力。ResNeXt可以看作是一个扩展的ResNet。

13. SE-ResNet是什么?它和ResNet的区别是什么?
SE-ResNet是一种改进的ResNet,它使用了通道注意力机制(Squeeze-and-Excitation)来重新加权通道特征。SE-ResNet可以更好地利用通道间的依赖关系,得到准确率的提升。

14. ResNet中1x1卷积的作用是什么?
1x1卷积主要用于改变通道数量,它可以做通道压缩或通道扩展,从而控制模型的复杂度。在残差块的投影映射中,1x1卷积用来匹配输入和输出的通道数量。

15. ResNet中为什么不使用池化层?
ResNet的设计者发现,使用残差连接可以让网络达到很深,而不需要池化层也可以得到很好的性能。所以ResNet移除了最大池化层,只使用步幅为2的卷积进行下采样。

16. ResNet的实现细节是什么?
主要的实现细节有:使用批标准化、ReLU激活函数、残差连接、投影映射的1x1卷积等。

17. 除了计算机视觉,ResNet还应用在哪些领域?
ResNet也应用在自然语言处理,例如文本分类、机器翻译等任务中,并取得很好的效果。

18. ResNet的缺点是什么?
ResNet的主要缺点是计算复杂度高,特别是网络变深时。并且,残差连接让梯度可以更容易流过,可能会带来一些梯度爆炸的问题。

19. Residual Attention Network是什么?
Residual Attention Network是一种将注意力机制引入到ResNet中的网络。它在残差连接上添加注意力模块,可以更好地建模长距离依赖的关系。

20. 什么是广义的残差网络?
广义的残差网络泛指一类采用残差学习理念的网络结构。除了典型的ResNet,它包括ResNeXt, Res2Net, SE-ResNet, Residual Attention Network等等。这些网络都使用残差连接并在此基础上有不同的改进,可以看作是广义的残差网络。

链接:https://blog.csdn.net/weixin_47964305/article/details/131254001

===========================================================

 

===========================================================

 

 

===========================================================

论文:

https://ieeexplore.ieee.org/document/7780459

K. He, X. Zhang, S. Ren and J. Sun, "Deep Residual Learning for Image Recognition," 2016 IEEE Conference on Computer Vision and Pattern Recognition (CVPR), Las Vegas, NV, USA, 2016, pp. 770-778, doi: 10.1109/CVPR.2016.90.

 视频:

https://www.bilibili.com/video/BV1bV41177ap

https://www.bilibili.com/video/BV1BL411w7J4

https://www.bilibili.com/video/BV1vb4y1k7BV

===========================================================

 

posted @ 2023-02-20 20:17  emanlee  阅读(8742)  评论(0编辑  收藏  举报