深度学习之 ResNet

1. Introduction

由于更深的网络表达能力更强,并且梯度消失和爆炸的问题已经被normalization很大程度上解决。
因此,考虑使用更深的网络。
但是,问题来了:
通过实验表明,更深的网络比浅层网络拥有更高的training error。training accuracy饱和后会迅速下降。
这里写图片描述
为了解决这个性能下降问题,本文提出一个新的网络-残差网络。

我们不直接对期望底层映射(desired underlying mapping)进行拟合,而是拟合一个残差映射(residual mapping)。

我们用H(x)表示期望底层映射残差映射为F(x),其中F(x)=H(x) - x.

所以原来的映射H(x) = F(x) + x

本文假设,优化F(x)比优化H(x)更容易。实验结果表明,确实极大改善。

2. Deep Residual Learning

2.1 Residual Learning

这里写图片描述
将H(x)定义为几个layers的output, 其中x是第一个layer的input

由于几个非线性层可以近似为一个复杂的函数,所以原先这个函数是H(x),现在我们让这个函数为一个残差函数F(x)。 所以原先的函数为F(x)+x.

也就是说,原先我们不断的迭代更新W,是为了正常输出H(x)。从而让整个网络(注意:不是这几层的output)的预测结果为我们期望的结果。
但是,由于学习残差映射更容易优化(能学到正确的参数),所以我们不断更新W,是为了输出一个合理的F(x),从而为最终整个网络的预测出期望的结果做贡献。
plain net(简单的堆叠layer)的缺点只是难优化(即得不到较好的参数)。

对于上图,F(x)与x的关系是:
这里写图片描述
sigma表示非线性函数,指ReLU。

令y为”+”号后的输出,则:
这里写图片描述
然后,将y进行ReLU操作。一切就和正常的网络操作一样了。

2.2 Network Architectures

网络结构由于太深,所以就不上图了。
放两个不同的block。
这里写图片描述

block与block之间如果channel不同,由上一个block得到的feature map需要增加channel。
两种方法:
(1) 直接补0,增加channel
(2)使用1x1的卷积,增加channel

猜你喜欢

转载自blog.csdn.net/LeeWanzhi/article/details/80340248
今日推荐