【机器学习300问】104、残差网络是怎么起作用的?

        残差网络(Residual Network,简称ResNet)诞生是为了解决深度神经网络的训练困难性问题。深度神经网络在图像分类等任务上取得了重大突破,但随着网络层数的增加,训练变得更加困难。        

一、神经网络深度过深会出现哪些问题?

        在2015年前后,尽管研究者们已经认识到深度神经网络在诸多任务中能够提供更强的学习能力和表达能力,但随着网络层数的增加,新的挑战也浮现出来。特别是,网络的训练变得异常困难,这主要是由于梯度消失和梯度爆炸问题,导致模型性能在达到一定深度后不仅没有提升,反而可能下降,这种现象称为网络退化

56层的神经网络误差反而比20层的大

        如图1,使用20层和56层“普通”网络的CIFAR-10上的训练误差(左)和测试误差(右)。更深的网络具有更高的训练误差,从而具有更高的测试误差。

        关于什么是梯度消失和梯度爆炸,如果大家想了解详细知识点,可以点击下面的链接:

【机器学习300问】77、什么是梯度消失和梯度爆炸?icon-default.png?t=N7T8https://blog.csdn.net/qq_39780701/article/details/137976701

二、什么是残差网络?

        ResNet的核心创新在于其独特的残差块(Residual Block)设计。所以要想知道残差网络是什么首先就得了解残差块的结构。

(1)复习一下没有残差的普通网络长什么样

        拿一个两层神经网络进行举例说明。输入a^{[l]}在第一层激活后得到a^{[l+1]},由经过第二层后得到输出a^{[l+2]}如下图所示。

两层神经网络

         在这样一个网络中,从输入到输出一共会经过4个函数运算依次是:

1、第一层:线性函数

        第一层线性函数加权后的输出用z^{[l]}表示

2、第一层:激活函数

        第一层激活函数的计算用a^{[l+1] }= g(z^{[l]})表示

3、第二层:线性函数

        第二层线性函数加权后的输出用z^{[l+1]}表示

4、第二层:激活函数

        第二层激活函数的计算用a^{[l+2] }= g(z^{[l+1]})表示

信息流动没有跳跃

        现在让我们把这两层神经网络中的计算函数用可视化的方式表示出来,如下图所示:

普通网络(plain networks)

(2)什么是残差块 Residual Block

        每个残差块内部包含两条路径:一条是常规的信号传递路径,包括一系列卷积操作;另一条则是快捷路径(skip connection),直接将输入跳过几层直接传递到后面,与经过卷积操作后的信号相加。

信息流动发生跳跃

        这样的设计使得网络能够更容易学习到身份映射(即输入等于输出的映射),从而简化了学习任务,使得网络能够专注于学习残差(即输入到输出的变化),而非完整的变换。

残差块(Residual Block)

【注】跳跃连接的起点终点是很有讲究的,是将输入x加到第二层线性函数之后,ReLU非线性激活函数之前。

(3)残差网络的结构长什么样

        上面的残差块里详细的表示展示了计算函数,如果我们不关心这些中间计算过程,那么一个残差块还可以表示成下面这样:

残差块简化表示

        残差网络的整体模型结构,就是不断重复上面这个最简单残差块,通过堆叠多个这样的残差块,ResNet能够构建出非常深的网络架构,例如ResNet-50、ResNet-101、ResNet-152等。其中数字代表网络中的残差块数量或者总层数。

残差网络的结构简单示意图

来给大家看一下Residual Network原论文中何凯明大佬画的图:

        上图是残差网络论文中的配图,左边是VGG-19;中间是普通网络,有34个参数层;右边是具有34个参数层的残差网络。

三、残差网络是怎么解决这些问题的?

        在传统神经网络中,每一层尝试直接学习从输入到输出的复杂变换。而在残差网络中,我们换了个思路:不是直接学习输出相对于输入的变换,而是学习这个变换的“残差”部分,也就是输出相比于输入的改变量。换句话说,如果能让网络学习到“怎么从上一层的输出更进一步”,而不是“从头开始构想整个输出”,事情就简单多了。

(1)解决梯度消失和梯度爆炸

        通过引入捷径又叫跳跃连接(skip connections),残差块允许信息直接跨层传递,即使经过很多层后,最初的输入信号仍然可以影响到最终的输出,从而缓解了深度网络中的梯度消失问题。

