ResNet

一、背景介绍

  随着层数的堆叠,网络的深度会不断增加,特征的level也会提升,很多CV方向的任务也因此取得更好的成绩。但是,一个问题随之出现:通过层数堆叠不断加深网络的同时,可以学习到更好的网络吗?答案是否定的,梯度消失/爆炸是最大的阻碍。不过随着normalized initializationBatch normalizaiton的应用,很大程度上已经解决了这个问题。

  但是退化问题degradation)依然没有解决:随着网络的加深,网络的精度会饱和,甚至会下降。这也不是过拟合,因为随着深度增加,训练误差会上升。退化问题显然是不符合常理的,举个例子,假设我们现在有一个浅层网络,以及一个在它的基础上无脑堆叠了一些恒等映射identity mapping F ( x ) = x F(x) = x F(x)=x)的深度网络,那么对于同一输入后者的训练误差不会比前者更差。而实际上当时已有网络的效果却比不上它。换句话说就是,从某一层开始,我对输入什么都不处理,都比你花里胡哨地加一堆东西强。

  这反映出的问题是:已有的神经网络或许因为非线性层的原因难以拟合恒等映射。因此,可以认为Residual Learning的初衷,其实是让模型的内部结构至少有恒等映射的能力。以保证在堆叠网络的过程中,网络至少不会因为继续堆叠而产生退化!

二、思路提出

  在作者们研究了前人的工作如VLADhighway network之后,发现residual representationsshortcut connection这两种理论的效果不错,鉴于此提出了Deep Residual Learning的概念:既然没办法拟合恒等映射,那就改为拟合残差,而且拟合残差更容易优化。

  原本神经网络的目的是拟合一个输入到输出的未知映射 H ( x ) H(x) H(x),现在重构 H ( x ) = F ( x ) + x H(x) = F(x) + x H(x)=F(x)+x,那么现在实质上就是要学习残差函数 F ( x ) = H ( x ) − x F(x) = H(x) - x F(x)=H(x)x,即输入减输出。如果真的需要拟合恒等映射,那么只需要将各层的权重置零,从而使得残差为零即可。
.
  实现方案如图所示,这是ResNet的核心架构shortcut connecion,在激活函数之前将前几层的输入与本层的输出相加,用公式表示就是: y = F ( x , { W i } ) + x y = F(x, \left\{ W_i\right\}) + x y=F(x,{ Wi})+x F ( x , { W i } ) F(x, \left\{ W_i\right\}) F(x,{ Wi})可以是全连接,也就是卷积层。像图上这样有两层的Residual Block,应该表示为:
F = W 2 σ ( W 1 x ) F = W_2\sigma(W_1x) F=W2σ(W1x)

其中, σ

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值