首页 > 编程知识 正文

残差连接的作用,深度残差收缩网络

时间:2023-05-05 13:25:15 阅读:146336 作者:1175

这个博客是个人博客,无论商业用途如何,只提供学习参考。 内容都是来自个人原创和网络的转载和摘录。

本博客上有原始标记的文章、照片、文件等,未经本人许可,不得用于商业用途和传统媒体。 http://www.Sina.com/http://www.Sina.com /

原博客链接: https://blog.csdn.net/qq_38305370

原博客昵称:城外南风起

————————————————

目录islearningbetternetworksaseasyasstackingmorelayers? 我理解的ResNet为什么要学习恒等映射? 为什么在ResNet之前不能学习恒等映射? 如何学习恒等映射? 一些公式理解shortcut总结的参考

islearningbetternetworksaseasyasstackingmorelayers?

否,随着网络层数的增加,将出现本文首发于CSDN,版权所有,禁止转载。如需转载,请在评论区留言或私信申请,经同意后可转载,否则属于侵权行为。 这两个问题在@Double_V_的文章中详细解说了机器学习中的梯度消失、爆炸原因及其解决方法中的梯度消失。 简而言之,梯度消失是由深层网络中不恰当的激活函数引起的。 例如,对于sigmoid,导数的最大值为0.25。 由此,当更新总梯度时,每层网络的总梯度至少减少四分之一; 梯度爆炸是深层网络中初始化权重数值过大,总梯度更新后各层网络总梯度指数增加。

这两个问题可以通过几种方式解决(将输入数据和中间层数据归一化),可以增加网络深度,但随着网络层数的增加,精度饱和,然后下降(精度下降)。 需要注意的是,由于训练集中的精度没有提高,因此老化不是通过拟合造成的。

我理解的ResNet 梯度爆炸

你为什么要学习恒等映射? 为什么在ResNet之前不能学习恒等映射? 如上所述,网络层数的增加会退化。 也就是说,深层网络的效果反而比浅层网络差。 这显然不合理。 你可以这样想。 500层网络在10层达到相对最佳,层数越高则退化。 也就是说,前10层是浅层,后490层是深层,它完全可以恒等映射后的深层学习。 于是,有500层网络=10层浅层(相对最优解) 490层深层(恒等映射)。 本来,这种网络结构不会比只有前十层的效果差(甚至差很多)。 要说为什么,那是因为之后只是进行了恒等映射。第二部分因此,实际上网络层数增加,学习难度增加,无法学习后面490层恒等映射,使推理结果接近前10层的相对最优,或者http://www.sinn 因此,需要引入shortcut,使以后的490层网络能够更方便快捷地学习潜在的恒等映射。

如何学习恒等映射? 一些公式理解shortcut

这是ResNet的结构图,但论文中的图和说明没有照顾我这个数学不好的同学。 虽然没有在图中,但是对于文章中出现的H(X ),我很害怕。 作为一个不是计算机专家的学生,我对这张图有以下理解。

逻辑:需要学习恒等映射才引入了shortcut,而不是引入了shortcut导致了学习到恒等映射

输入

x x x

输出功率

(h0(x )=f0 ) x ) h_0(x )=F_0(x ) h0(x )=F_0(x ) ) ) ) ) 652 )

代价(图方便,以一次距离为例,下同) )

C 0= H

0 ( x ) − x ∣ = ∣ F 0 ( x ) − x ∣ C_0=|H_0(x)-x|=|F_0(x)-x| C0​=∣H0​(x)−x∣=∣F0​(x)−x∣

引入shortcut后

输入
x x x
输出
H 1 ( x ) = F 1 ( x ) + x H_1(x)=F_1(x)+x H1​(x)=F1​(x)+x
代价
C 1 = ∣ H 1 ( x ) − x ∣ = ∣ F 1 ( x ) + x − x ∣ = ∣ F 1 ( x ) ∣ C_1=|H_1(x)-x|=|F_1(x)+x-x|=|F_1(x)| C1​=∣H1​(x)−x∣=∣F1​(x)+x−x∣=∣F1​(x)∣
我们知道,神经网络训练的目标是使代价函数尽可能小。那么,引入shortcut前,训练的目标是使F0(x)尽可能趋于x,即尽可能寻求恒等变换F0(x)=x;而引入shortcut后,训练的目标是使F1(x)尽可能趋于0,即尽可能寻求F1(x)=0,F1(x)=H1(x)-x即表示观测值x与预测值H1(x)的残差。

学习F1(x)=0(引入shortcut后)比学习F0(x)=x(引入shortcut前)简单,为什么呢?@theone的知乎回答讲解得很形象。

F是求和前网络映射,H是从输入到求和后的网络映射。

比如把5映射到5.1,

那么引入残差前是F’(5)=5.1,

引入残差后是H(5)=5.1, H(5)=F(5)+5, F(5)=0.1。

这里的F’和F都表示网络参数映射,引入残差后的映射对输出的变化更敏感。比如原来是从5.1到5.2,映射F’的输出增加了1/51=2%,而对于残差结构从5.1到5.2,映射F是从0.1到0.2,增加了100%。明显后者输出变化对权重的调整作用更大,所以效果更好。

残差的思想都是去掉相同的主体部分,从而突出微小的变化,看到残差网络我第一反应就是差分放大器…

大意是去掉绝对差,保留相对差。所以,引入shortcut后,更能使深层学习到恒等映射。

再补充一个对F1(x)=H1(x)-x的理解,来自@ChronousZ的知乎回答。

残差本质是y=x+f(x),激活后f(x)>=0,在求梯度时为1+f’(x),保证梯度始终在1附近,这样两式一起就保证了“就算没学到有用的东西,也不会产生不利的信息,避免了梯度消失”

用本文的公式解释为:输出H1(x)=F1(x)+x,其在代价函数中求导后会产生:H1‘(x)=F1’(x)+1。其中,1保证梯度可以顺利传播,而F1(x)一般为Relu激活,所以F1’(x)≥0,不会使H1‘(x)等于0,从而造成梯度消失。

再重复一遍逻辑:需要学习恒等映射才引入了shortcut,而不是引入了shortcut导致了学习到恒等映射

总结 提出了为什么需要学习恒等映射:解决退化问题;猜想为什么ResNet之前学不到恒等映射:网络层数增加,导致学习难度变大,无法将浅层的学习结果传递给深层;提出了利用shortcut学到恒等映射。 参考

残差网络ResNet最全分析 from @不秃头不成功
ResNet详解——通俗易懂版 from @cdny_yeah_
残差网络ResNet笔记 from @alanma
详解残差网络 from @矮小的羊
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, 2016, pp. 770-778, doi: 10.1109/CVPR.2016.90.

————————————————
感谢您的阅读,如果您有收获,请给我一个三连吧!
如果您觉得这还不够,可以点击 打赏 按钮,告诉我: 你币有了!

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。