(2)简化学习任务

        网络可以更容易地学习残差函数(即输入到输出的小改变),而不是整个复杂的变换函数,这降低了学习难度,使得网络可以更深而不至于性能退化。

(3)提高训练效率

        残差结构使得网络能够更容易收敛,并且能够训练出非常深的网络(例如152层),而不会遭遇性能饱和甚至下降的问题,从而在许多视觉识别、自然语言处理等任务上取得了显著的性能提升。

四、总结

        残差网络的核心思想在于,如果新增的层不能学到比先前层更好的特征,它们至少可以通过捷径传递信息,不造成损害,相当于做了“无害旁观”。而当这些层能够学到额外有价值的信息时,它们就对原有特征进行了有效增强。

        这样的设计鼓励网络进行有效的特征学习,而不会因为深度增加而退化。简单来说,残差网络通过设计允许网络专注于学习每个层级上真正需要改变的部分,从而克服了深度网络训练中的关键障碍。

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

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

相关文章

用docker搭建的Vulfocus镜像管理界面没有镜像可以拉取解决办法

ps:截止到今天2023.4.2,kali和vps的docker拉取的vulfocus镜像会有版本的区别,虽然都是拉取的最新版,vps上镜像为3个月以前,kali上为16个月以前,所以在修改 views.py 文件时,可能会发现文件内容不…

国家首批20个“数据要素×”典型案例发布,珈和科技助力金融、气象两案例入榜

5月24日,国家数据局会同生态环境部、交通运输部、金融监管总局、中国科学院、中国气象局、国家文物局、国家中医药局等部门在第七届数字中国峰会主论坛上发布首批20个“数据要素”典型案例。 其中,珈和科技以其专业的产品和服务助力金融服务领域的浙江网…

GDPU 操作系统 天码行空13

文章目录 ❌ TODO:本文仅供参考,极有可能有误1.生产者消费者问题(信号量)💖 ProducerConsumerExample.java🏆 运行结果 💖 ProducerConsumerSelectiveExample.java🏆 运行结果 2.实现…

【UnityShader入门精要学习笔记】第十五章 使用噪声

本系列为作者学习UnityShader入门精要而作的笔记,内容将包括: 书本中句子照抄 个人批注项目源码一堆新手会犯的错误潜在的太监断更,有始无终 我的GitHub仓库 总之适用于同样开始学习Shader的同学们进行有取舍的参考。 文章目录 使用噪声上…

【JS基础语法04】运算符分类以及运用

一:赋值运算符 1 类型 赋值运算符包括以下:、、-、*、/ 2 原理 ,是将等号右边的数赋值给左边以为例(-、*、/和运算逻辑是相同的) let num 5 num2 等价于 let num 5 numnum2 //num7 二:一元运算符 1怎么判断运算符是几元…

多条文本转二维码怎么做?一键批量建码的使用技巧

怎么快速的制作多条文本信息的二维码?随着二维码的广泛使用,现在很多内容都可以通过生成二维码扫码的方式来获取信息,其他文本二维码就是比较常用的一种类型。那么当需要将多条不同的文本内容每条单独生成二维码时,有什么方法可以…

【Uniapp微信小程序】自定义水印相机、微信小程序地点打卡相机

效果图 template 下方的image图片自行寻找替换! <template><view><camerav-if="!tempImagePath && cameraHeight !== 0":resolution="high":frame-size="large":device-position="device":flash="flas…

2台倍福PLC ADS通信配置

倍福PLC的入门应用介绍请参考下面文章链接: 1、倍福PLC简单入门 从零开始倍福TwinCAT 3 PLC 的一个简单项目-CSDN博客文章浏览阅读34次。这篇文章我们介绍如何开始一个简单的倍福PLC项目。https://rxxw-control.blog.csdn.net/article/details/139124427 1、配置路由 2、…

笔记92:离散LQR控制器详细推导

1&#xff09;离散LQR的推导原理&#xff1a; 拉格朗日乘子法都是在等式约束下用的&#xff1b; 对这个性能函数J运用拉格朗日乘子法后&#xff0c;得到的函数是二次型函数&#xff08;即转化为了最优化控制问题&#xff09;&#xff0c;二次型函数只有一个极值点而且是极小值点…

机器视觉分析在加油站安全中的应用:使用手机检测、打电话行为识别

