ResNet深度残差网络

ResNet

论文:“Deep Residual Learning for Image Recognition”

面临的问题

ResNet解决的是深度神经网络的“退化”(degradation)问题。对于卷积神经网络,网络的深度对于最终网络的表现性能至关重要,从vgg、GoogLeNet等网络就可以看出。然而随着网络层数的加深,会出现许多问题:梯度消失、梯度爆炸、过拟合以及退化。梯度消失、梯度爆炸的问题通过权重初始化和引入Batch Normalization来解决。过拟合也可以通过引入dropout来解决。但是Batch Normalization和Dropout不能同时使用

退化是指网络整体的性能下降,无论是在训练集还是在测试集上的水平都下降。

在这里插入图片描述

残差块(Residual Block)

设潜在需要学习到的映射为 H ( x ) H(x) H(x) 。对于一般的神经网络,都是让神经元 F ( x ) F(x) F(x)直接学习潜在的映射 H ( x ) H(x) H(x)。 而ResNet是让 F ( x ) F(x) F(x)去学习残差 H ( x ) − x H(x)-x H(x)x 。用 F ( x ) + x F(x)+x F(x)+x 来拟合 H ( x ) H(x) H(x)

比如需要学习的潜在映射 H ( x ) H(x) H(x) 本身就是一个恒等映射(identity mapping),那么让 F ( x ) F(x) F(x) 学习残差优化得到0,比直接让 F ( x ) F(x) F(x) 学习恒等映射简单得多。

这样后面层的表现至少不会比之前层的差。

在这里插入图片描述

在具体实现上,使用的是上图的结构。 F ( x ) + x F(x)+x F(x)+x 构成的block成为Residual Block,即残差块。 一个残差块有两条路径, F ( x ) F(x) F(x) x x x x x x 是恒等映射,成为**“shortcut connections”**。 F ( x ) F(x) F(x) 路径拟合残差。两条路径的结果相加(element-wise addition)之后进行激活。shortcut connections没有需要学习的参数。用数学公式描述就是:
F ( x ) = W 2 σ ( W 1 x ) F(x)=W_2\sigma(W_1x) F(x)=W2σ(W1x)
两条路径相加时需要维度相同。如果 F ( x ) F(x) F(x) 这一路有下采样层导致维度不等,则可以给shortcut connections这一路进行线性变换
y = F ( x , { W i } ) + W s x y=F(x,\{W_i\})+W_sx y=F(x,{Wi})+Wsx

这里 W s W_s Ws 也可以用在维度相同时的情况,但"Identity Mapping in Deep Residual Networks"文中指出恒等映射效果最好。

实现

论文中对比了两种网络:Plain Network和Residual Network。

在这里插入图片描述

Plain Network

Plain Network主要仿照VGG网络设计,除了第一层,其他所有曾都使用最多 3 × 3 3\times3 3×3卷积,并且遵循两条简单的设计规则:

  • 输入输出通道数相同的,卷积核数量与特征图的通道数相同。
  • 当特征图的通道数减半时,卷积核数量翻倍。

直接通过将卷积层的 stride 设为2来进行下采样,并且结束时使用全局均值池化(GAP)层加1000的全连接层最后跟随一个softmax层。

这个Plain Network总共有34层,但只有VGG-19运算量的18%。

在每个卷积层之后,激活之前使用BN层。

Residual Network

在Plain Network的基础上加入shortcut connections。图中实线表示的是两条路维度相等。虚线表示的是两条路维度不相等。对于不相等的情况有两种方法:

  • 将多的通道置零,直接相加
  • 使用 1 × 1 1\times1 1×1 卷积进行升维

在每个卷积层之后,激活之前使用BN层。

在此之外,实验阶段还训练了一个18层的网络。

实验

使用ImageNet数据集对18层、34层、ResNet-34进行训练,发现34层网络无论是训练误差还是测试误差都高于18层的网络。

在这里插入图片描述
在这里插入图片描述

在给34层的网络加上残差的 shortcut connections之后,34层模型的效果则会优于18层的网络。(升维时使用zero padding

除此之外,还发现了残差的结构可以加快收敛速度

结论:

  • 带残差的比不带残差的网络效果好
  • 带残差的深度网络比浅层网络效果好
  • 带残差可以加快收敛速度
  • 使用 1 × 1 1\times1 1×1 卷积效果比zero padding效果好,但参数多

对于更深层的残差网络,为了减少计算量,可以改用 Bottleneck Architectures ,如下图所示

在这里插入图片描述

类似于GoogLeNet的Inception结构,在 3 × 3 3\times3 3×3 卷积前后使用 1 × 1 1\times1 1×1 卷积进行降维和升维。

ResNet-50(升维时projection)、ResNet-101、ResNet-152都使用了Bottleneck Architectures。对于152层的网络,尽管层数增加了很多,但是计算量仍然小于 VGG-16/19。

层数计算时只算带学习参数的层

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值