《深度学习》ResNet残差网络、BN批处理层 结构、原理详解

目录

一、关于ResNet

1、什么是ResNet

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

        1)梯度消失和梯度爆炸问题

        2)训练困难

        3)特征表示能力受限

        4)模型复杂度和计算负担

3、如何解决

        1)解决梯度问题

                BN层重要步骤:

        2)解决深层网络退化问题

4、残差结构

        1)隔层相加优点

        2)隔层相加数值增大问题

5、18层结构以外的结构

二、BN层

1、关于BN层

2、主要作用

        1)加速网络收敛

        2)减少梯度问题

        3)增强模型的泛化能力

        4)正则化效果

3、过程


一、关于ResNet

1、什么是ResNet

        ResNet(Residual Neural Network)是一种深度卷积神经网络结构,由Kaiming He等人在2015年提出,斩获当年ImageNet竞赛中分类任务第一名,目标检测第一名。获得COCO数据集中目标检测第一名,图像分割第一名。

        它通过使用残差块(Residual Block)来克服深度神经网络训练中的梯度消失等问题,使得网络可以更深地进行训练。

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

        1)梯度消失和梯度爆炸问题

                当网络层数较深时,梯度会逐渐变小变大,导致训练过程变得困难。这是由于反向传播中的链式法则,使得梯度在每一层传递时逐渐衰减或放大。(可参考传声游戏)

                • 梯度消失:指在神经网络的反向传播过程中,梯度逐渐变小并趋近于零的现象。当梯度接近于零时,权重更新的幅度变得非常小,导致网络参数更新缓慢甚至停止更新,从而影响网络的训练效果。通常发生在使用一些特定的激活函数和深层神经网络中。当深层网络的激活函数是SigmoidTanh等饱和函数时,这些函数的导数在输入较大或较小的情况下接近于零,导致梯度逐渐缩小。随着反向传播的进行,梯度会传递到浅层网络,导致浅层网络的参数更新缓慢,最终影响整个网络的训练效果。

                • 梯度爆炸:指在神经网络的训练过程中,梯度增长得非常快,导致梯度值变得非常大甚至无限大的现象。当梯度值变得非常大时,权重的更新幅度也会变得非常大,导致网络参数发生剧烈的变化,进而影响网络的稳定性和训练效果。梯度爆炸通常发生在使用一些特定的激活函数和深层神经网络中。当深层网络的激活函数是非线性函数时,特别是使用在深层堆叠的神经网络中时,梯度可能会无限制地增大。这是因为在反向传播过程中,梯度会在每个隐藏层传递并相乘,导致梯度指数级地增长。

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

        2)训练困难

                由于梯度消失和梯度爆炸问题,传统卷积神经网络在训练深层网络时很难收敛。网络的性能往往在一定层数后不再提升或甚至下降

        3)特征表示能力受限

                传统卷积神经网络的局部感受野限制了其对全局信息的捕捉能力。简单的卷积操作无法充分利用图像中的上下文信息,导致特征表示能力受限。

        4)模型复杂度和计算负担

                随着网络层数的增加,传统卷积神经网络的参数量和计算量也会增加。这不仅增加了模型的复杂度,还需要更多的计算资源。

3、如何解决

        1)解决梯度问题

                使用批归一化(BN层)处理,批归一化通过对每个小批量数据进行归一化,使得每个特征维度的均值接近于0,方差接近于1。这样可以使得输入数据在激活函数前的分布更加稳定,从而缓解了梯度问题。

                BN层重要步骤:

                        • 均值和方差的计算:对于每个小批量数据,计算其在每个特征维度上的均值和方差。

                        • 归一化和缩放:利用计算得到的均值和方差,对每个特征维度上的数据进行归一化,并进行缩放和平移操作,使得每个特征维度的均值为0,方差为1。

        2)解决深层网络退化问题

                人为地让神经网络某些层跳过下一层神经元的连接隔层相连弱化每层之间的强联系。这种神经网络被称为残差网络 (ResNets)。

        此时可看到层数越多错误率越低,实线代表测试数据集错误率,虚线代表训练集错误率

4、残差结构

        下图为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个预测结果。

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

        1)隔层相加优点

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

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

        2)隔层相加数值增大问题

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

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

5、18层结构以外的结构

        除了上述的18层残差网络结构以外,还有34层、50层、101层、152层,一共5种残差网络结构,每种结构及其对应的权重参数个数也在上图表示为FLOPs

