Residual Connections Encourage Iterative Inference理解及思考

这篇文章是Facebook研究团队在2018年ICLR上的orals论文,对残差网络进行了一定的解读。

摘要

残差网络(Resnets)已成为深度学习中的一个主流架构。但是,对Resnets的全面了解仍然是一个待解决的问题。最近的观点认为Resnets能进行特征的迭代微调。我们试图进一步揭示这方面的属性。为此,我们通过理论分析和实验来解决问题。我们证明了,从一个残差块到另一个残差块,残差连接会自然地促使残差块的特征沿着损失梯度的负方向移动,形式化了Resnets中迭代微调的概念。此外,我们的实证分析表明,Resnets能够执行表示学习和迭代微调。一般来说,在最初的几层里残差块倾向专注于表示学习,在更高层里进行特征的迭代微调。最后我们观察到简单的共享残差层会导致表示爆炸,并且违反直觉,过度拟合,我们找到了策略可以帮助缓解这个问题。

introduction

Veit等人在2016年发现去除单个残余块或混洗相邻块,Resnets的性能基本不受影响。 Resnets的这些属性源于残差块对特征的变换是“累加的”而不是像传统网络那样是“组合的”。 这种累加框架以及上述属性引起了对Resnets的两种思考:组合观点认为Resnets是在学习较浅网络的指数级集合,展开的迭代估计观点认为Resnet层在迭代地改进表示而不是学习新的表示。Resnets的成功可能部分归功于这两种观点,但本文的工作从迭代特征微调角度来深入地理解Resnets。 我们的贡献如下:
1、从一个残差块到另一个残差块,残差连接会自然地促使残差块的特征沿着损失梯度的负方向移动。
2、本文实验观察到Resnet块可以执行分层表示学习(每个块发现不同的表示)和迭代特征微调(其中每个块略有改进但保留了前一层表示的语义)。特别是在Resnets中,较低层的残差块学习执行表示学习,这意味着它们会显著地改变表示,删除这些块有时会极大的损害预测性能。 另一方面,较高层的块基本上学习执行迭代推理 - 通过沿损失的梯度的负方向移动隐藏表示来最小化损失函数。 在存在shortcut连接(何凯文最初提出残差网络时用的结构,三阶段的残差块间有卷积层)的情况下,表示学习主要由shortcut连接层执行,而大多数残差块倾向于迭代的微调表示。
3、可以对残差网络进行参数共享

对上述三问题的解决

一、形式化特征微调

1、利用taylor展开的分析:

对某一个残差块的输入到输出,用数学公式描述就是:
在这里插入图片描述
用L表示损失函数,然后进行一阶taylor展开
在这里插入图片描述
在这里插入图片描述
公式上反映出网络逐层的调整特征也就是在缩小残差输出与损失梯度的内积值。同过验证余弦值的正负,就能判断出两者的方向。

2、实验验证

在这里插入图片描述
注:本文使用了四种网络结构,第一种是何凯文最初提出残差结构时使用的结构,33卷积16核——>16残差块,16核——>卷积层——>16残差块,32核——>卷积层——>16残差块,64核;第二种:33卷积100核——>10残差块,100核;第三种:33卷积100核——>10残差块,100核——>22平均池化——>10残差块,100核——>22平均池化——>10残差块,100核;第四种:33卷积——>4残差块,160核——>4残差块,320核——>4残差块,640核
每一个残差块是:BN->Relu->Conv->BN->Relu->Conv

可见训练过程中,余弦值一直小于0,说明两者互成反方向,证明了结论。

二、残差块的学习与微调

1、不同层残差块的作用

本文提出使用
在这里插入图片描述
作为衡量的标准。比值大说明残差块对原始输入做了较大的调整,也即是学习了较多的特征;比值小就说明残差块只是在做微调。
在这里插入图片描述
可以看到比值大体上是在逐层减小,说明底层承担学习任务,高层承担微调任务。第一个图中,因为有卷积层的存在,学习任务被它们分担了(图三说明池化是起不了学习作用的)。

2、丢弃单个残差块对网络性能的影响:

先在相同数据集上训练好这4种网络,然后丢掉单个的残差块在测试集上验证它们的性能。
在这里插入图片描述
可以看到图3基本与图2相对应,丢弃掉学习特征的层会对性能有较大的影响,丢掉微调层则不会。

三、参数共享

既然高层的残差块作用相同,都是在进行特征微调,并且整个特征学习是累加框架,那么自然就联想到对高层的参数进行共享。
在这里插入图片描述
但是简单的进行参数共享,不出意外的出现了过拟合、梯度爆炸等问题。本文给出的方法是万能的BN:初始化r=0.1,不共享r和B。
在这里插入图片描述
在这里插入图片描述
可以看到UBN参数共享的Resnets,精度略有减少,但是参数量减少了3—4倍。

总结

Resnets是deeplearning中一个里程碑式的发展,它的出现让网络可以做深直接提升了性能。
1、从学习过程讲,附加的一个参数连接,在梯度反向传播的过程中始终有一个“1”,保证了梯度不会消失,让深成为可能。
2、从函数逼近的角度说,最初的逼近对精度提升是最大的, 后面的逼近都是在之前的基础上做调整,跟方程迭代求解是一个道理,这点可以理解残差块的学习行为。
3、“微调”本质使得残差结构相比于普通网络更加符合学习逻辑。
4、“微调”所得的一点点不同,正是大数据下找对象的唯一特征所需的

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值