ResNet-残差网络一

news2024/11/25 7:49:08

文章目录

  • 残差网络
    • 深度网络退化
    • 残差结构
    • 残差网络对比测试
      • plain net VS residual net
      • 不同的shrotcut connection
      • 残差网络增加层数

著名的残差网络主要是在两片论文里提出:

  1. Deep Residual Learning for Image Recognition
  2. Identity Mappings in Deep Residual Networks

其中第一篇主要讲的是残差网络模块,简单介绍了下基本逻辑。然后就是引入到VGG-19网络中去,来验证残差网络的先进性。
第二篇就是深入讨论了这个残差背后的逻辑,并进一步优化了这个残差结构。

残差网络

深度网络退化

论文提到,基本上深度学习的基本认识是:网络层数越多,拟合能力越强,特征表达能力越强,性能也就越好。
随着网络的加深,例如计算资源的瓶颈,过拟合问题,梯度消失或者梯度爆炸的问题,基本上都被各种方法解决了。
比如计算资源就可以通过GPU的并行计算大幅度提升;
过拟合问题通过日益增多的标签数据量,还有dropout等方案来解决;
梯度消失或者梯度爆炸的问题,也通过引入Batch Normalization层可以解决。

上述问题解决后,不管是AlexNet,VGG还是GoogleLeNet,都是不断的提升网络深度,并且通过提升网络深度获得了较好的性能。
但是,论文里提到,随着网络继续加深,会出现一个叫做网络退化的问题(Degradation Problem),这种退化并不是由过拟合引起的,并且在适当深度的模型中增加更多的层会导致更高的训练误差。如果是overfitting的话,则会出现训练误差小,测试误差大的现象。
原文描述:When deeper networks are able to start converging, a degradation problem has been exposed: with the network depth increasing, accuracy gets saturated (which might be unsurprising) and then degrades rapidly. Unexpectedly, such degradation is not caused by overfitting, and adding more layers to a suitably deep model leads to higher train- ing error, and thoroughly verified by our experiments。

实验结果:

残差结构

为了解决这个退化问题,论文提出了大名鼎鼎的残差网络residual network,如下图:

残差结构的基本逻辑是这样的:

  1. 在一个卷积层block的旁边增加一条通路(shortcut connections),从这个block的输入直接连接到卷积的输出。
  2. 在这个block的输出处,把卷积层的输出直接加上输入,然后再通过ReLU层。
  3. 理论上这个shortcut connections可以跨多层,但是在论文中,作者只使用了两种结构:
  • 两个3 * 3的卷积层,下图左边。
  • 1个 1 * 1的卷积层用于降维,然后再通过一个3 * 3的卷积层用于提取特征,再通过一个1 * 1的卷积层来恢复维度(通道数),下图右边。

  1. 文中提到,这条通路也可以叫做Identity mapping,恒等映射。简单说就是把输入直接复制一下。当然这个也可以采用别的方法,在第二篇论文中就详细的探讨了一下。这个放到下面的章节介绍。

引入了这样一个结构的网络就叫做Residual Network,没有引入的网络叫做Plain Network。

这里写一下我对这个残差结构的理解:在上面的这个残差结构中,定义了几个东西:

  • H ( x ) H(x) H(x)是定义为 underlying mapping to befit by a few stacked layers (not necessarily the entire net)。也就是这个结构需要去拟合或者表达的数据分布,可以被称作为预测值。
  • x为输入数据,我理解为真实的数据分布。
  • 残差在统计学里被称为预测值与真实值的差异。所以残差就被定义为: F ( x ) = H ( x ) − x F(x) = H(x) - x F(x)=H(x)x,这部分就是残差。实际上就是卷积层对数据做的映射, F ( x ) F(x) F(x)也写成 F ( x , W i ) F(x, W_i) F(x,Wi),也就是输入x和权重 W i W_i Wi的映射函数。
  • 所以在残差网络里,卷积层就是去拟合真实值与预测值之间的差异。
  • 而通过shortcut connections可以把真实的数据分布在层与层之间传递(正向或者反向),保证层与层之间不出现信息差(梯度消失或者梯度爆炸)。

残差结构还有一个问题是,卷积出来之后的特征图尺寸不总是和输入的x相同,如果这样的话,还需要对输入x做一些变换之后才能进行相加( The element-wise addition is performed on two feature maps, channel by channel)。也就是:
y = F ( x , W i ) + W s x y = F(x, W_i) + W_s x y=F(x,Wi)+Wsx
关于这个 W s W_s Ws矩阵,论文中是说因为对解决退化问题没有什么帮助,所以仅仅用于匹配维度与尺寸, But we will show by experiments that the identity mapping is sufficient for addressing the degradation problem and is economical, and thus Ws is only used when matching dimensions。
就是做一些降维,升维或者padding的事情,我理解第二种残差结构就是为了干这个用的,匹配结构。

