1. 简介
2. 笔记
2.1 网络深度的重要性
已经有一些论文证明,神经网络的深度(层数),能够在一定程度上提升模型的性能。
2.2 梯度的消失/爆炸(vanishing/exposing)问题:
通过规则化初始值和中间层规则化(Batch Normalization)来解决。由此,我们可以训练很深的网络。
2.3 退化问题
虽然上面的问题解决了,新的问题出现了:训练数据集准确率(train accuracy)的degradation。值得注意的是,这种退化不是由overfitting造成的,因为overfitting的话,训练集的表现应该更好。解决方案:残差
2.4 残差(residual)结构
为了解决上述问题,我们提出残差(residual)结构。该结构的核心是添加恒等映射(identity mapping)。
假设我们要学习的映射为H(x),通过residual结构(shortcut connection),我们使
H(x)=F(x)+x
H
(
x
)
=
F
(
x
)
+
x
。此时,网络需要学习的是映射F(x)。我们假设这种学习会更加简单。为什么?如果我们要学习的就是恒等映射,前者需要用堆叠的非线性网络层学习
H(x)=x
H
(
x
)
=
x
,后者只需把F(x)置零。后者会相对容易些。或者当我们要学习的映射接近于恒等映射时,若x不为0,学习干扰项F(x)会比直接学习恒等映射更容易。(从实验结果看,学习好的resnet有着比较小的激活值和参数,这说明我们学习的映射接近于identity mapping。)
另外,这种shortcut connection可以很容易地和原来一样用SGD学习,并且几乎不增加计算复杂度和参数数量。如上图所示,在每个shortcut connection之间会添加2-3个卷积层,除了最后一层卷积层,其他卷积层后都跟着BN,RELU。最后一层是在与X连接(element-wise addition)之后再使用BN,RELU。包含两层卷积的shortcut可以表示成:
2.4.1 shortcut连接方式
shortcut连接是element-wise addition,这要求X和F(X)必须是相同size的。所以,当X和F(X)是不等size的时候,我们进行三种方式的处理:
- A方式:使用0填充
- B方式:对X进行projection变换: y=F(X,{Wi})+WsX y = F ( X , { W i } ) + W s X ,这里的 Ws W s 通过1x1的卷积实现。1x1
- C方式:所有的X都用shortcut
上图展示了部分vgg,深层plain结构和深层redisual结构的区别。
如下图实验结果证明:
1)residual结构很好地解决了训练集准确率的degradation问题
2)34层的residual结构比34层的plain结构效果更好
3)18层的residual结构比18层的plain结构更快收敛
其他参考链接:
- 残差网络ResNet笔记