深度学习--ResNet残差神经网络解析

文章目录

  • 前言
  • 一、什么是ResNet网络
  • 二、传统卷积神经网络存在的问题
    • 1、梯度消失和梯度爆炸
    • 2、退化问题
  • 三、如何解决问题
  • 四、残差结构
  • 五、18层残差网络
    • 1、解释
    • 2、隔层相加优点
    • 3、隔层相加数值增大问题
  • 六、18层残差网络以外的表格示例
  • 七、BN层(Batch Normalization)
    • 1、定义以及操作原理:
    • 2、主要作用
  • 总结


前言

在ResNet之前,VGG、AlexNet等模型通过增加网络深度提升性能,但人们发现:当网络层数超过20层后,模型的训练误差和测试误差反而会不降反升。这一现象被称为“网络退化”(Degradation),并非由过拟合导致,而是因为深层网络难以优化。


一、什么是ResNet网络

  • 2015年,微软研究院的何恺明团队提出了ResNet(Residual NeuralNetwork),这一模型以3.57%的Top-5错误率首次在ImageNet图像识别竞赛中超越人类水平,并成为深度学习历史上的里程碑。ResNet的核心创新在于残差学习(Residual Learning),通过引入“跳级连接”(Shortcut Connection)解决了深度网络训练中的梯度消失和网络退化问题。
  • ResNet网络与传统的神经网络的区别在于其独特的残差结构和批次归一化处理,而这也是其最大的两个特点。

二、传统卷积神经网络存在的问题

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

1、梯度消失和梯度爆炸

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

2、退化问题

在这里插入图片描述

  • 上图表示即为当网路是20层和56层时的错误率,可以发现层数越多反而错误率更高

三、如何解决问题

  • 为了解决梯度消失或梯度爆炸问题,通过数据的预处理以及在网络中使用 BN(Batch Normalization)层来解决。
  • 为了解决深层网络中的退化问题,可以人为地让神经网络某些层跳过下一层神经元的连接,隔层相连,弱化每层之间的强联系。这种神经网络被称为 残差网络 (ResNets)。
  • 在这里插入图片描述

四、残差结构

在这里插入图片描述

  • 残差结构(Residual Block)是ResNet(残差网络)的核心组成部分,解决深层神经网络训练中的退化问题。

  • 其主要特点是通过引入跳跃连接(SkipConnection)来实现残差学习,允许网络学习输入和输出之间的残差(即差异),而不是直接学习从输入到输出的映射。

  • 让特征矩阵隔层相加,注意F(X)和X形状要相同,

  • F(X)是经过两次卷积层得到的结果,X是原始特征矩阵

  • 所谓相加是特征矩阵相同位置上的数字进行相加。

  • 相加之后的矩阵作为输入,可以有效解决深层网络退化问题,提高网络的深度

五、18层残差网络

在这里插入图片描述

1、解释

上图为18层的卷积神经网络,现传入图片,图片格式为3 * 244 * 244,首先传入到第一层卷积核,卷积核的大小为7 * 7,一共有64个小卷积核,移动步长为2,将图片四周填充3层0值,将其处理完使图片大小变为112 * 112,一共有64张,然后将这么多的特征图进行最大池化,池化层大小为3 * 3,移动步长为2,填充1层,然后得到新的图片格式为64 * 56 * 56,将这些特征图再次传入卷积神经网络,不改变其大小,但是此时发生了改变,这64张大小为56*56的特征图不仅传入下列卷积层,同时又复制一份一样的跳过下面的卷积层,然后再将经过两层卷积层处理过的特征图与没有处理的特征图相加得到新的特征图,此时相加的为特征图中每个像素点对应的数值,然后再一次进行剩余同样的操作…最终对特征图进行全局平均池化,即将每一张图求一个平均值并输出单个值,将这个值当做特征图再次进行全连接,这个全连接有1000个神经元,即输出1000个预测结果。

2、隔层相加优点

  • 通过将特征图的数值隔层相加,可以让信息从一层直接传递到另一层,而不受梯度消失的影响。这样可以使得网络更容易进行优化和训练,减少了优化问题的复杂性。同时,残差结构还能够有效地学习到残差的信息,即网络输出与输入之间的差异,从而更好地捕捉到数据中的细微变化和特征。

  • 通过隔层相加的方式,残差结构实现了"跳跃连接",使得信息可以直接从较浅的层次直达较深的层次,消除了信息的丢失和模糊化。这样可以提高网络的表达能力,更好地捕捉到输入数据的变化特征,提高了网络的性能和准确率。