残差网络对比测试

plain net VS residual net

对比测试是在VGG的基础网络上测试的,如下图:

最左边的是VGG-19,中间的是增加到了34层的plain network,最右边的是增加了残差结构,也就是增加了shrotcut connections的网络。
结果分析:

  • 18 plain VS 34 plain:

18层的普通网络比34层的表现要好,也就是出现了网络退化现象。

  • 然后比较了18层的残差和34层的残差,然后是四个网络(18/34,加不加残差)的结果:

很明显,层数越多,残差的效果越好。

不同的shrotcut connection

前面提到,在那条input-output的connection上,可以用一个矩阵 W s W_s Ws去进行dimensions的调整。
文中是基于34层的网络做了三个实验:

  • 直接使用zero-padding的方式,直接使用0来做increasing dimensions。最简单的方式,不需要增加任何的参数和计算。
  • 使用1 * 1的方式进行补充(只有不匹配的情况下使用)。
  • 全部使用1 * 1的方式进行计算(匹配了也再处理一次,不改变尺寸)。

三种情况下的比对结果为:

可以看出A/B/C三种区别不大,为了节省参数,文中是说不再使用第三种方案。

残差网络增加层数

为了验证残差网络在层数不停扩大的情况下的作用,使用了50,101, 152层三种结构,最后一直扩大到了夸张的1202层。在这个层数的实验中,使用的是bottlenect design(在50,101, 152这三个网络中)。就是第二种残差结构,前后各一个1 * 1的卷积层的结构。
结构为:

结果为(ImageNet数据集):

结果证明,残差结构能有效的解决在网络深度增加情况出现的网络退化现象。也就是说,使用残差结构,可以可劲儿的增加层数。效果很好。

最后,论文中弄了一个1202层的非常夸张的网络,这个网络可以将训练精度提升到小于0.1%,但是测试精度就回到了7.93%。还不如浅一点的网络。文中分析的原因可能是因为过拟合,因为数据量太小,数据量不足以支撑这么大的参数量,很容易过拟合。
We argue that this is because of overfitting. The 1202-layer network may be unnecessarily large (19.4M) for this small dataset.

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

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

相关文章

yolov8在rknn(rv1109/1126)模型转换、量化移植过程

续:rv1109/1126 rknn 模型量化过程_CodingInCV的博客-CSDN博客 Yolov8简介 yolov8是比较新的目标检测模型,根据论文和开源项目的报告,相对使用比较广泛的yolov5提升还比较明显。 yolov8与yolov5相比,结构上的主要区别是将C3结构…

hutool Sm2加解密-自定义公钥私钥

代码 首先说结论,hutool 的SM2对象的公钥私钥是不关联的,你可以存自己的私钥和别人的公钥,这样解密的时候只要协商好就能用了,以下是调换公钥私钥的加解密案例 公钥格式 04公钥x公钥y //使用自定义的公钥私钥生成sm2Testpubli…

android资深工程师如何分析system_server异常

Android系统中的System Server负责管理许多关键功能,例如进程管理、电源管理等。如果System Server出现异常,可能会导致系统重启或部份功能失效。作为Android资深工程师,分析System Server的异常状况时,考虑以下步骤:查…

晶澳转债上市价格预测

晶澳转债 基本信息 转债名称:晶澳转债,评级:AA,发行规模:89.603077亿元。 正股名称:晶澳科技,今日收盘价:31.71元,转股价格:38.78元。 当前转股价值 转债面值…

我做了一个JPA Specification的优化

目录 一、参考二、概述流程效果感受 三、实现原理AST树结构AstNode主要结构 把表达式解析成AstAst 解析成 JPA Specification 三、项目地址四、目前阶段的总结 一、参考 如何搞一个支持自定义函数和变量的四则运算的抽象语法树出来 二、概述 这是一个可以优化生成Specificati…

Android SystemServer中Service的创建和启动方式(基于Android13)

Android SystemServer创建和启动方式(基于Android13) SystemServer 简介 Android System Server是Android框架的核心组件,运行在system_server进程中,拥有system权限。它在Android系统中扮演重要角色,提供服务管理和通信。 system …

Pycharm中修改注释文本的颜色(详细设置步骤)

下面是在Pycharm中设置注释文本颜色的详细步骤: 下面是修改前后对比: 修改前注释行的颜色: 修改后注释行的颜色: 以上就是Pycharm中修改注释文本颜色的详细步骤,希望能帮到你!

pve安装dsm7.2,并启用照片同步

