CV脱坑指南(一): ResNet重难点理解

先spoil一下= = 其实并不是一篇resnet科普文,只是解惑一些我认为的重难点的部分~

所以这篇文的观众姥爷群体是看了paper或了解resnet但是对于一些重难点有疑问的选手

让我美东第一安琪拉带带你们!(虚实

 

词汇理解

res代表residual 意为残差,理解为剩余也可以

目的

其实ResNet的目的很单纯,就是解决degradation problem。degradation问题,它与overfitting,梯度消失和梯度爆炸没什么直接的联系。

degradation的表现:“深度越深,accuracy越饱和“

degradation的内核:深度学习最难的问题之一,就是怎么让网络什么都不做(或者可以理解为在optimal solution的时候选择不干预的继续)

解决方案

identity mapping。每一个block在得到一个输入x时,都precondition on x,思考“我现在已经有了x,我要再动用剩下的map(也就是residual)作为添加效果呢,还是这个x已经很不错了,我剩下的(residual)什么都不用做,直接传个zero就好“

公式是杰样子的:

嗯长得好看的都能看出来,左边这一部分就是上文所说的“剩下的”(residual)加成,右边就是我们的输入x,也就是上一层的输出,在paper中被称为short cut或highway。

CV脱坑指南(一): ResNet重难点理解_第1张图片

shortcut的具体执行方式: Identity vs. Projection Shortcuts

我们先看一段摘自paper中,对于shortcut几种执行方式的描述

 

我们可以把它简单的归类为两种shortcut: identity和projection

(1)identity shortcut: 一种不需要extra parameters的shortcut

(2)projection shortcut: 一种需要extra parameters的shortcut

有的人可能开始叫嚣了: 你这算哪门子解释? 而且identity shortcut不就是原封不动把x传出去吗非装什么13啊!

然并卵

block的上下可能维度不一样,因为网络中充满了downsample和16-32-64 的channel的逐渐加深。

那我们分两种情况讨论,来更具体的描述identity和projection到底是什么玩意

(1)在输入输出维度一样的时候:比如14x14x64 -- > 14x14x64

identity shortcut会干什么:原封不动把x传出去,输入输出一毛一样

projection shortcut会干什么:通过64个1x1x64的filter,映射到输出。这些projection 的filters都是需要learn的,所以要搞清楚,并不是shortcut就是(啊啊啊 原封不动送出去就行了)。尤其是p

(2)在输入输出维度不一样的时候: 比如14x14x64 -- > 7x7x128

identity shortcut会干什么:(这一点我不太确定,请大佬纠正或自寻reference)先把14x14x64 downsample到7x7x64。 然后和输出差的那64个feature map全部zero padding补上,以实现free of parameters的前提。所以实现起来比较容易方便

projection shortcut会干什么:用128个1x1x64的filters搭配上stride 2实现空间降维 深度升维的骚操作。然而这个也是需要learn的

 

 

reference

Resnet到底在解决一个什么问题呢? - 薰风初入弦的回答 - 知乎 https://www.zhihu.com/question/64494691/answer/786270699

你可能感兴趣的:(深度学习,计算机视觉,人工智能)