残差/shortcur/Resnet 究竟好在哪里

为什么要使用残差?

众所周知,更深的网络会遇到退化问题,即在网络的层数达到最大值后,随着网络深度的增加,准确性会降低。并且这种准确性的降低不是由于训练集的过度拟合;因为训练误差开始增加。然而,可以证明(并且作者确实证明了)如果较浅的网络以一定的精度执行,那么任何较深的网络至少可以与较浅的网络一样好。额外的层可以只是恒等映射(什么也不做),并给出与浅层网络相同的结果。但是实验中并不是这样的。这表明优化器难以通过多个非线性层学习恒等映射。
残差的本质是将恒等映射变成了残差拟合;
深度学习网络在层数加深的过程中,会发生退化。所谓的退化,就是在训练集上和测试集上的误差都比较大,不能很好地映射输入到输出,这并非是过拟合造成的;

原本我们待拟合的映射是:
y = H ( x ) y=H(x) y=H(x)
残差映射是:
y = F ( x ) + x y=F(x)+x y=F(x)+x
则:
F ( x ) = y − x F(x)=y-x F(x)=yx
待拟合的映射是输入和输出的差;
先说结论:
对于深度网络而言,拟合残差映射比恒等映射更容易;

为什么拟合残差映射比恒等映射更容易?

我们先说恒等映射,其实就是什么都不做,但是什么都不做对于网络而言是非常困难的;
当前w=1以及偏置=0的时候,输出是等于输入的,但是网络中有很多激活层,比如relu,它会丢掉所有小于0的值,对于非线性映射,输入要跟输出相等是很困难的;

但是对于残差映射而言,参数为0、偏置为0就可以做到残差映射了;
比如我们有一个如下的网络:

我们将其增加两层:
在这里插入图片描述
后面的层权重和偏置为0,就可以完成参数映射了;

此外,也可以从另外一个角度理解残差映射,网络深度越深,表达能力越强,也就是我们搜索的映射输入到输出的拟合函数的解空间越大,当解空间太大的时候,难以在如此大量的参数空间找寻到拟合的函数,所以通过短接可以直接跳过某层,减小搜索的解空间,让网络更快收敛到最优解;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值