二、BN层

1、关于BN层

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

2、主要作用

        1)加速网络收敛

                标准化输入可以使得各个特征之间的尺度统一,避免不同特征的数值范围差异过大,从而加速网络的收敛。

        2)减少梯度问题

                通过将输入进行标准化,可以减少梯度的变化范围,从而缓解梯度消失和梯度爆炸问题,有助于网络的训练。

        3)增强模型的泛化能力

                BN层引入了可学习的参数,可以在训练过程中自适应地调整特征的均值和方差,使得模型具有更好的鲁棒性和泛化能力。

        4)正则化效果

                BN层在一定程度上具有正则化的效果,可以减少模型的过拟合现象。

3、过程

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

        归一化的目的是是所有的特征图的值满足均值为0,方差为1的分布规律,来提高模型效率和准确性,同时也防止了模型的过拟合。

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

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

相关文章

mqtt网关数据接入rabbitmq,缓存离线数据,实现消息保留

应用场景:网关将设备数据发布至mqtt服务器后,数采程序因为重启或者升级等原因,未能接到到离线的订阅消息,利用rabbitmq-mqtt可将离线数据缓存,待上线后接收 启用mqtt插件 rabbitmq-plugins enable rabbitmq_mqtt

C++:STL详解(二)string类的模拟实现

✨ Blog’s 主页: 白乐天_ξ( ✿>◡❛) 🌈 个人Motto:他强任他强,清风拂山冈! 💫 欢迎来到我的学习笔记! 🔥🔥🔥🔥🔥本文参考文章&…

【HarmonyOS】深入理解@Observed装饰器和@ObjectLink装饰器:嵌套类对象属性变化

【HarmonyOS】深入理解Observed装饰器和ObjectLink装饰器:嵌套类对象属性变化 前言 之前就Observed和ObjectLink写过一篇讲解博客【HarmonyOS】 多层嵌套对象通过ObjectLink和Observed实现渲染更新处理! 其中就Observe监听类的使用,Object…

【Linux 报错】vim 保存文件时出现 E45: ‘readonly‘ option is set (add ! to override)

一、错误原因 该错误表明当前你尝试保存的是一个 只读文件,该文件权限设置为只读,具有只读的标识 系统为了防止你意外修改该只读文件,因此会阻止对只读文件的保存(他怕你修改了你还保存,破坏了只读属性) …

【Linux扩容根分区】LVM分区扩容过程踩坑记录

最近想要给自己使用的Linux操作系统的根分区进行扩容,解决完发现,原来问题如此简单。 特此记录,希望能帮助到有需要的人。 通过df -Th查看系统磁盘分区情况 通过vgdisplay 查看内容 实操过程中,原来红框中,Free PE …

变电站设备检测系统源码分享

变电站设备检测检测系统源码分享 [一条龙教学YOLOV8标注好的数据集一键训练_70全套改进创新点发刊_Web前端展示] 1.研究背景与意义 项目参考AAAI Association for the Advancement of Artificial Intelligence 项目来源AACV Association for the Advancement of Computer V…

webview2加载本地页面

