Resnet到底在解决一个什么问题呢?

链接:https://www.zhihu.com/question/64494691

编辑:深度学习与计算机视觉

声明:仅做学术分享,侵删

既然可以通过初试化和归一化(BN层)解决梯度弥散或爆炸的问题,那Resnet提出的那条通路是在解决什么问题呢?

在He的原文中有提到是解决深层网络的一种退化问题,但并明确说明是什么问题!

作者:知乎用户
https://www.zhihu.com/question/64494691/answer/220989469

今年2月份有篇文章,正好跟这个问题一样。

The Shattered Gradients Problem: If resnets are the answer, then what is the question?:https://arxiv.org/abs/1702.08591

大意是神经网络越来越深的时候,反传回来的梯度之间的相关性会越来越差,最后接近白噪声。因为我们知道图像是具备局部相关性的,那其实可以认为梯度也应该具备类似的相关性,这样更新的梯度才有意义,如果梯度接近白噪声,那梯度更新可能根本就是在做随机扰动。

有了梯度相关性这个指标之后,作者分析了一系列的结构和激活函数,发现resnet在保持梯度相关性方面很优秀(相关性衰减从 到了 )。这一点其实也很好理解,从梯度流来看,有一路梯度是保持原样不动地往回传,这部分的相关性是非常强的。

作者:李韶华 https://www.zhihu.com/question/64494691/answer/759191243

我的直觉理解是,backprop相当于把分类的cross entropy reward一层一层分配回来,到了某一层residual layer, 两个通路会互相竞争,哪个更能得到reward,哪个就被强化。这样两个通路会学到互补的features.

作者:刘昕宸
https://www.zhihu.com/question/64494691/answer/1545759510

ResNet解决的其实是一个不符合预期的现象

做实验如果出现了不符合预期的现象,并且在我们的预期没什么问题的情况下,那么一定是哪里出了问题,并且这个问题非常值得解决

前提:

网络的不同层可以提取不同抽象层次的特征,越深的层提取的特征越抽象。因此深度网络可以整合low-medium-high各种层次的特征,增强网络表征能力。

预期:

越深的网络,表征能力应该越强,做分类等任务效果应该越好。

现实:

更深的56-layer网络在训练和测试结果上均不如20-layer网络!

不符合预期的现象出现了!!!

这个就是论文中提到的退化问题,而ResNet则正是为了解决这个问题。

下面进入碎碎念分析:

deeper network准确率饱和后,很快就退化了

为什么会这样呢?

首先,深度网络优化是比较困难的,比如会出现梯度爆炸/梯度消失等问题。不过,这个问题已经被normalized initialization和batch normalization等措施解决得差不多了。

其次,网络更深了,参数更多了,应该拟合能力更强了才对啊!噢,一定是过拟合了。

但似乎也不是过拟合的问题:

因为56-layer网络(上图红线)的training error(上左图)也比20-layer网络(上图黄线)要高,这就应该不是过拟合了啊!

那么究竟是什么原因导致了deeper network degradation问题呢?

现在,我们换一种思路来构建deeper network:

假设浅层网络已经可以得到一个不错的结果了,那我接下来新增加的层啥也不干,只是拟合一个identity mapping,输出就拟合输入,这样总可以吧。

这样的话,我们觉得:这样构建的深层网络至少不应该比它对应的浅层training error要高。对吧。

但是实验又无情地打脸。

看来,一定是在优化深层网络时出了问题!这种问题导致了深层网络的性能退化,ResNet就是要解决这个问题!

怎么解决?

ResNet的核心就是residual learningidentity learning by shortcut

效果怎么样呢?

ResNet解决了退化问题,获得了更高的准确率,实现了更快的收敛速度。

作者:灰灰
https://www.zhihu.com/question/64494691/answer/271335912

一方面: ResNet解决的不是梯度弥散或爆炸问题,kaiming的论文中也说了:臭名昭著的梯度弥散/爆炸问题已经很大程度上被normalized initialization  and intermediate normalization layers解决了;

另一方面: 由于直接增加网络深度的(plain)网络在训练集上会有更高的错误率,所以更深的网络并没有过拟合,也就是说更深的网络效果不好,是因为网络没有被训练好,至于为啥没有被训练好,个人很赞同前面王峰的答案中的解释。

在ResNet中,building block:

H(x)是期望拟合的特征图,这里叫做desired underlying mapping

一个building block要拟合的就是这个潜在的特征图

当没有使用残差网络结构时,building block的映射F(x)需要做的就是拟合H(x)

当使用了残差网络时,就是加入了skip connection 结构,这时候由一个building block 的任务由: F(x) := H(x),变成了F(x) := H(x)-x

