ResNet解读和1×1卷积介绍

1、Introduction

  深度卷积网络好在哪里?

-----它可以加很多层,把网络变得很深,不同程度的层可以得到不同等级的特征。

 作者提出一个问题--一个网络只是简单的堆叠就好了嘛?

——不是,当网络变得很深的时候,梯度会出现爆炸或者消失。一个解决方法,初始化时设置一个合适的权重,不要太大也不要太小。又或者在中间加入normalization(包括BN),可以使得校验每个层之间的那些输出和它梯度的那些均值和方差。上述两个方法可以让网络收敛,但是网络变深后,性能会变差(不是过拟合造成的,因为训练误差和测试误差都会变得很差),所以现在网络虽然收敛了,但是不能得到一个好的效果。

考虑一个比较浅的网络版本和一个比较深的网络版本(所谓深的版本是在所说的浅的网络中多加一些层进去),作者说如果你的浅的网络效果还不错的话,理论上深的网络是不应该变差的,因为深的网络加的那些层,总是可以把那些层学的变成一个恒等映射(identity mapping)。实际上做不到,SGD找不到这样一个优解。

这篇文章提出了一个方法,使得显示的构造出一个 identity mapping,深的网络不会变得比浅的网络差。作者命名为deep residual learning framework 。

2、结构

X 为浅层网络的输出。如果我们想要得到的映射为H(X),则我们让添加的非线性网络层去拟合残差映射F(X):=H(X)-X。原始的映射就可以写成F(X)+X。

shortcut connection快捷连接通常会跳过 1 个或者多个层,在 ResNet 中快捷连接直接运用了 identity mapping,意思就是将一个卷积栈的输入直接与这个卷积栈的输出相加。

这样有什么好处呢?

  1. 并没有增加新的参数
  2. 整个网络也仍然可以由 SGD 进行训练。
  3. 容易被通用的神经网络框架实现。

F(X)和X直接相加,因此需要保证他们的维度一定要一样。

如何处理输入和输出不同形状的情况?

---第一种,在输入和输出上添加一些额外的零,使得这两个形状能够对应起来,然后可以相加。

--第二种,投影,使用一个1×1卷积调整通道,使得形状可以对应起来。(1×1卷积层特点--在空间维度上不做任何的东西,主要是在通道维度上做改变,选择一个1×1卷积使得输出通道是输入通道的两倍,这样就能将残差连接的输入和输出对应起来。在ResnNet里面,如果把输出通道数翻了两倍,那么输入的高和宽会减小一半,所以这里步幅设置为2,使在高宽和通道上都能匹配上)。第三种,所有连接都做投影。(这里在论文中有做实验比较三种处理方法的优劣)

各种层数的残差结构

残差网络结构(以34层为例)--VGG-19是浅层网络

 更深的残差网络结构(50层以上),结构有所不同,设计了一个bottleneck结构

 通道数为256时,变得很大,出现的问题是计算复杂度会很高,这里做法是通过1×1卷积投影映射回64维,再做一个3×3通道数不变的卷积,然后再通过1×1卷积投影回去256维,因为输入是256维u,输出要匹配上,这样设计之后复杂度就跟左图差不多了。

补充-关于1×1卷积

理解1×1卷积的作用_dxwell6的博客-CSDN博客_1×1卷积

1*1卷积核的作用_nefetaria的博客-CSDN博客_1*1卷积核的作用

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值