residual block、bottleneck、skip connection……都是些什么?

  最近在看论文的时候,总是时不时会看到residual block、bottleneck、skip connection等术语,于是花了点时间找了几篇高质量的问答贴看了一下(链接附在本文末尾),并将一些比较重要的点在此记录一下。它们其实都和一篇卷积神经网络经典论文有关:Deep Residual Learning for Image Recognition,也就是大名鼎鼎的ResNet。
  residual block直译为残差块。在ResNet论文中,residual block有两种形式,一种叫BasicBlock,一种叫Bottleneck,如下图所示:
在这里插入图片描述
  其中,左图是BasicBlock,右图是Bottleneck。图中的⊕表示逐元素的加法,这就要求相加的两个张量维度必须完全一致。比如一个tensor A56×56×64与一个tensor B56×56×64相加,有A⊕B=C,得到的tensor C维度也是56×56×64。BasicBlock的输入和输出的维度是一样的,而Bottleneck结构通过1×1的卷积来进行升维/降维,其输出维度是输入维度的4倍。
  residual block与普通的Plain Net的区别就在于它多了一个skip connection(跳连接)的操作,也就是上图中主路右侧的弧线。使用skip connection可以有效减少梯度弥散(Gradient Vanishing)和网络模型退化的问题。因此,这种结构可以用来构建非常深的网络(关于skip connection的详细描述,可以参考这篇文章)。当去掉了这些skip connection之后,ResNet就与经典VGG网络的设计思路一样了,都是在间隔一定的层数之后,空间上/2(下采样)但深度翻倍。需要注意的是,深度上和空间上维度的升降是分开进行的。
  说到梯度弥散/消失,Batch Normalization(批标准化)就是一种常用的解决方法(关于Batch Normalization,可以参考Batch Normalization的通俗解释什么是批标准化 (Batch Normalization)谈一谈Skip Connection和Normalization)。那么,既然Batch Normalization也可以解决梯度消失问题,那为什么还要skip connection呢?这是因为,即使Batch Normalization过后梯度的模稳定在了正常范围内,但梯度的相关性实际上是随着层数增加持续衰减的。而经过证明,ResNet可以有效减少这种相关性的衰减。对于拥有L层的网络来说,没有残差表示的Plain Net梯度相关性的衰减系数为1/2L,而ResNet的衰减却只有1/√L。
  关于skip connection,还有一张更为形象生动的说明图,如下图所示。正常来说,梯度需要一层一层地往前传递,而由于前向传播过程中使用的激活函数使传递的信息带有损失,所以在回传过程中梯度也是会逐渐减小的(也就可能导致梯度消失)。而skip connection就像是直接又开了一个快车道,它可以直接把梯度回传到某个位置,这样回传梯度的损失也就减小了。
在这里插入图片描述
  除了上面对于skip connection的直观理解,这篇问答还提到了另外两种更为有说服力的看法:

  1. Feature Pyramid Network论文所述,跳连接相加可以实现不同分辨率特征的组合,因为浅层容易有高分辨率但是低级语义的特征,而深层的特征有高级语义,但分辨率就很低了。
  2. 引入跳接实际上让模型自身有了更加“灵活”的结构,即在训练过程本身,模型可以选择在每一个部分是“更多进行卷积与非线性变换”还是“更多倾向于什么都不做”,抑或是将两者结合。模型在训练便可以自适应本身的结构,这听起来是多么酷的一件事啊!

  skip connection的用法有很多,不仅仅局限于ResNet中在某个残差块内的连接,它还可以在不同的块之间,连接的间隔也可以是很多层,比如DenseNet。

  • 22
    点赞
  • 79
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

zeeq_

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值