【计算机视觉面经六】ResNet结构为啥要这么设计?

ResNet结构为啥要这么设计?

首先resnet解决了梯度弥散(也就是梯度爆炸的问题),但是resnet出现的原因并不是为了解决梯度弥散的情况,而有更深层次的原因。

作者发现了一件奇怪的事,随着网络身的的加深,我们的模型学习效果居然越来越差了,这是什么原因?理论上网络越深,对特征的认识应该越来越好啊,最差也应该与前面网络持平吧。

在这里插入图片描述

所以,开始猜测会不会是神经网络的训练过程出现了下面两个问题:

1、过拟合,欠拟合。
2、梯度消失(梯度弥散),梯度爆炸。

过拟合确实是有可能的,但是过拟合的表现是高方差低偏差,训练集效果好,测试集效果差,这与上面明显不合(上图显示训练集上面的效果也很差)。

梯度消失,梯度爆炸我们使用relu函数和BN已经基本解决了这两个问题。

作者给出来的解释是模型退化。但是这却是不符合常理的。按理说,当我们堆叠一个模型时,理所当然的会认为效果会越堆越好。因为,假设一个比较浅的网络已经可以达到不错的效果,那么即使之后堆上去的网络什么也不做,模型的效果也不会变差。

然而事实上,这却是问题所在。“什么都不做”恰好是当前神经网络最难做到的东西之一。

为什么呢?其实是由于激活函数的存在,激活函数的作用是什么呢?就是让我们的线性模型变得可以拟合非线性。由于非线性激活函数Relu的存在,每次输入到输出的过程都几乎是不可逆的(信息损失)。我们很难从输出反推回完整的输入。

也许赋予神经网络无限可能性的“非线性”让神经网络模型走得太远,却也让它忘记了为什么出发。这也使得特征随着层层前向传播得到完整保留(什么也不做)的可能性都微乎其微。

ResNet的设计直觉是:

较深的网络模型的表现效果不应该比较浅的网络模型的表现效果要差,但是实际上这是建立在网络深度的加深是通过恒等的线性映射实现的,但是我们的网络由于有激活函数的存在,所以基本上是非线性映射,这样的话,就很难有恒等映射的情况出现。所以Residual Learning的初衷,其实是让模型的内部结构至少有恒等映射的能力。以保证在堆叠网络的过程中,网络至少不会因为继续堆叠而产生退化!

同时,ResNet可以看做是很多条路径的集合,通过研究ResNet的梯度流可以发现,网络在训练期间只有短路经才会产生梯度流,深的路径不是必须的。

实验证明,ResNet网络中的有效路径正是这些短的路径,且有效路径占总体路径的数量很少,加入训练中只保留有效路径的话,其在top5上的错误率几乎与整体是持平的。

所以Resnet不是通过让梯度流通整个网络深度来解决梯度消失的问题,而是通过引入能够在非常深的网络中传输梯度的短路径来缓解梯度消失的问题。

总的来说,ResNet就是通过假如short cut的结构改进了传统神经网络在随着网络深度加深时,梯度在逐层传播的过程中逐渐衰减的问题。

  • 4
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

旅途中的宽~

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值