本文主要是介绍2015年ImageNet ILSVRC冠军论文学习 - ResNet,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
ResNet
Residual Network(ResNet)获得了2015 ILSVRC的冠军。它的特点是大量使用了Identify mapping(一致变换),使得网络更容易学习。ResNet在网络的末端使用avg pool代替前两个全连接层。
1. 基本思想
从AlexNet到GoogleNet,VGGNet,可以看到越深的网络表达能力越好。但是,随着网络的加深,我们观察到模型的准确性首先会逐渐上升,然后会保持平稳,接着会大幅度的降低。这是什么原因导致的呢?
相关研究表明这种情况不是由于过拟合造成的,并且网络过深时会导致训练误差也跟着增大,如图1所示。造成这种情况的原因是由于网络越深越复杂,越难学习。
很自然的想法是,如果向现有的较浅的网络中追加Identity Mapping(一致变换)层,使得网络变得更深。由于H(x)是一致变换,满足H(x)=x,即:函数的输出等于输入。因此,在增加深度的同时,至少可以保证新追加的层能够保持原有结构的准确性。下图2描述了ResNet的核心思想。
设我们引入的Identity Mapping层所学到的一致映射函数为:H(x),那么我们的目标是使得H(x)尽可能的接近x。设残差F(x)代表学得的函数H(x)与输入x的之间的误差,则F(x):=H(x)-x。通过移项可得:H(x) := x+F(x)。
由于直接学习H(x)是困难的,因此我们将其转换为对残差F(x)的学习,进而间接求得H(x)。这样,通过引入残差,降低了求解H(x)的学习的难度,就出现了如上图所示的Residual block的结构。上图中,在前向传播过程中x的传播使用了短路连接,即:跨越了与其直连的一层或多层,直接与更后面的层连接。令非短路的连接的层去拟合残差F(x),进而降低了求解难度。因为引入了残差的概念,故而ResNet又叫做残差网络。
如果通过残差F(x)求得的H(x)是最优的,那么H(x)是一致映射,新添加的一致映射层不会对原来的网络带来任何影响。但是实际求解的过程中,很难学到最优的H(x),这也使得网络的深度增加确实能够引入新的变换,使得网络真的“变深”了。
论文使用的一种residual module结构为:conv->relu->conv;其数学公式为:,其中代表relu;其短路连接就可写成:F(x)+x。可以看到,短路连接并没有引入新的参数,也没有增加计算的复杂度。这对于后续与普通网络的对比至关重要,即:对比同样深度、宽度及参数个数的普通网络以及残差网络的performance进行比较。
2. 网络结构
图4给出了论文中对比的部分网络结构。从左到右依次为:VGG-19,普通网络(使用avg pool替代前两个FC),34-layer的残差网络(使用avg pool替代前两个FC)。
Figure 4:部分实验对比的网络结构,从左到右:VGG-19,普通网络(使用avg pool替代前两个FC),34-layer的残差网络(使用avg pool替代前两个FC)。 |
ResNet中使用的残差模块通常有两种,一种是以两个3*3的卷积网络串接在一起作为一个残差模块,另外一种是1*1、3*3、1*1的3个卷积网络串接在一起作为一个残差模块,如图5所示:
ResNet有不同的网络层数,比较常用的是50-layer,101-layer和152-layer,他们都是由上述的残差模块堆叠在一起实现的。具体结构如下表:
3. References
- ResNet原文链接:https://arxiv.org/pdf/1512.03385.pdf
- Batch Normalization论文链接:https://arxiv.org/pdf/1502.03167.pdf
- ResNet优化 Identity Mappings in Deep Residual Networks论文:https://arxiv.org/pdf/1603.05027.pdf
这篇关于2015年ImageNet ILSVRC冠军论文学习 - ResNet的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!