对比这两个待拟合的函数,文中说假设拟合残差图更容易优化,也就是说:F(x) := H(x)-x比F(x) := H(x)更容易优化,接下来举了一个例子,极端情况下:desired underlying mapping要拟合的是identity mapping,这时候残差网络的任务就是拟合F(x): 0,而原本的plain结构的话就是F(x) : x,而F(x): 0任务会更容易,原因是:resnet(残差网络)的F(x)究竟长什么样子?中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都表示网络参数映射,引入残差后的映射对输出的变化更敏感。比如s输出从5.1变到5.2,映射F'的输出增加了1/51=2%,而对于残差结构输出从5.1到5.2,映射F是从0.1到0.2,增加了100%。明显后者输出变化对权重的调整作用更大,所以效果更好。残差的思想都是去掉相同的主体部分,从而突出微小的变化,看到残差网络我第一反应就是差分放大器

后续的实验也是证明了假设的, 残差网络比plain网络更好训练。因此,ResNet解决的是更好地训练网络的问题,王峰的答案算是对ResNet之所以好的一个理论论证吧.

作者:whjox
https://www.zhihu.com/question/64494691/answer/326043955

理论上深层的神经网络一定比浅层的要好,比如深层网络A,浅层网络B,A的前几层完全复制B,A的后几层都不再改变B的输出,那么效果应该是和B是一样的。也就是说,A的前几层就是B,后几层是线性层。但是实验发现,超过一定界限之后,深层网络的效果比浅层的还差。一个可能的解释是:理论上,我们可以让A的后几层输入等于输出,但实际训练网络时,这个线性关系很难学到。既然如此,我们把这个线性关系直接加到网络的结构当中去,那么效果至少不必浅层网络差。也就是说,Resnet让深层神经网络更容易被训练了。

实际操作中,加上这个residual,我们一方面可以做的更深,这样网络表达的能力更好了,一方面训练的也更快了,至少比VGG快多了。

作者:pymars
https://www.zhihu.com/question/64494691/answer/325751092

不做图像相关处理,研究不多,看过网络结构图和highway network那篇文章,说说自己的直观理解。

我觉得是在解决不同层级的特征组合问题或者说浅层信息的远距离传输问题。

卷积网络都是从低阶特征抽象出高阶特征的,从点线面到简单结构到复杂形状,而每一层网络能表示的往往是相近复杂度的特征(或者说相近感受野范围内的特征)。

另一方面,对不同的图片,相似的特征并不总是处在同一层,比如同样的抽象出一个眼睛,小点的图像可能在第3层就抽象出来了,但是对同样内容的一个大尺度图片,可能要到第8层才抽象出来(因为要这么深感受野才覆盖得到)。

图像任务利用的特征基本都不是单一层级的,而是多个层级的组合,比如眉毛部分的局部特征+整个脸部特征来判断一个人,但是这些特征并不都在一个层级。不加res连接,意味着低阶的特征要起作用需要经过多层网络来传递,这个过程中是会有信息损益的,可能第三层抽象出来的特征,传到最后就不知道是什么东西了。

加了res层保证了各个层级的特征可以随意的组合,而且可以高保真的让各层级的有用特征传递到最终的特征层。

作者:王康康
https://www.zhihu.com/question/64494691/answer/358628045

我认为resnet的传递性主要解决的是底层特征和和高层特征融合的问题,进而解决卷积核的训练难度问题。什么是底层和高层的融合?比如我们要识别三毛这个小娃娃,首先要认出他的脸来,如果用3*3的卷积核,想要感受野达到脸这么大,起码网络得到了(假设)20层吧;同时要认出他的三跟头发,这感受野可就小的多了,按我感觉只要(假设)到第5层。如果我判定,符合脸和三根毛这两个特征,就认为他是三毛,那么我如何结合这两个特征?做法就是resnet,将第五层的特征直接连接到第20层上。

这就引出第二个问题,三个毛这个特征完全可以从第6层传递到第20层,没必要非得你做个通道导过去啊(resnet的恒等输出解释)。但在实际情况中,卷积核的训练在哲学上会遵循一个熵增现象,你想让【[0 0 0];[0 1 0];[0 0 0]】这样一个恒等卷积核保持住状态,难度极大,大部分卷积核由于熵增现象,都有一种趋向于随机值的力量。所以你说的深层网络退化问题,我认为就是卷积核的熵增问题。

目前有论文研究类似的问题,我看到过一个说卷积核的自由度会随着训练过程的进行而降低,或者说卷积核的活性吧,或者说卷积核的灵性吧,大概就是这么个与我的理解类似但又不完全一样的概念。

☆ END ☆

如果看到这里,说明你喜欢这篇文章,请转发、点赞。微信搜索「uncle_pn」,欢迎添加小编微信「 mthler」,每日朋友圈更新一篇高质量博文。

扫描二维码添加小编↓

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值