3、隔层相加数值增大问题

  • 在残差结构中,特征图的数值隔层相加是在两个或多个层的特征图上进行的。这些特征图经过卷积、激活函数等操作后,通常会引入缩放因子(scale factor)或者使用卷积核尺寸为1的卷积层进行调整,以确保两个特征图的通道数相同。

  • 此外,残差结构中也会使用批归一化(Batch Normalization, BN)层来进一步调整和稳定特征图的数值。BN层通过对每个特征图的通道进行归一化,将其数值范围限制在较小的范围内,有助于避免数值的过大或过小。BN层还引入了可学习的参数,可以根据数据的分布调整特征图的均值和方差,从而进一步提升网络的性能和收敛速度。

六、18层残差网络以外的表格示例

  • 18层,34层,50层,101层,152层,及其结构
  • 每种结构及其对应的权重参数个数也在上图表示为FLOPs
    在这里插入图片描述

七、BN层(Batch Normalization)

1、定义以及操作原理:

  • BN(BatchNormalization)层在深度学习中被广泛应用,其主要作用是对神经网络的输入进行归一化,以加速网络的训练并提高模型的鲁棒性和泛化能力。

在这里插入图片描述

  • 如上图所示,对每个传入的图片进行归一化后,将其传入卷积神经层进行处理后得到特征图,然后再对这个特征图进行归一化处理,处理完再次进入卷积层处理,输出的特征图再次进行归一化。

2、主要作用

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

总结

ResNet通过残差学习重新定义了深度神经网络的训练方式,解决了深度神经网络的训练难题,成为现代深度学习模型的基石。其设计哲学“让网络学习变化量而非绝对值”不仅提升了模型性能,更启发了后续诸多架构创新,是深度学习发展史上的里程碑。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/77937.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【go】go run-gcflags常用参数归纳,go逃逸分析执行语句,go返回局部变量指针是安全的

go官方参考文档&#xff1a; https://pkg.go.dev/cmd/compile 基本语法 go run 命令用来编译并运行Go程序&#xff0c;-gcflags 后面可以跟一系列的编译选项&#xff0c;多个选项之间用空格分隔。基本语法如下&#xff1a; go run -gcflags "<flags>" main.…

K8S探针的应用

目录&#xff1a; 1、探针的简介2、启用探针2.1、启用就绪探针2.2、启用存活探针2.3、启用启动探针&#xff08;可选&#xff09; 1、探针的简介 在Kubernetes中&#xff0c;探针&#xff08;Probes&#xff09;是用来检查容器健康状况的工具&#xff0c;它们帮助Kubernetes了…

体积小巧的 Word 转 PDF 批量工具

软件介绍 今天给大家介绍一款能批量把 Word 文档转换成 PDF 的实用小工具。 软件特点 这款 Word 批量转 PDF 软件&#xff0c;身材小巧&#xff0c;体积不到 1M&#xff0c;还没界面呢&#xff01;使用时&#xff0c;只要把软件和要转换的 Word 文档放在一个文件夹&#xff…

JMeter介绍

文章目录 1. JMeter简介2. JMeter 下载3. JMeter修改编码集4. 启动并运行JMeter 1. JMeter简介 JMeter 是 Apache 组织使用 Java 开发的一款测试工具&#xff1a; 1、可以用于对服务器、网络或对象模拟巨大的负载 2、通过创建带有断言的脚本来验证程序是否能返回期望的结果 优…

URP-UGUI相关知识

一、UGUI的基本组成部分 Canvas &#xff08;画布&#xff09;所有UI都需要放在Canvas画布下面&#xff0c;不然无法显示EventSystem 所有的事件响应系统都需要依赖于EventSystem,若删除该组件&#xff0c;交互效果就 不会显示 1.Canvas(画…

ShenNiusModularity项目源码学习(20:ShenNius.Admin.Mvc项目分析-5)

ShenNiusModularity项目的系统管理模块主要用于配置系统的用户、角色、权限、基础数据等信息&#xff0c;上篇文章中学习的日志列表页面相对独立&#xff0c;而后面几个页面之间存在依赖关系&#xff0c;如角色页面依赖菜单页面定义菜单列表以便配置角色的权限&#xff0c;用户…

JavaFX 实战:从零打造一个功能丰富的英文“刽子手”(Hangman)游戏

大家好&#xff01;今天我们要挑战一个经典的单词猜谜游戏——“刽子手”&#xff08;Hangman&#xff09;&#xff0c;并使用 JavaFX 这个强大的 GUI 工具包来赋予它现代化的交互体验。这个项目不仅有趣&#xff0c;而且是学习和实践 JavaFX 核心概念的绝佳途径&#xff0c;涵…

【自我介绍前端界面分享】附源码

我用夸克网盘分享了「800套HTML模板」&#xff0c;链接&#xff1a;https://pan.quark.cn/s/a205a794552c <!DOCTYPE HTML> <html> <head> <title>Miniport</title> <meta http-equiv"content-type" content&q…