加载方式 通过导航到文件 URL 加载本地内容 使用方式: webView->Navigate( L"file:///C:/Users/username/Documents/GitHub/Demos/demo-to-do/index.html"); 但是这种方式存在一些问题,比如: 存在跨域问题(我加载…

RocketMQ 常用命令mqadmin与控制面板

使⽤发送和接收消息验证MQ 验证生产者: 配置 nameserver 的环境变量 ,在发送/ 接收消息之前,需要告诉客户端 nameserver 的位置。配置环境变量 NAMESRV_ADDR : vim /etc/profileexport NAMESRV_ADDR"192.168.136.66:9876;1…

【网络安全】网络基础第一阶段——第一节:网络协议基础---- OSI与TCP/IP协议

从今天起,我们正式进入第二部分——网络基础。继续学习网络基础、网络协议等相关内容🌟🌟🌟 目录 一、OSI模型 1.1 分层思想 1.2 OSI参考模型 1.3 数据封装与解封装 1.3.1 数据的封装过程 1.3.2 数据的解封装过程 二、TCP/…

探索C语言与Linux编程:获取当前用户ID与进程ID

探索C语言与Linux编程:获取当前用户ID与进程ID 一、Linux系统概述与用户、进程概念二、C语言与系统调用三、获取当前用户ID四、获取当前进程ID五、综合应用:同时获取用户ID和进程ID六、深入理解与扩展七、结语在操作系统与编程语言的交汇点,Linux作为开源操作系统的典范,为…

2025年第十届智能信息技术国际会议 (ICIIT 2025)即将召开!

第10届智能信息技术国际会议(ICIIT 2025)将于2025年2月20日至23日在越南河内举行。ICIIT系列会议将每年举行,为智能信息技术及相关领域提供互动论坛,除了越南的研究人员外,会议小组还欢迎来自世界各地的有兴趣与该地区…

【在Linux世界中追寻伟大的One Piece】进程间通信

目录 1 -> 进程间通信介绍 1.1 -> 进程间通信目的 1.2 -> 进程间通信发展 1.3 -> 进程间通信分类 1.3.1 -> 管道 1.3.2 -> System V IPC 1.3.3 -> POSIX IPC 2 -> 管道 2.1 -> 什么是管道 2.2 -> 匿名管道 2.3 -> 实例代码 2.4 -…

JavaScript typeof运算符

在js中可以typeof来做到确定一个值到底是什么类型。 <script>var num 100;//数值类型var name "mingzi";//字符串类型var book true;//布尔类型var student {name: " 小明",age: 16,tnum: "213444"}//对象是由多个数据组合而成&#x…

[NewStarCTF 2023 公开赛道]Begin of PHP1

开始代码审计. <?php error_reporting(0); highlight_file(__FILE__);if(isset($_GET[key1]) && isset($_GET[key2])){echo "Level 1<br>";if($_GET[key1] ! $_GET[key2] && md5($_GET[key1]) md5($_GET[key2])){$flag1 True;}else{die(…

项目实战:Qt+OSG爆破动力学仿真三维引擎测试工具v1.1.0(加载.K模型,子弹轨迹模拟动画,支持windows、linux、国产麒麟系统)

若该文为原创文章&#xff0c;转载请注明出处 本文章博客地址&#xff1a;https://hpzwl.blog.csdn.net/article/details/142454993 长沙红胖子Qt&#xff08;长沙创微智科&#xff09;博文大全&#xff1a;开发技术集合&#xff08;包含Qt实用技术、树莓派、三维、OpenCV、Op…

第24届工博会盛大开启,大腾智能携前沿数字化解决方案亮相

2024年9月24日&#xff0c;第24届中国国际工业博览会(ICIF China 2024)&#xff08;以下简称“工博会”&#xff09;在上海盛大开幕。本届工博会以“新质领航 数字赋能”为主题&#xff0c;覆盖工业自动化、智能制造等多个领域&#xff0c;汇聚全球制造业的精英与前沿技术&…

MySQL连接查询解析与性能优化成本

文章目录 一、连接查询1.连接查询基础1. INNER JOIN内连接2. LEFT JOIN (或 LEFT OUTER JOIN)左外连接3. RIGHT JOIN (或 RIGHT OUTER JOIN)右外连接4. FULL OUTER JOIN 2.连接查询的两种过滤条件3.连接的原理 二、性能优化成本1.基于成本的优化2.调节成本常数(1)mysql.server_…

Tangle解压玩具商标重复维权,尚未TRO,卖家速查

案件基本情况&#xff1a;起诉时间&#xff1a;2024-9-13案件号&#xff1a;2024-cv-61700品牌&#xff1a;Tangle原告&#xff1a;Tangle Inc.原告律所&#xff1a;Boies Schiller Flexner起诉地&#xff1a;佛罗里达州南部法院涉案商标/版权&#xff1a;原告品牌简介&#xf…

linux远程工具MobaXterm的安装和使用

一、安装和运行 1、下载 地址&#xff1a;&#xff08;手机夸克转存后下载是对作者最大的支持&#xff09;https://pan.quark.cn/s/32e1f5e5e95c 2、解压 解压到到常用软件目录下&#xff0c;如C:\Program Files 3、运行 双击MobaXterm_Personal_24.2.exe运行&#xff0c;…

Python 使用selenium 4.25 进行爬虫(1)

都说python做爬虫比较好&#xff0c;于是我跟着大家的脚步学习python进行爬虫&#xff0c;但是调试了半天&#xff0c;出现各种各样的问题&#xff0c;最终都得到实现了&#xff0c;下面我们来看具体的代码&#xff1a; from selenium import webdriver from selenium.webdriv…