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

深度学习:ResNet残差神经网络

目录

一、什么是ResNet残差神经网络

二、残差结构

三、18层残差网络

1.最初残差网络变体

2.图片示例

3.表格示例

四、批次归一化(Batch Normalization)

1.工作过程

2.主要作用

五、ResNet残差神经网络解决了传统神经网络什么问题

1.梯度消失和梯度爆炸

梯度消失:

梯度爆炸:

2.退化问题


一、什么是ResNet残差神经网络

  • ResNet 网络是在 2015年 由微软实验室中的何凯明等几位大神提出,斩获当年ImageNet竞赛中分类任务第一名,目标检测第一名。获得COCO数据集中目标检测第一名,图像分割第一名。
  • ResNet网络与传统的神经网络的区别在于其独特的残差结构批次归一化处理,而这也是其最大的两个特点

 

二、残差结构

  • 残差结构(Residual Block)是ResNet(残差网络)的核心组成部分,旨在解决深层神经网络训练中的退化问题。
  • 其主要特点是通过引入跳跃连接(Skip Connection)来实现残差学习,允许网络学习输入和输出之间的残差(即差异),而不是直接学习从输入到输出的映射。

 

  • 让特征矩阵隔层相加,注意F(X)和X形状要相同,
  • F(X)是经过两次卷积层得到的结果,X是原始特征矩阵
  • 所谓相加是特征矩阵相同位置上的数字进行相加。
  • 相加之后的矩阵作为输入,可以有效解决深层网络退化问题,提高网络的深度

 

三、18层残差网络

1.最初残差网络变体

  • ResNet-18:包含18层。
  • ResNet-34:包含34层。
  • ResNet-50:包含50层。
  • ResNet-101:包含101层。
  • ResNet-152:包含152层。
  • 这里的层数是指卷积层全连接层的数量

 

2.图片示例

  • 这里拿18层的残差网络进行举例,图片是网络的构造
  • 从上往下第一个红框里就是一个残差结构残差块
    1. 该结构将输入矩阵加上经过两层卷积层之后的特征图(因为该卷积层使用卷积核宽度为3,步长为1,填充为1,所以特征图与输入矩阵大小一致)的结果作为下一个残差块的输入
  • 第二个红框是两组残差块(每两个残差块为一组)之间要对特征图进行降维操作
    1. ·每组的第一个残差块使用步长为2的卷积层对输入特征图进行降维,之后再正常卷积得到特征图;
    2. 同时跳跃连接的部分也对输入特征图进行降维,最后将两个特征图相加之后作为下一组残差块的输入
    3. 后面的残差块内部以及残差块组之间的的操作与上述一致
    4. 最后进行全局平均池化,得到最终特征图,该模型输出分类是1000,我们自己调用时通常要修改该参数

 

3.表格示例

  • 18层,34层,50层,101层,152层,及其结构
  • FLOPs行是每个网络的计算性能和模型复杂度

 

四、批次归一化(Batch Normalization)

  • 批次归一化(Batch Normalization,简称 BN)是一种用于加速深度神经网络训练的方法。它通过标准化每个批次的输入,使模型在训练过程中更加稳定,减少了梯度消失和过拟合的风险

1.工作过程

  • 对输入图像进行预处理
  • 对每一个特征图进行归一化处理之后再输入下一个卷积层

 

2.主要作用

  1. 减轻内部协变量偏移:通过标准化每一层的输入,使得其均值接近0,方差接近1,从而减少了层间输入的变化,帮助模型更快地收敛。
  2. 提高训练速度:批次归一化能够使得更大的学习率得以使用,从而加速训练。
  3. 缓解梯度消失:通过规范化输入,有助于保持激活值的稳定性,从而在一定程度上减轻了梯度消失现象。
  4. 具有正则化效果:批次归一化可以在某种程度上减少对其他正则化技术(如Dropout)的依赖,因为它引入了一定的噪声。
  5. 提高模型泛化能力:通过使训练过程更加稳定,批次归一化有助于提高模型在未见数据上的表现。

 

五、ResNet残差神经网络解决了传统神经网络什么问题

1.梯度消失和梯度爆炸

梯度消失:

  • 梯度消失是指在反向传播过程中,梯度逐渐减小,导致更新权重时几乎没有变化。
  • 使得模型在训练初期或某些层的训练变得非常缓慢,甚至停滞不前。

梯度爆炸:

  • 梯度爆炸是指在反向传播过程中,梯度逐渐增大,导致权重更新过大,进而使模型无法收敛,甚至出现数值溢出。
  • 导致模型的损失函数发散,使得训练过程不稳定。

ResNet残差神经网络使用批次归一化解决了该问题

 

2.退化问题

  • 该图是两种层次的神经网络在训练集和测试集上多次迭代的错误率曲线
  • 可以看出来多层神经网络的错误率反而要高于少层
  • 说明深层神经网络出现了退化问题,模型可能出现复杂性增加或过拟合问题

ResNet残差神经网络使用残差结构解决了该问题


http://www.kler.cn/news/321497.html

相关文章:

  • 【OpenSSL】OpenSSL 教程
  • C++ 数据类型分类
  • Android12的netd分析
  • 解析Vue2源码中的diff算法
  • kafka下载配置
  • 深度学习自编码器 - 得益于深度的指数增益篇
  • 数据集-目标检测系列-口罩检测数据集 mask>> DataBall
  • 自动驾驶综述 | 定位、感知、规划常见算法汇总
  • 网络编程(5)——模拟伪闭包实现连接的安全回收
  • GitLab发送邮件功能详解:如何配置自动化?
  • Bytebase 2.23.0 - 支持 Entra (Azure AD) 用户/组同步
  • 基于Node.js+Express+MySQL+VUE实现的计算机毕业设计共享单车管理网站
  • KVM 安装 Windows11
  • 不同的浏览器、服务器和规范对 URL 长度的限制
  • 【Gitee自动化测试0】日程
  • Vue3 取消密码输入框在浏览器中自动回填
  • 微信小程序配置prettier+eslint
  • JAVA实现Word(doc)文件读写
  • 数学符号练习篇-函数
  • 云手机群控怎么用?有什么优势?
  • C语言 | Leetcode C语言题解之第438题找到字符串中所有字母异位词
  • AI 驱动旅游创业新机遇,旅游卡与共享旅游的融合发展
  • 微服务-流量染色
  • 【Gitee自动化测试2】Git,Github,Gitlab,Gitee
  • Java抽象教程!(* ̄;( ̄ *)
  • SQL 查询优化与实战
  • Laravel部署后,CPU 使用率过高
  • 为什么不用tensorflow而用opencv
  • 企微群管理软件:构建高效社群运营的新引擎
  • C 标准库 - <ctype.h>