[论文理解]关于ResNet的理解

这两天回忆起resnet,感觉残差结构还是不怎么理解(可能当时理解了,时间长了忘了吧),重新梳理一下两点,关于resnet结构的思考。

要解决什么问题

论文的一大贡献就是,证明了即使是深度网络,也可以通过训练达到很好的效果,这跟以往的经验不同,以往由于网络层数的加深,会出现梯度消失的现象。这是因为,在梯度反传的时候,由于层数太深,传递过程又是乘法传递,所以梯度值会越乘越小,梯度消失在所难免。那么怎么才能解决这个问题呢?resnet提供了很好的思路。

怎么解决

从梯度角度

这里一个block的输出变为了常规层的卷积池化加上输入,然后在激活,那么这个结构为什么可以保证深度网络能够收敛呢?

只由这么一个block其实很难看出来,只有在多个block下,才能看出他的优势。看下面的公式。

 

对于非残差结构:y1=G(F(x,w1))y1最为下一层的输入带入有y2=G(F(y1,w2))那么我们在对w1求梯度的时候呢,根据链式法则dy2dw1=dy2dF∗dFdy1∗dy1dF∗dFdw1全是乘法,所以层数过多就很容易越乘越小。再看看残差结构:y1=G(x+F(x,w1))y2=G(y1+F(y1,w2))链式求导则得到dy2dw1=dy2dy1∗dy1dF∗dFdw1+dy2dF∗dFdy1∗dy1dF∗dFdw1可以看到,残差网络的梯度在原来的基础上加上了当前输入项的梯度这样梯度的贡献就由两部分组成,一部分是可以直接回传,另一部分先经过常规操作回传,梯度变为求和项,这样由于在离出层比较近的地方梯度比较大求和之后可以避免深度乘法对梯度的影响,即尽管后面越乘越小,对总梯度的影响也不大。对于非残差结构:y1=G(F(x,w1))y1最为下一层的输入带入有y2=G(F(y1,w2))那么我们在对w1求梯度的时候呢,根据链式法则dy2dw1=dy2dF∗dFdy1∗dy1dF∗dFdw1全是乘法,所以层数过多就很容易越乘越小。再看看残差结构:y1=G(x+F(x,w1))y2=G(y1+F(y1,w2))链式求导则得到dy2dw1=dy2dy1∗dy1dF∗dFdw1+dy2dF∗dFdy1∗dy1dF∗dFdw1可以看到,残差网络的梯度在原来的基础上加上了当前输入项的梯度这样梯度的贡献就由两部分组成,一部分是可以直接回传,另一部分先经过常规操作回传,梯度变为求和项,这样由于在离出层比较近的地方梯度比较大求和之后可以避免深度乘法对梯度的影响,即尽管后面越乘越小,对总梯度的影响也不大。

从映射角度

从映射角度上来讲,resnet残差结构有助于学习恒等映射,就论文中所说,多层非线性网络是很难逼近恒等映射的,所以网络在学习过程中学习的实际上是残差函数F(x) - x,而当F(x)趋近于0时,那么就可以逼近恒等映射,完成一个skip connection,通俗地讲,就是resnet提供了两种选择,在需要的时候,可以直接跳过一些多余的卷积池化等操作,直接向后传递信息,这就是恒等映射,也可以两路传达信息,传达上一层的原始信息和加工过的信息。

所以我认为,resnet的结构使得网络有了逼近恒等映射的能力,解决了网络传播过程中信息丢失的问题,因此可以表现的这么好。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值