ResNet残差网络,想必大家一定很熟悉了,那么先考考大家,下面(1)-(5)的结构哪个是我们常用的ResNet结构?

其中weight指conv层,BN指Batch Normalization层,ReLU指激活层,addition指相加;

根据ResNet的描述,似乎以上五组都符合,那么2016年ResNet原文是哪一个结构呢?以及其他四组结构也都work么?我们不禁有了这两个疑问,伴随着疑问我们一一揭开谜题;

针对第一个问题,ResNet原文中使用的结构是(1),(1)的特点有两个:1)BN和ReLU在weight的后面;2)最后的ReLU在addition的后面;对于特点1),属于常规范畴,我们平时也都这个顺序:Conv->BN->ReLU;对于特点2),为什么ReLU放在addition后面呢?按照常规,不是应该是图(3)这种么,那么我们接下来引出的问题就是:

图(3)的结构work么?


对于每个图右侧部分我们称作“residual”分支,左侧部分我们称作“identity”分支,如果ReLU作为“residual”分支的结尾,我们不难发现“residual”分支的结果永远非负,这样前向的时候输入会单调递增,从而会影响特征的表达能力,所以我们希望“residual”分支的结果应该在(-
∞∞, +∞∞);这点也是我们以后设计网络时所要注意的。

对于图(3)不OK的情况,那如果把BN也挪到addition后面呢?如图(2),同时也保证了“residual”分支的取值范围;

这里BN改变了“identity”分支的分布,影响了信息的传递,在训练的时候会阻碍loss的下降;这里大家肯定又有个问题:

为什么“identity”分支发生变化,会影响信息传递,从而影响训练呢?

这里简单回顾ResNet的公式:
yl=h(xl)+F(xl,Wl)yl=h(xl)+F(xl,Wl) and xl+1=f(yl)xl+1=f(yl)
简化以上公式,令所有“identity”分支都是h(xl)=xlh(xl)=xl以及xl+1=ylxl+1=yl,那么得到:
xl+1=xl+F(xl,Wl)xl+1=xl+F(xl,Wl)
我们递归的计算:
(xl+2=xl+1+F(xl+1,Wl+1)=xl+F(xl,Wl)+F(xl+1,Wl+1)xl+2=xl+1+F(xl+1,Wl+1)=xl+F(xl
,Wl)+F(xl+1,Wl+1))
xL=xl+∑L−1i=lF(xi,Wi)xL=xl+∑i=lL−1F(xi,Wi) —— (1)
公式(1),表达了任何第L层(深层)与第l层(浅层)之间关系;假设损失函数为loss,那么反向传播公式为:
∂loss∂xl=∂loss∂xL∂xL∂xl=∂loss∂xL(1+∂∂xl∑L−1i=lF(xi,Wi))∂loss∂xl=∂loss∂xL∂xL∂xl=
∂loss∂xL(1+∂∂xl∑i=lL−1F(xi,Wi))
这个反向传播公式有几个特点:(1)关于xlxl的梯度信息与两部分值有关:xLxL的梯度值,也就是说两层之间梯度信息无障碍传递了,以及∂loss∂xL∂∂xl
∑L−1i=lF(xi,Wi))∂loss∂xL∂∂xl∑i=lL−1F(xi,Wi)); (2)∂loss∂xl∂loss∂xl
的值不会轻易抵消因为在一个mini-batch中,∂∂xl∑L−1i=lF(xi,Wi))∂∂xl∑i=lL−1F(xi,Wi))
不会一直为-1;(3)有效的防止了当权重很小时,梯度消失的问题。
以上优秀的特点只有在假设h(xl)=xlh(xl)=xl以及xl+1=ylxl+1=yl
成立时才有效,所以ResNet要尽量保证两点:1)不轻易改变”identity“分支的值,也就是输入与输出一致;2)addition之后不再接改变信息分布的层;
到此也就彻底回答了图(2)的结构为何会阻碍反向传播时的信息。


在分析图(4)和图(5)之前,我们引出一个概念:”Post-activation”和”Pre-activation”,其中Post和Pre的概念是相对于weight(conv)层来说的,那么我们不难发现,图(1),
(2), (3)都是”Post-activation”,图(4),
(5)都是”Pre-activation”,那么两种模式哪一个更好呢?这里我们就用实验结果说话。


上图是5种结构在Cifar10上的实验结果,一共实验了两种网络ResNet110和ResNet164(注:这里直接摘抄了原文的图片,本人并没有真实的试验过);

从实验结果上,我们可以发现图(4)的结构与ResNet原结构伯仲之间,稍稍逊色,然而图(5)的结构却好于ResNet原结构。图5的结构好的原因在于两点:1)反向传播基本符合假设,信息传递无阻碍;2)BN层作为pre-activation,起到了正则化的作用;

最后我们通常把图5的结构称作ResNetV2,这里我们把ResNetV1和ResNetV2结构再次show:

友情链接
KaDraw流程图
API参考文档
OK工具箱
云服务器优惠
阿里云优惠券
腾讯云优惠券
华为云优惠券
站点信息
问题反馈
邮箱:ixiaoyang8@qq.com
QQ群:637538335
关注微信