论文 Deep Residual Learning for Image Recognition
简述:
本文分析了残差块后面的传播形式,表明当使用恒等映射作为skip connections(跳跃连接)和after-addition activation(可以理解为相加在激活之后)时,正向和反向信号可以直接从一个块传播到任何其他块。并提出了一种新的残差单元,使网络训练更加简单且具有很强的泛化能力。
注: 本文经过一些列的讨论,得出性能最好的残差块,个人认为不能只记结论,作者分析的思路也是很有必要学习的,所以写的相对详细。
ResNet回顾or相关工作:
在ResNet-V1的论文中,残差块可由下面公式表示:
其中xl和xl+1分别是第l层的输入和输出,h(xl)=xl是恒等映射,F是残差函数,f是ReLU激活函数。作者推导证明:如果h(xl)和f(xl)都是恒等映射的话,无论前向传播or反向传播,信号能直接从一个残差块传递到任意一个残差块。
作者将将激活函数(ReLU和BN)视为权重层的预激活(上图b),而不是传统(ResNet-V1)中后激活(上图a)。通过左图可以发现,现在提出的结构无论TestError(实线)or Training Loss(虚线)都表现出了更好地性能。传播速度快且也能够防止梯度消失。
ResNet分析:
对于上面的公式(1)(2),h(xl)=xl是恒等映射,假设激活函数f也是恒等映射,那么将(2)代入(1)可得:
递归可得:
由(4)可以看出:a).任何深层的残差单元L,都可以由“浅层的l到L中间的残差和”表示。b).任意的深层L,都是前面残差项之和。而在ResNet-v1中,可看成是矩阵相乘。
对损失函数(ε)求导:
可知:∂ε/(∂x_L )不涉及任何权重层,确保信息能被直接的传播回任何较浅的单位l层,(1+∂/(∂x_l ) ∑_(i=l)^(L-1)▒〖F(x_i,W_i)〗)通过权重传播,后面作和不会始终为-1,即无论权重任意小,梯度也不会消失。
随后作者假设h(x)不是恒等映射,在恒等变换的基础上成了一个λ,则XL:
求导得:
可以看出,加法项引入了∏_(i=l)^(L-1)▒λ_i ,当λ>1,会出现梯度爆炸,当λ<1可能出现梯度消失。这使得系统很难优化。
Shortcut的几种结构&实验:
由上面结果可以看出,对于error(%),原残差结构(恒等映射)表现最好,其他残差网络结构效果较差,甚至不收敛。在使用Exclusive gating,偏见bg的初始化对网络的性能影响很大,在bg=-6的时候错误率最低8.7。但是对于Shortcut-only gating和1×1 convolutional shortcut,其残差块结构的网络应该是包含了原始网络(original)的解空间的,即两者的表示能力要比original网络强,但结果精度却不高,更说明了其模型难以优化。在看看作者提供的训练曲线,如下:
曲线实线是test error,虚线是training loss,可以看出,上面四种网络的训练误差都比原始的要高,图(a)说明在缩小捷径信号时(Constant scaling),优化存在困难。其余三个网络的误差率较高,原因也是由于较高的training loss导致的。
激活函数使用对网络的影响:
几个残差块示意图(相同组件,顺序不同):
上图中(a)为原始的网络结构,接下来分析让激活函数成为一个恒等映射,这需要重新排列激活函数(ReLU和/或BN)。作者同时给出了各结构的实验结果:
- BN after addition:图(b),效果比基准差,其改变了通过捷径的信号,阻碍了信息的传播。并且看下图可知,模型的收敛速度更慢。
- ReLU before addition:图(c),ReLU的值域为[0,+∞],将导致转换F的非负输出,而我们希望残差函数输出为[-∞,+∞],即该模型表达能力受抑制。上表实验结果也比基准差。
- ReLU-only pre-activation or full pre-activation:图(d)or图(e),将激活函数放在最终的输出之前,即在获取输入后先对输入进行激活,然后再将激活值归一化,再与权重层相乘,最后输出。可以看出d和e区别在于BN层的位置,有上表(Table 2)可知,只将ReLU放在权重层之前的结构与原始的网络表现类似;而将BN也放在权重层之前的结构的性能则得到了大幅提高。
先激活的模型性能更好的原因:
- 先激活的网络中f是恒等变换,信号可以直接在任意两个单元之间传播。,这使得模型优化更加容易(Ease of optimization)。
可以看出来,原设计,在训练开始时,训练误差降低得很慢;先激活网络非常快地降低了训练损失它达到了最小的损失,优化是成功的。 - BN作为预激活增强了模型的正则化,且先激活输入网络,能够减少网络过拟合(Reducing overfitting)。
预激活算法收敛时训练损失略高,但测试误差较小。在原始残差单元中(图(a)),BN虽然对信号进行了归一化,但这很快被添加到快捷方式中,因此合并后的信号没有归一化。然后使用这个未归一化的信号作为下一个权值层的输入。相反,在预激活版本中,所有权重层的输入都已标准化。
总结:
本文研究了深剩余网络连接机制背后的传播公式。恒等映射和其背后加激活是使信息传播顺畅的必要条件,且1000层的深层网络,可以很容易地训练和提高精度。