目录 1.文件准备 2. 创建虚拟机 3. 编译引导文件 4. 群晖安装 5. 安装Photos和mmfpeg 6. 安装手机APP 之前安装了pve版本的dsm6.2了,近期换硬盘,加上对dsm6.2的moments性能实在不满意,就产生尝鲜的想法,因为dsm7.0发布很久了…

2024年浙财MBA项目招生信息全面了解

2024年全国管理类硕士联考备考已经到了最火热的阶段,不少考生开始持续将注意力集中在备考的规划中!杭州达立易考教育整合浙江省内的MBA项目信息,为大家详细梳理了相关报考参考内容,方便大家更好完成择校以及针对性的备考工作。本期…

Day12-作业(SpringBootWeb登录认证)

作业1:完成课上所讲解的 登录 及 登录校验 的所有功能。[ 必须 ,至少敲两遍 - Filter] 作业2:调研第三方加密技术和落地方案,优化登录业务流程。 提示:推荐使用加盐加密的方式,对密码进行加密并校验 作业3…

【快应用】adbutton如何直接下载广告而不跳落地页再下载

【关键词】 原生广告、adbutton、下载 【问题背景】 快应用中的原生广告推出了adbutton组件来直接下载广告app,在使用的时候,点击adbutton按钮的安装文案,不是直接下载广告app,而是跳转到落地页后直接下载,这种情形该…

企业工程项目管理系统源码(三控:进度组织、质量安全、预算资金成本、二平台:招采、设计管理) em

​ 工程项目管理软件(工程项目管理系统)对建设工程项目管理组织建设、项目策划决策、规划设计、施工建设到竣工交付、总结评估、运维运营,全过程、全方位的对项目进行综合管理 工程项目各模块及其功能点清单 一、系统管理 1、数据字典&#…

cad中的曲线区域是如何绘制的

cad中的曲线区域是如何绘制的 最近需要把cad中的设备锁在区域绘画出来,不同设备放在不同区域 组合工具命令PLPE 步骤: 1.先用pl绘制,把设备都是绘制在pl的曲线范围内 2.用pe命令,选择pl的区域进行曲线(s&#xff…

基于SpringBoot+Vue的MOBA类游戏攻略分享平台设计与实现(源码+LW+部署文档等)

博主介绍: 大家好,我是一名在Java圈混迹十余年的程序员,精通Java编程语言,同时也熟练掌握微信小程序、Python和Android等技术,能够为大家提供全方位的技术支持和交流。 我擅长在JavaWeb、SSH、SSM、SpringBoot等框架…

软考A计划-系统集成项目管理工程师-信息文档和配置管理-下

点击跳转专栏>Unity3D特效百例点击跳转专栏>案例项目实战源码点击跳转专栏>游戏脚本-辅助自动化点击跳转专栏>Android控件全解手册点击跳转专栏>Scratch编程案例点击跳转>软考全系列点击跳转>蓝桥系列 👉关于作者 专注于Android/Unity和各种游…

华为杯竞赛、高教社杯和数学建模国赛实现逆袭;评奖评优加分冲冲冲!

目录 ⭐ 赛事介绍 ⭐ 参赛好处 ⭐ 辅导比赛 ⭐ 赛事介绍 华为杯全国研究生数学建模竞赛是由华为公司主办的一项面向全国研究生的数学建模竞赛。该竞赛旨在通过实际问题的建模和解决,培养研究生的创新能力和团队合作精神,推动科技创新和应用。华为杯竞…

【超细节】Vue3的属性传递——Props

目录 前言 一、定义 二、使用 1. 在 setup 中(推荐) 2. 非 setup 中 3. 对象写法的校验类型 4. 使用ts进行类型约束 5. 使用ts时props的默认值 三、注意事项 1. Prop 名字格式 2. 对象或数组类型的默认值 3. Boolean 类型转换 前言 Vue3相较…

代码签名证书是什么?

代码签名证书是什么?有什么作用?代码签名证书是提供软件开发者可以进行代码软件数字签名的认证服务。通过对代码的数字签名可以消除软件在Windows系统被下载安装时弹出的“不明开发商”安全警告,保证代码完整性和不被恶意篡改,使软…

【严重】泛微 e-cology <10.58.3 任意文件上传漏洞

漏洞描述 泛微协同管理应用平台(e-cology)是一套企业大型协同管理平台。 泛微 e-cology 10.58.3之前版本存在任意文件上传漏洞,由于上传接口身份认证缺失,未经过身份验证的攻击者可以构造恶意请求将文件上传至服务器,攻击者可能通过上传jsp…

Python web实战之 Django 的模板语言详解

关键词: Python、web开发、Django、模板语言 概要 作为 Python Web 开发的框架之一,Django 提供了一套完整的 MVC 模式,其中的模板语言为开发者提供了强大的渲染和控制前端的能力。本文介绍 Django 的模板语言。 1. Django 模板语言入门 Dj…