ResNet原理

目录

一、ResNet诞生背景

1.核心特点

二、网络加深带来的问题

三、ResNet的基础架构----残差块

四、 Batch Normalization

 1.为什么要归一化

 2.BN怎么做

3.BN解决的问题

4.BN 层总结

 五、ResNet 网络参数详解

六、ResNet 总结 


一、ResNet诞生背景

        深度残差网络(deep residual network)是2015年微软何凯明团队发表的一篇名为:《Deep Residual Learning for Image Recognition》的论文中提出的一种全新的网络结构,其核心模块是残差块residual block。正是由于残差块结构的出现使得深度神经网络模型的层数可以不断加深到100 层、1000层甚至更深,从而使得该团队在当年的ILSVRC 2015分类竞赛中取得卓越成绩,也深刻地影响了以后的很多深度神经网络的结构设计。 残差网络的成功不仅表现在其在ILSVRC 2015竞赛中的卓越效果,更是因为残差块skip connection/shorcut这样优秀的思想和设计,使得卷积网络随着层数加深而导致的模型退化问题能被够大幅解决,使模型深度提高一个数量级,到达上百、上千层。

1.核心特点

  1. 残差块(Residual Block)

    • 学习残差函数 F(x)=H(x)−x,通过跳跃连接将输入 x 加到输出上:H(x)=F(x)+x。

    • 跳跃连接缓解了梯度消失问题,使深层网络更容易训练。

  2. 结构

    • 基本残差块:2-3个卷积层 + 跳跃连接。

    • 更深版本(如ResNet-50)使用“瓶颈结构”(1x1卷积减少计算量)。

  3. 变体

    • ResNet-18、ResNet-34(基本残差块)。

    • ResNet-50、ResNet-101、ResNet-152(瓶颈结构)。

  4. 应用

    • 图像分类、目标检测、语义分割等任务中表现优异。

具体结构如下:

ResNet原理_第1张图片

二、网络加深带来的问题

        在残差块这样的结构引入之前,如果一个神经网络模型的深度太深,可能会带来梯度消失和梯度爆炸的问题 (如下图),随着一些正则化方法的应用可以缓解此问题,但是随着layer深度的继续加深,又带来了模型退化这样的问题。
        那么,这里就有一个问题,为什么加深网络会带来退化问题?即使新增的这些layer什么都没学习,保持恒等输出(所有的weight都设为1),那么按理说网络的精度也应该等于原有未加深时的水平,如果新增的layer学习到了有用特征,那么必然加深过后的模型精度会大于未加深的原网络。看起来对于网络的精度加深后都应该大于等于加深前才对啊?实际上,让新增的layer保持什么都不学习的恒等状态,恰恰很困难,因为在训练过程中每一层layer都通过线性修正单元relu处理,而这样的处理方式必然带来特征的信息损失(不论是有效特征or冗余特征)。所以上述假设的前提是不成立的,简单的堆叠layer必然会带来退化问题。

你可能感兴趣的:(pytorch学习,深度学习,python,pytorch)