ResNet学习笔记

ResNet的提出

随着网络的加深,出现了训练集准确率下降的现象,我们可以确定这不是由于Overfit过拟合造成的(因为过拟合的情况训练集应该准确率很高),对于这种深度网络的退化问题,限制了模型的深度。ResNet的出现解决了这一问题(对于是否解决了,也有人提出质疑),因此是继AlexNet之后的有一个里程碑。

作者针对这个问题提出了一种全新的网络,叫深度残差网络,它允许网络尽可能的加深,其中引入了全新的结构如图1; 

                                                    

设想如果深层网络的后面那些层是恒等映射,那么模型就退化为一个浅层网络。那现在要解决的就是学习恒等映射函数了。但直接让一些层去拟合一个潜在的恒等映射函数H(x) = x,比较困难,这可能就是深层网络难以训练的原因。但是,如果把网络设计为H(x) = F(x) + x,如下图。我们可以转换为学习一个残差函数F(x) = H(x) - x. 只要F(x)=0,就构成了一个恒等映射H(x) = x. 而且,拟合残差肯定更加容易。

ResNet的核心思想是:计算层到层的残差,即F(x),以F(x)+x作为输出。

正是由于多了这条捷径,来自深层的梯度能直接畅通无阻地通过,去到上一层,使得浅层的网络层参数等到有效的训练!

之后开发了ResNet34,ResNet50,ResNet101,ResNet152等一系列网络结构。

preview


数学角度分析

从数学的角度来分析这个问题,首先残差单元可以表示为:

\begin{align} & {​{y}_{l}}=h({​{x}_{l}})+F({​{x}_{l}},{​{W}_{l}}) \\ & {​{x}_{l+1}}=f({​{y}_{l}}) \\ \end{align}

其中 x_{l}x_{l+1} 分别表示的是第 l 个残差单元的输入和输出,注意每个残差单元一般包含多层结构。 F 是残差函数,表示学习到的残差,而 h(x_{l})=x_{l} 表示恒等映射, f 是ReLU激活函数。基于上式,我们求得从浅层 l 到深层 L 的学习特征为:

{​{x}_{L}}={​{x}_{l}}+\sum\limits_{i=l}^{L-1}{F({​{x}_{i}}},{​{W}_{i}})

利用链式规则,可以求得反向过程的梯度:

\frac{\partial loss}{\partial {​{x}_{l}}}=\frac{\partial loss}{\partial {​{x}_{L}}}\cdot \frac{\partial {​{x}_{L}}}{\partial {​{x}_{l}}}=\frac{\partial loss}{\partial {​{x}_{L}}}\cdot \left( 1+\frac{\partial }{\partial {​{x}_{L}}}\sum\limits_{i=l}^{L-1}{F({​{x}_{i}},{​{W}_{i}})} \right)

式子的第一个因子 \frac{\partial loss}{\partial {​{x}_{L}}} 表示的损失函数到达 L 的梯度,小括号中的1表明短路机制可以将深处的梯度无损地传播到上一层,而另外一项残差梯度则需要经过带有weights的层。但是经过卷积层的梯度在往底层反向传递时,往往回发生梯度弥散,梯度会变的很小,导致底层的权重参数得不到很好地训练。有1的存在不会导致梯度消失。所以残差学习会更容易。


对ResNet的另类解读

基本的残差网络其实可以从另一个角度来理解,这是从另一篇论文里看到的,如下图所示: 
这里写图片描述 
残差网络单元其中可以分解成右图的形式,从图中可以看出,残差网络其实是由多种路径组合的一个网络,直白了说,残差网络其实是很多并行子网络的组合,整个残差网络其实相当于一个多人投票系统(Ensembling)。

ResNet的真面目

ResNet的确可以做到很深,但是从上面的介绍可以看出,网络很深的路径其实很少,大部分的网络路径其实都集中在中间的路径长度上,如下图所示: 
这里写图片描述 
从这可以看出其实ResNet是由大多数中度网络和一小部分浅度网络和深度网络组成的,说明虽然表面上ResNet网络很深,但是其实起实际作用的网络层数并没有很深

详情请看论文 Residual Networks Behave Like Ensembles ofRelatively Shallow Networks

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值