【对残差网络的学习记录】
目录
定义
残差网络(Residual Networks)是一种卷积神经网络,其内部使用了跳跃连接,由大量的残差块组成,这缓解了深度神经网络中增加深度带来的梯度消失和梯度爆炸问题,由此可以利用残差网络训练很深很深的网络。
残差块(Residual block)
把某层输入跳跃连接到下一层乃至更深层的激活层之前,同本层输出一起经过激活函数输出。
普通网络(Plain Network)
当所训练的网络足够深时训练误差将不再减少反而会增加。
残差网络(Residual Networks)
所训练网络越深,训练误差越小。下图的残差网络由五个残差块组成,该残差网络只跳跃了一层,还可跳跃多层。
ResNet50基本构成
ResNet50由两个基本的块构成,Conv Block和Identity Block。
Conv Block:跳跃连接上有卷积操作,输入和输出维度不一样,改变图片的大小和通道数,不能串联,用于改变网络维度。
Identity Block:跳跃连接上没有卷积操作,输入和输出维度一样,不改变通道数,能串联,用于加深网络。
结构与理解
看了吴恩达老师的视频讲解,并参照知乎努力努力再努力理解的。
本人认为上图中stage3和stage4的Conv Block部分的通道数有错并标注了出来,不知道理解的对不对,欢迎大佬们指正。
残差网络解决网络退化的原理
如果某层网络冗余,我们希望该层能够学习到一个恒等映射函数也就是h(x)=x,但是学习这样的函数很困难,但学习F(x)=0要更简单,所以通过跳跃连接可以实现h(x)=F(x)+x的学习。
残差网络解决梯度消失的原理
多个Resnet Blocks累积起来能解决梯度消失问题。
Resnet Block = main path + skip connection
参考
https://zhuanlan.zhihu.com/p/165123650
https://blog.youkuaiyun.com/zjc910997316/article/details/102912175