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

news2024/9/27 12:11:24

目录

一、关于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.coloradmin.cn/o/2165740.html

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

相关文章

Gstreamer中,使用mp4或者flv作为视频源去推流RTP等视频流时,需要先解码在编码才能正常

前言: 在Gstreamer中,视频源可以有很多,在很多时候,我们为了测试,会使用MP4等文件作为视频源进行测试,但是发现无论是我自己测试,还是很多网上的命令,都需要先对mp4的h264数据解码以…

等保测评实战:构建企业网络安全的铜墙铁壁

在数字化转型的浪潮下,企业面临的网络安全威胁日益复杂多变。信息安全等级保护(等保)测评作为国家强制性标准,不仅检验着企业的网络安全防护能力,更是企业构建网络安全“铜墙铁壁”的实战指南。本文将从实战角度&#…

华为云徐峰:AI赋能应用现代化,加速软件生产力跃升

2024年9月19日,在华为全联接大会2024的“AI赋能应用现代化,加速软件生产力跃升”论坛上,华为云PaaS服务产品部部长徐峰发表了主题演讲,介绍了未来应用智能化演进趋势,分享了智能化应用的行业实践,并发布了华…

Elasticsearch 启动后在浏览器输入http://localhost:9200 访问失败

windows Elasticsearch 启动后在浏览器输入http://localhost:9200 访问失败 文章目录 前言本地下载安装了个elasticsearch,启动成功了,在本地访问http://localhost:9200 无法访问!!!难受了一下。 一、windows Elastics…

从文本图片到多模态:3D 数字人打开企业全域商业增长新空间

摘要:数字化与AI浪潮推动各行业变革,内容形式也发生巨变,从文本到多媒体的多模态表达,标志着内容创造走向升维。AIGC 3D生成技术的突飞猛进,彻底打破了传统3D内容生产门槛高、周期长、成本高昂的问题。将3D数字人的打造…

两种调用智谱AI API的方式

一、 用智谱AI依赖包调用 from zhipuai import ZhipuAI zhipuai_api_keyXXXXXXXXXXXXXXXXXX # 请填写您自己的APIKeymessages[{"role": "system", "content": "你是一名经验丰富的人工智能工程师,请你解答用户的问题"},{…

前端文件下载全流程

一、首先是点击下载函数功能 源代码: java const dow async (record: any) > {console.log(record,record);let date: any {}date.pcno record.pcnodate.fileName record.fileNamedate.gmtCreated dayjs(record.gmtCreated).format(YYYY-MM)date.importSta…

Electron 更换窗口图标、exe执行文件图标

首先在项目根目录下准备好图标: 配置窗口图标: 配置打包后 exe执行文件 的图标: 效果展示:

gitlab默认克隆地址的修改

目录 1.找到opt/gitlab/embedded/service/gitlab-rails/config目录,打开gitlab.yml 2.修改地址和端口 3.重启gitlab 1.找到opt/gitlab/embedded/service/gitlab-rails/config目录,打开gitlab.yml cd /opt/gitlab/embedded/service/gitlab-rails/confi…

扩展uview复选组件库支持自定义图片+自定义内容

uView 是一套基于UniApp 的前端 UI 框架,它提供了丰富的组件库,用于快速开发移动端和微信小程序等应用。 基本使用 在 uView 中,复选组件通常用于让用户从一组选项中选择多个项目。这些组件可能以 Checkbox Group(复选框组&…

python - 在linux上编译py文件为【.so】文件部署项目运行

python - 在linux上编译py文件为【.so】文件,可通过主文件直接执行 一. 前言 在Python中,通常不直接将Python代码编译为.so(共享对象)文件来执行,因为.so文件是编译后的二进制代码,通常用于C或C等语言&am…

Centos7.9在K8s安装生产级别的分布式存储Rook+Ceph

1.介绍 在k8s云原生平台中,存储是除了网络之外的另一个核心,因为他涉及到了数据的保存,以及容灾等一系列的问题,做生产级别的应用,一定要具有多节点分布式,灾备及时恢复,数据平滑迁移等多种特性…

WDM站点类型 -- 波分站点类型

OTM OTM: Optical Terminal Multiplerer 光终端复用站 OTM站点将业务信号通过合波单元插入到波分系统的线路上去,同时可将业务经过分波 单元从波分系统的线路上分下来。 OLA OLA: Optical Line Amplifier 光线路放大设备 OLA站点用来完成双向传输信号的放大&#xf…

【Python】Windows下安装使用FFmpeg

FFmpeg是一套可以用来记录、转换数字音频、视频,并能将其转化为流的开源计算机程序。之前为了MP3转wav,需要pip安装并import AudioSegment,但是会报错:FileNotFoundError: [WinError 2] 系统找不到指定的文件。 因为FFmpeg需要另…

怎么利用PHP发送彩信

在数字化时代,信息传播的速度与效率成为了企业营销、客户服务及日常沟通中不可或缺的关键因素。随着移动通信技术的飞速发展,群发彩信作为一种集文字、图片、声音于一体的多媒体信息服务方式,正逐渐展现出其独特的优势,成为众多行…

MySQL InnoDB undo log数据结构分析

一、概念解析 1、undo log基本 undo log是InnoDB事务中特有的结构,它的作用有两个:一是进行事务回滚(原子性),旧数据先放到undo log中,等rollback时再将旧数据里的数据回滚回来;二是MVCC&…

UE5 Windows热更新解决方案思路(HotPatcher+Tomcat+RuntimeFilesDownloader)

以下个人学习笔记。其中必会存在一些问题,仅作参考。本人版本5.1。 参考视频: UE4热更新:HotPatcher插件使用教程_哔哩哔哩_bilibili 3.检查需要下载的版本_哔哩哔哩_bilibili 参考文章: UE 热更新:Questions &…

【js逆向学习】qqmusic(qq音乐)webpack智能导出

文章目录 逆向目标逆向分析逆向过程逆向总结 逆向目标 网址:https://y.qq.com/n/ryqq/album/3接口:https://u6.y.qq.com/cgi-bin/musics.fcg参数:sign 逆向分析 这里主要分析 新碟 类别下的接口,直接 Copy as cURL 转为 reques…

文件上传漏洞+CTF实例

解题思路 前端绕过 手动修改前端js代码进行绕过:右击-查看页面源代码-ctff进行位置定位-修改JavaScript函数 后端绕过 文件类型绕过(Content-Type) 常见MIME类型描述application/octet-stream 表示所有其他情况的默认值 text/plain表示文…

从HarmonyOS Next导出手机照片

1)打开DevEco Studio开发工具 2)插入USB数据线,连接手机 3)在DevEco Studio开发工具,通过View -> Tool Windows -> Device File Browser打开管理工具 4)选择storage -> cloud -> 100->fi…