当前位置: 首页 > news >正文

【深度学习】(10)--ResNet残差网络

文章目录

  • ResNet残差网络
    • 1. 传统卷积神经网络的问题
      • 1.1 梯度消失和梯度爆炸
      • 1.2 退化问题
    • 2. 解决问题
      • 2.1 梯度消失与爆炸
      • 2.2 退化问题
    • 3. 残差结构
      • 结构归纳
    • 4. BN(Batch Normalization)
  • 总结

ResNet残差网络

ResNet 网络是在 2015年 由微软实验室中的何凯明等几位大神提出,斩获当年ImageNet竞赛中分类任务第一名,目标检测第一名。获得COCO数据集中目标检测第一名,图像分割第一名。

ResNet残差网络有两个核心特征:1. 残差结构;2. BN(Batch Normalization)

1. 传统卷积神经网络的问题

神经网络都是通过卷积层和池化层的叠加组成的。在实际的试验中发现,随着卷积层和池化层的叠加,学习效果不会逐渐变好,反而出现2个问题:

1.1 梯度消失和梯度爆炸

梯度消失:若每一层的误差梯度小于1,反向传播时,网络越深,梯度越趋近于0。

梯度爆炸:若每一层的误差梯度大于1,反向传播时,网络越深,梯度越来越大。

1.2 退化问题

由下图发现,训练的层数20层的错误率竟然比56层的错误率还要低。训练层数越多准确率反而下降了,这就是所谓的退化问题。

在这里插入图片描述

2. 解决问题

那么,我们该如何解决上述出现的问题呢?

2.1 梯度消失与爆炸

我们知道,对于解决梯度消失与爆炸问题,我们可以通过更换激活函数,比如ReLU函数。但是我们更改完激活函数之后,还是发生了梯度消失与爆炸问题,,该怎么解决呢?

为了解决梯度消失或梯度爆炸问题,论文提出通过数据的预处理以及在网络中使用 **BN(Batch Normalization)**层来解决。

2.2 退化问题

为了解决深层网络中的退化问题,可以人为地让神经网络某些层跳过下一层神经元的连接,隔层相连,弱化每层之间的强联系。这种神经网络被称为残差网络 (ResNets)

使用后结果如下图所示,随着卷积层和池化层的叠加,学习效果逐渐变好:

在这里插入图片描述

3. 残差结构

残差网络的结构有5种,分别为:

在这里插入图片描述

我们以18层结构为例,来介绍残差网络中的残差结构
在这里插入图片描述

在整个18层结构中,我们发现了残差网络由很多的小残差结构组成:

在这里插入图片描述

对于残差结构的运作:当有图片传进卷积层后,将图片复制成两份,一份直接通过“捷径”抵达卷积后出口,另一份要经过卷积层计算,最后两者进行“整合”。

所谓“整合”,即两个图片对应矩阵位置相加。那这样,图片的值不会变的很大嘛?不会发生梯度爆炸的问题吗?

由于调整权重参数时是反向传播的,使得参数在调整时,会将两个图片整合调整在一个很好的位置,不是盲目相加,能够保留下有效信息,无效信息给剔除掉。当然,相加后值肯定会变大一点点,我们就是要让他增大一点点,防止退化呀!

结构归纳

残差结构:residual结构使用了一种shortcut的连接方式,也可理解为捷径。让特征矩阵隔层相加,注意F(X)和X形状要相同,所谓相加是特征矩阵相同位置上的数字进行相加。

在这里插入图片描述

4. BN(Batch Normalization)

Batch Normalization(批量归一化)目的:使所有的feature map满足均值为0,方差为1的分布规律。

在这里插入图片描述

我们一般在构建传统卷积神经网络模型中,在传入数据图片时,都对数据进行了归一化处理:

transforms.Normalize([0.485,0.456,0.406],[0.229,0.224,0.225]

在整个卷积神经网络中,每次卷积都会得到一批特征图,既然归一化能够使所有的特征都分布在相同大小的区域内,那为什么不对特征图也归一化呢?

所以,Batch Normalization(批量归一化)就是将每批次得到的特征图都进行归一化,减少大量对模型参数微调的时间。

总结

本篇介绍了:

  1. ResNet残差网络的好处:解决梯度消失和梯度爆炸以及退化问题。
  2. ResNet残差网络有两个核心特征:1. 残差结构;2. BN(Batch Normalization)。
    1. 残差结构:防止退化。
    2. BN:减少梯度消失和梯度爆炸问题。

http://www.mrgr.cn/news/38398.html

相关文章:

  • 【C语言】__attribute__((packed))与#pragma pack
  • MyBatis-Plus分页查询
  • ASP.NET Zero是什么?适合哪些业务场景?
  • 二叉树的前序遍历,中序遍历,后序遍历(非递归方法+C语言代码)
  • 三分钟让你掌握PDF转音频:PDF2Audio背后的秘密
  • 精通推荐算法32:行为序列建模总结
  • 甄选范文“论软件可靠性设计技术的应用”,软考高级论文,系统架构设计师论文
  • C语言自定义类型:联合体
  • 生活中重大决定,除了你自己,谁也帮不了你!
  • 准备蓝桥杯和ACM:C++标准库头文件及其常用功能简介
  • UE4_Niagara基础实例—4、静态网格体表面生成粒子
  • GEE 教程:如何在谷歌地球引擎中使用克里金插值?
  • 上交所服务器崩溃:金融交易背后的技术隐患暴露杭州BGP高防服务器43.228.71.X
  • 信息学奥赛复赛复习06-CSP-J2020-02直播获奖-向上取整、向下取整、整数除法、最大值、最小值、计数排序
  • 解锁MySQL高可用新境界:深入探索MHA架构的无限魅力与实战部署
  • 首屏优化之:SSR(服务端渲染)
  • 快速理解使用mq(二)——用户、虚拟HOST、Queue的创建
  • 网络层——IP
  • pdf怎么转变成jpg图片?值得推荐的几种PDF转jpg方法
  • Docker精讲:基本安装,简单命令及核心概念