在加油站等高危场所&#xff0c;禁止使用手机是为了防止潜在的火灾和爆炸风险。手机在使用过程中可能产生电火花&#xff0c;而在加油站这种易燃易爆环境中&#xff0c;任何电火花都可能引发严重的安全事故。因此&#xff0c;加油站禁止使用手机是保障安全生产的重要措施。基于…

FDW(Foreign Data Wrapper)

在上一篇博客里&#xff0c;最末尾提到了 FDW。 FDW 到底是什么呢&#xff1f; 标准 FDW&#xff08;Foreign Data Wrapper&#xff09;遵循了 SQL/MED 标准&#xff0c;标准全称&#xff1a;ISO/IEC 9075-9 Management of External Data (SQL/MED) 2003 年&#xff0c;SQL…

小程序内的分包与数据共享

一:数据共享 小程序内的数据共享和vue当中不一样,vue当中的vue实例可以使得所有的组件都能this.store 但是小程序它只有page对象,和组件实例对象.对于vue而言,vue实例可以使得添加的组件都有. 但是page对象页面对象,不能使得页面内部有.只能使得这个页面内能访问.vue实例,会…

Pooling Sequencing

1、混合(Pooling)样本测序研究 https://www.jianshu.com/p/19ce438ccccf 1.1 混合测序基础 测序成本虽然下降了,但对于植物育种应用研究来说还是很高,动不动就上百群体,小小植物个体价值又低,测完了很可能后面就用不到了。这时,混合样本测序是一种省钱的好办法。 混池…

使用PyAutoGUI识别PNG图像并自动点击按钮

在自动化测试、任务批处理等场景中,我们常常需要控制GUI程序的鼠标键盘操作。PyAutoGUI就是一个非常方便的Python模块,可以帮助我们实现这些操作。今天我们就来看看如何使用PyAutoGUI识别屏幕上的PNG图像,并自动点击图像所在位置。 C:\pythoncode\new\autoguirecongnizepng.py …

超结MOS在全桥电路上的应用-REASUNOS瑞森半导体

一、前言 全桥电路定义 全桥电路是一种常见的电子电路&#xff0c;由四个开关管和一个负载组成&#xff0c;可将直流电转换为交流电。 全桥电路的应用领域 全桥电路广泛应用于电力电子领域&#xff0c;如开关电源、变频器、逆变器、电动汽车、工业自动化等领域 。在电路中&…

Make-An-Audio——用于语音生成的提示增强扩散模型

0.引言 论文提出了一个从文本生成语音的扩散模型 Make-An-Audio。该模型将文本提示作为输入&#xff0c;并据此生成语音。例如&#xff0c;输入 “一只猫在喵喵叫&#xff0c;一个年轻女人的声音”&#xff0c;就会输出猫在喵喵叫&#xff0c;一个女人在说话的音频。这项研究已…

RET-CLIP:眼科疾病诊断大模型

RET-CLIP&#xff1a;眼科疾病诊断大模型 RET-CLIP模型的工作流程和架构图表组成部分工作流程 精细拆解应用RET-CLIP模型进行糖尿病视网膜病变分级 论文&#xff1a;http://arxiv.org/pdf/2405.14137v1 代码&#xff1a;https://github.com/sStonemason/RET-CLIP RET-CLIP 是…

Java手动启动jar包

启动jar包&#xff0c;去到当前jar包路径cmd&#xff0c; windows乱码先执行&#xff1a;chcp 65001 java -Xms512m -Xmx1024m -Dfile.encodingutf-8 -jar -Dspring.cloud.nacos.config.server-addr127.0.0.1:8848 -Dspring.cloud.nacos.discovery.server-addr127.0.0.1:8848 …

基于 DCT 的图像滤波

需求分析 对于图像去噪这一需求&#xff0c;我们可以通过DCT&#xff08;离散余弦变换&#xff09;算法来实现。DCT是一种基于频域的变换技术&#xff0c;可以将图像从空间域转换为频域&#xff0c;然后通过滤波等处理方式进行去噪。 针对这一需求&#xff0c;我们需要进行以下…

mmu之TLB的来源与实现

TLB的由来 遇到的问题 对于两级页表(Page Table)的设计&#xff0c;需要访问两次物理内存才可以得到虚拟地址对应的物理地址(一次访问第一级页表&#xff0c;另一次访问第二级页表)&#xff0c;而物理内存的运行速度相对于处理器本身来说&#xff0c;有几十倍的差距; 因此在处…