Resnet的残差块
BasicBlock模块:
Resnet的作用
- 解决梯度消失。网络越深,会导致梯度消失。Resnet可以解决梯度消失的问题。
Resnet的原理
参考视频:https://www.bilibili.com/video/BV1cM4y117ob/?spm_id_from=333.337.search-card.all.click&vd_source=4564794c2a933ffdf65d980ee25648f1
原理解释:
中间的卷积部分对输入的x进行操作,记为F(x)。最终的输出记为y
。
y=F(x) + x 。其反向传播对权重w
求导过程如下:
可以发现,加入残差块和不加残差块的区别在于求导过程中多了一个 x对w求偏导(上图中框起来的部分)
。
这就相当于我们这一层得到的输出最差都是和上一层一样的,因为在反向传播过程中是在做优化,最差的就是F(x)这里为0,既这一层不做改变。但凡F(x)做了一点更新,就会使得效果变好。这样子就解决了梯度消失。
更直白的话来理解,经过残差块输出的信息至少是和上一层的信息一样多,所以可以做到越来越好。
对于Resnet网络,就是由多个残差块组成的网络,因为理论上网络越深效果会越好。
残差的由来
F(x) = y -x 。F(x)被称为残差,是输出与输入的差异部分。
Resnet不同版本的差别
ResNet-18、ResNet-34和ResNet-101之间的主要区别在于残差块中的卷积层的数量,这导致了不同的网络深度和参数量。而不是有多个残差块堆叠而成的。