安宝特分享|AR智能装备赋能企业效率跃升

AR装备开启智能培训新时代 在智能制造与数字化转型浪潮下&#xff0c;传统培训体系正面临深度重构。安宝特基于工业级AR智能终端打造的培训系统&#xff0c;可助力企业构建智慧培训新生态。 AR技术在不同领域的助力 01远程指导方面 相较于传统视频教学的单向输出模式&#x…

今日html笔记

原手写笔记 ------------------------------------------------------------------------------------------------------- 关于超链接的使用 <a href"https://www.luogu.com.cn/" target"_blank">//href属性指定了超链接的目标地址,即当用户点击超…

【人工智能】Ollama 负载均衡革命:多用户大模型服务的高效调度与优化

《Python OpenCV从菜鸟到高手》带你进入图像处理与计算机视觉的大门! 解锁Python编程的无限可能:《奇妙的Python》带你漫游代码世界 在 多用户大模型推理 场景下,负载均衡 是确保高并发、低延迟的关键挑战。本文以 Ollama(一个流行的本地大模型运行框架)为例,深入探讨 …

线上救急-AWS限频

线上救急-AWS限频 问题 在一个天气炎热的下午&#xff0c;我正喝着可口可乐&#xff0c;悠闲地看着Cursor生成代码&#xff0c;忽然各大群聊中出现了加急➕全体的消息&#xff0c;当时就心里一咯噔&#xff0c;点开一看&#xff0c;果然&#xff0c;线上服务出问题&#xff0…

Maven 项目中引入本地 JAR 包

在日常开发过程中&#xff0c;我们有时会遇到一些未上传到 Maven 中央仓库或公司私有仓库的 JAR 包&#xff0c;比如第三方提供的 SDK 或自己编译的库。这时候&#xff0c;我们就需要将这些 JAR 包手动引入到 Maven 项目中。本文将介绍两种常见方式&#xff1a;将 JAR 安装到本…

解锁webpack:对html、css、js及图片资源的抽离打包处理

面试被问到webpack&#xff0c;可别只知道说 HtmlWebpackPlugin 了哇。 前期准备 安装依赖 npm init -y npm install webpack webpack-cli --save-dev配置打包命令 // package.json {"scripts": {// ... 其他配置信息"build": "webpack --mode pr…

SpringBoot整合SSE,基于okhttp

一、引入依赖 <dependency><groupId>com.squareup.okhttp3</groupId><artifactId>okhttp</artifactId><version>4.10.0</version> </dependency> <dependency><groupId>com.squareup.okhttp3</groupId><…

【哈希表】1399. 统计最大组的数目

1399. 统计最大组的数目 - 力扣&#xff08;LeetCode&#xff09; 给你一个整数 n 。请你先求出从 1 到 n 的每个整数 10 进制表示下的数位和&#xff08;每一位上的数字相加&#xff09;&#xff0c;然后把数位和相等的数字放到同一个组中。 请你统计每个组中的数字数目&…

手动实现LinkedList

前言 大家好&#xff0c;我是Maybe。最近在学习数据结构中的链表&#xff0c;自己手动实现了一个LinkedList。我想与大家分享一下。 思维导图 代码部分 package Constant;public class constant {public static final String INDEX_IS_WRONG"输入的下标不合法"; }p…

如何检查浏览器是否启用了WebGL2.0硬件加速

一:WebGL Inspector使用 打开 Chrome 或 Edge(推荐使用 Chromium 内核浏览器)。 安装插件: 👉 Spector.js on Chrome Web Store 安装完成后,在浏览器工具栏看到绿色的 S 图标 二:捕获 WebGL 渲染帧 打开你要分析的 Web3D 网站(比如 https://3dviewer.net)。 点击浏…

“时间”,在数据处理中的真身——弼马温一般『无所不能』(DeepSeek)

电子表格时间处理真理&#xff1a;数值存储最瘦身&#xff0c;真身闯关通四海。 笔记模板由python脚本于2025-04-23 22:25:59创建&#xff0c;本篇笔记适合喜欢在电子表格中探求时间格式的coder翻阅。 【学习的细节是欢悦的历程】 博客的核心价值&#xff1a;在于输出思考与经验…

AXOP39062: 25MHz轨到轨输入输出双通道运算放大器

AXOP39062是用于低压应用(1.5V~5.5V)的双通道运算放大器&#xff0c;具有轨到轨的输入输出工作范围&#xff0c;非常适合需要小尺寸、大容性负载驱动能力的低压应用。产品具有25MHz的增益带宽&#xff0c;具有优异的噪声性能和极低的失真度。 主要特性 轨到轨的输入输出范围低…