【网络结构设计】11、E-LAN | 通过梯度传输路径来设计网络结构

news2024/11/17 22:49:15

在这里插入图片描述

文章目录

    • 一、背景
    • 二、方法
      • 2.1 网络设计策略
      • 2.2 Partial Residual Networks
      • 2.3 Cross Stage Partial Networks
      • 2.4 Efficient Layer Aggregation Network
    • 三、效果

论文:Designing Network Design Strategies Through Gradient Path Analysis

代码:暂无

出处:暂无

一、背景

现有网络结构设计的不同方向:

  • 实际应用的高效性上:
    • SENet:使用通道 attention 的方式,降低了 AlexNet 约 50 倍参数,但可以保持类似的效果
    • MobileNet 和 ShuffleNet:MobileNet 将硬件的延迟直接考虑到了网络设计中,ShuffleNet 分析了硬件的特性并作为网络设计的参考原则
  • 超深网络结构及不同层特征的融合上:
    • ResNet、ResNeXt、DenseNet 等结构解决了超深网络结构训练的模型收敛问题
    • 之后的其他模型从 ① 特征融合 ② 提高感受野 ③ attention ④ 分支选择等方面来进行研究

总结上述内容可以得到下面的结论:

  • 很多研究都是从相同的角度出发的,也就是从浅层抽取 low-level 特征,从深层抽取 high-level 特征,然后将这些特征结合起来,即是 data path(前向传播)的角度

本文作者的思考:

  • 如图 1 所示,[16] 和 [36] 中,在 objective 和 loss 的角度分析了浅层和层模型,作者发现通过调整 objective 和 loss layer 的配置,就可以控制每层学习到的特征(无论浅层还是深层)。
  • 也就是说,网络学习到什么类型的特征取决于训练人员用什么信息投喂,而不是如何组合这些层,基于此,作者重新设计的网络结构

在这里插入图片描述

本文作者的出发点:

  • 由于目前的参数更新方法都是反向传播规则,即目标函数会根据梯度来更新权重参数,所以本文是基于梯度传播路径来设计网络结构

本文的做法:为 layer-level、stage-level、network-level 设计了梯度路径:

  • Layer-level design:设计了梯度分流策略,并通过调整 layers 的数量和计算残差连接的 channel ratio,设计了 Partial Residual Network(PRN)(PRN 和本文是相同的作者团队)
  • Stage-level design:将硬件的特性引入网络结构中来加速网络的推理过程。作者通过最大化梯度结合和最小化硬件消耗的两个方式,设计了 Cross Stage Network(CSPNet)[33] (CSPNet 和本文是相同的作者团队)
  • Network-level design:作者考虑了梯度传播的效率来平衡网络的学习能力,以网络的梯度反传路径长度作为总基础,设计了 Efficient Layer Aggregation Network(ELAN)

二、方法

2.1 网络设计策略

在本文中,作者将网络设计策略分为两种,如图 2 所示:

  • data path design strategies:主要关注特征抽取方式、特征选择、特征融合方式等的设计
  • gradient path design strategies:主要通过分析梯度的来源、组合方式、更新方式等,来进行网络设计,提高参数使用率,获得更好的效果

1、data path design strategy

优势:

  • 可以提取有特殊物理含义的特征,比如使用对称计算单元来抽取不同感受野的特征
  • 可以针对不同的输入来自动地选择合适的操作单元,比如使用不同的 kernel 来解决不同的输入 [2, 19]
  • 学习到的特征可以直接复用,比如 FPN 可以直接使用从不同层得到的特征

劣势:

  • 在训练过程中,容易导致无法预测的损失,所以需要复杂的结构来解决这些问题
  • 多样且具有特殊设计的算术单元在模型优化过程中会造成一些困难

2、gradient path design strategy

优势:

  • 能够高效地使用网络参数,通过调整梯度传播的路径,不同计算单元的权重可以学习更丰富的信息,提高性能
  • 模型学习很稳定,由于梯度传输路径会直接影响每个计算单元的参数的更新,训练过程中可以避免性能损坏
  • 前向传播效率更高,通过控制梯度传输的路径,模型可以在不增加其他复杂结构的基础上得到高准确率。

在这里插入图片描述

2.2 Partial Residual Networks

PRN 是本文作者团队在 2019 年提出的,属于 layer-level 的设计策略

在 PRN 的设计中,主要是围绕着如何最大化梯度的组合来更新每层的权重

下面两个因素会主要影响梯度的组合:

  • 梯度的来源层 source layer of the gradient
  • 梯度从 loss 层传递到其他层的时间戳(链路法则)

以 ResNet 为例来分析 Masked residual layer:

  • ResNet 中,每个 block 的输出都会和残差连接的特征相加
  • 在 PRN 的设计中,使用 binary mask 和残差连接相乘,只允许一部分通道的残差信息和 block 输出相加,如图 3 所示
  • 使用 masked residual layer 可以让特征图分为两部分,通过抑制另一半通道,只有一半的残差通道会和 block 输入通道相加,这样可以提高梯度结合的数量
  • 此外,不同的梯度 source 层会影响整个梯度传播的时间,让梯度的结合冗余

在这里插入图片描述

以 ResNet 来分析 Asymmetric(非对称) residual layer:

  • 在 ResNet 的结构下,只有大小相同的特征图可以详见,这也也导致该结构是一个比较受限制的结构
  • 在使用 PRN 时,可以允许一些 channels 被抑制,通道抑制的数量也可以不同,可以看做非对称残差层,这样就可以让网络更灵活

梯度结合(gradient combination)的一些分析:

一般研究中通常使用『最短梯度路径』和『融合特征的数量』来衡量模型的学习效率和网络结构的能力,[39] 在任务,这些度量方式和 accuracy 及 参数 没有很强的关系,如表 1 所示。

作者认为梯度传播和梯度结合是被用来更新参数的,和网络相关性更大,所以下面会进行「梯度结合」的相关分析。

在这里插入图片描述

梯度结合包括:gradient timestamp 和 gradient source

1、gradient timestamp

如图 7,展示了四种不同的网络结构的 gradient timestamp

  • ResNet 使用残差的方式,梯度结合方式比较受限
  • PRN 使用 channel splitting 的方式,丰富了 gradient timestamp,和 ResNet 相比,梯度结合方式更多样
  • SparseNet 使用 sparse connection 让不同的 layer 更灵活
  • DenseNet 使用逐层 concat 的方式,梯度结合很冗余

在这里插入图片描述

2、gradient source

如图 8 所示,展示了 3 种不同网络在第一个 gradient timestamp 处的 gradient source:

  • 级联结构(DenseNet、SparseNet),需要特殊处理
  • 残差结构(ResNet、PRN),ResNet 相同的梯度信息会传输到输出的所有层,source 有冗余,PRN 更灵活

在这里插入图片描述

2.3 Cross Stage Partial Networks

CSPNet 也是本文团队在 2019 年提出的,可以看做 stage-level 梯度网络

CSPNet 也是基于最大化梯度组合来实现的

CSPNet 和 PRN 的不同:

  • CSPNet:是为提升硬件推理速度来设计的
  • PRN:是从理论角度出发并通过梯度的结合来提升网络的学习能力

所以,在 CSPNet 设计的时候,是从 layer-level 扩展到了 stage-level

CSPNet 的结构如下:

在这里插入图片描述

1、Cross stage partial operation

当每个 channel 都有不同的梯度传播路径的时候,可以达到 the source of gradient 的最大化

当每个 channel 都不同的计算深度的时候,梯度时间戳的数量可以最大化

所以,可以通过上面的两个理论来设计结构,最大化 gradient source 和 gradient timestamp

划分 channel 可以提高 gradient source,让子网络和不同 layer 的不同 channel 结合可以提高 gradient timestamps 的数量

结构如图 4 所示:

  • 将输入划分为两部分,一部分经过 block ,一部分直接和 block 的输出特征进行进行 concat 即可
  • 如此一来,可以降低计算量,提升网络推理速度

2、Gradient flow truncate operation

作者分析了 CSPNet 的梯度流传播

由于 block 中用了很多残差连接,特征流和残差流的梯度有很多重复的,所以作者在 block 和残差连接的末尾都插入了 transition layer,来截断一些梯度。

图 5 展示了 3 种不同的结合方式:

在这里插入图片描述

CSPNet 设计之初是为了加强模型在线学习的能力,并且加速推理。

在这里插入图片描述

2.4 Efficient Layer Aggregation Network

ELAN 代码在 2022 年 7 月开源,在 layer-level 上设计了 gradient path designed network。

ELAN 的主要目标是为了解决 deep model scaling 时难以收敛的问题

ELAN 是由 VoVNet 和 CSPNet 结合而来的,且其整个网络的梯度长度的优化是基于 Stack in computational block 结构的

Stack in computational block:

在做模型缩放时,如果网络达到了一定的深度,再叠加深度时,网络的效果可能会不升反降

举个例子:

  • scaled-YOLOv4,P7 model 使用很多操作和参数,但只获得了很小的性能提升
  • ResNet-152 约是 ResNet-50 参数量的 3 倍,但在 ImageNet 只带了了 1% 的 acc 提升,当 ResNet 堆叠到大约 200 层时,性能比 ResNet-152 更差
  • VoVNet 堆叠到 99 层时,其 acc 比 VoVNet-39 还低

分析:

  • 从梯度路径的设计来看,作者认为随着堆叠层数的增加, VoVNet 比 ResNet 的性能下降更多的原因在于,VoVNet 是基于 OSA module 堆叠而来,而每个 OSA module 都包括一个 transition layer,所以每堆叠一个 OSA module,每个层的梯度路径都会增加 1
  • 而 ResNet 是基于 residual layers 堆叠而来的,每堆叠一个 residual layer,只会增加梯度最长路径

为了进一步分析,作者基于 YOLOR-CSP 进行了一些实验,并且发现:

  • 当堆叠层数达到 80+ 时, CSP 早融合的方式比 normal CSP 效果更好,每个 stage 的最短梯度路径会减 1
  • 当网络继续变深和变宽,CSP 晚融合的方式得到了更好的效果,每个 layer 的最短梯度路径会减 1

Stack in computational block 如图 6 所示:

  • 出发点 1:为了避免使用更多 transition layer
  • 出发点 2:让整个网络的最短梯度路径变得更长一些

这里介绍一下 VoVNet:

  • 提出了 One-shot Aggregation(OSA),将中间的特征一次性聚合(在最后一层聚合一次),如图 1b 所示,能够在保留 concat 优势的同时优化 MAC(中间层输入输出通道相同) 和 GPU 计算效率(无需 1x1 卷积)
  • 基于 OSA 模块,构建了 VoVNet,一个 backbone 网络结构,并且将该 backbone 用于 DSOD、RefineDet、Mask R-CNN 等方法中,取得了比 DenseNet、ResNet 等方法更好的效率和准确率的平衡
  • VoVNet 是基于 DenseBlock 的,DenseBlock 中的每一层的输入都是前面所有层 feature map 的叠加。而 VoVNet 只有最后一层的输入是前面所有层 feature map 的叠加。
    在这里插入图片描述

E-LAN 结构如图 6c 所示:主要为了避免过多的使用 transition layer(会提升梯度最短路径,影响网络加深)

在这里插入图片描述

我们已知,在分析梯度路径时,不能只看整个网络的最短梯度路径和最长梯度路径,而且需要更详细的梯度路径分析。

stop gradient:

首先,探索一下 ResNet 的最短路径长度。和 PlainNet,ResNet 的每个 block 都有一部分梯度是会经过 block 传递的

所以,作者会分别在 block 和残差连接上进行 stop gradient 操作,如图 9 所示:

  • 残差连接上使用后:gradient path 会和 PlainNet 很类似,也就是说最长梯度路径和最短梯度路径相同了
  • block 上使用后:最短梯度路径会直接从所有残差连接通过,所以最短梯度路径永远为 1,因为 block 有两层,所以最长梯度路径为 2
  • 在 YOLOR-CSP 上的实验结果如表 3 所示,结果表明,在 ResNet 中缩短梯度路径是让深度网络能正常收敛的很重要的因素

在这里插入图片描述

在这里插入图片描述

Gradient path planning:

作者重新设计了 VoVNet 的 transition layer:

  • 首先,移除 deep VoVNet 中的 OSA module 的所有 transition layer,只在最后一个 stage 的最后一个 OSA module 中使用 transition layer
  • 然后,将 CSPNet 的结构应用于上面的往来账哦好难过,来进一步观察 CSPNet 的效果,结果如表 4
  • 结论,deep VoVNet 从无法收敛到收敛良好。所以,不应该只考虑最短梯度路径和最长路径的数值,而是需要确保的是每层的梯度最短路径和整个网络的梯度最长路径都可以被有效的训练到

三、效果

 =450x

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

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

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

相关文章

微服务应用视角解读如何选择 K8s 的弹性策略

头:潘俊峰 前言 微服务架构的出现,拆分了庞大的单体应用,让业务之间的开发与协作变得更加灵活。当面临业务流量增加的场景时,往往需要对一些应用组件进行扩容。K8s 在应用层面提供了 HPA,围绕 HPA 开源社区延伸出了 …

SAP-FI模块 处理自动生成会计凭证增强

FICO-模块一. 相关问题概览1. 固定资产业务过渡科目摘要增强功能-F-022. 固定资产业务过渡科目摘要增强功能-MIGO3. 主营业务收入等科目自动反记账功能二. 问题图片描述1. 固定资产业务过渡科目摘要增强功能-F-022. 固定资产业务过渡科目摘要增强功能-MIGO3. 主营业务收入等科目…

JavaScript 作用域-作用域概述,变量作用域,作用域链

JavaScript 作用域-作用域概述,变量作用域,作用域链 目录JavaScript 作用域-作用域概述,变量作用域,作用域链1. 作用域1.1 作用域概述1.2 全局作用域1.3 局部作用域 (函数作用域)1.4 JS 没有块级作用域2. 变量的作用域2.1 变量作用…

校验和之概念、计算原理、检验原理、实例计算、代码编程,力荐力荐力荐

阅读前请看一下:我是一个热衷于记录的人,每次写博客会反复研读,尽量不断提升博客质量。文章设置为仅粉丝可见,是因为写博客确实花了不少精力。不用担心你关注我而我却不关注你,因为我是个诚信互关的人!&…

如何用LightningChart创建Android图表数据可视化应用程序?(下)

LightningChart JS 是一款高性能的 JavaScript 图表工具,专注于性能密集型、实时可视化图表解决方案。 LightningChart .JS | 下载试用(qun:740060302)https://www.evget.com/product/4189/download 在上一篇,我们介…

CDN是什么?用了CDN就一定比不用更快吗?

对于开发同学来说,CDN这个词,既熟悉又陌生。 平时搞开发的时候很少需要碰这个,但却总能听到别人提起。 我们都听说过它能加速,也大概知道个原因,但是往深了问。 用了CDN就一定比不用更快吗? 就感觉有些…

Node.js操作Dom ,轻松hold住简单爬虫

前言 前段时间,我发现一个开源题库,题目非常有意思。我想把它整成一个JSON文件做为数据储备,方便整活。 一共有一百五十多道题目,手动CV我肯定是不想干的。于是写了个脚本,在写脚本的过程中,我发现一个能…

Opencv(C++)笔记--利用分水岭算法实现图像分割

1--分水岭算法的原理详细原理讲解可参考:博客1和视频1;原理简述:分水岭算法的基本思想是把图像视为拓扑地貌,图像中每一点像素的灰度值表示该点的海拔高度,每一个局部极小值及其影响区域称为集水盆,而两个集…

csrf漏洞原理及防御

攻击原理 从上图可以看出,要完成一次CSRF攻击,受害者必须依次完成两个步骤 1.登录受信任网站A,并在本地生成Cookie 2.在不登出A的情况下,访问危险网站B 防御原理 csrf能防御的本质是,黑客虽然携带了合法的cookie&a…

振弦采集模块的辅助功能寄存器

振弦采集模块辅助功能寄存器 1.频率值模拟量输出 VMXXX(仅 VM501、 VM511) 模块支持将当前实时频率值以模拟量形式从管脚输出,模拟量有电流和电压两种输出形式。为了使用此功能,需要将辅助功能寄存器 AUX.[0]设置为 1&#xff0…

<Linux开发> ubuntu开发工具-EasyConnect使用记录

<Linux开发> ubuntu开发工具-EasyConnect使用记录 1、安装EasyConnect 打开EasyConnect官网EasyConnect 根据当前电脑系统选择对应版本下载 作者这里是ubuntu 22.04版本 右击,选择 “软件安装” 即可安装完成;windows版本类似…

数据可视化:揭开“智慧校园”新篇章,助力新时代教育信息化

随着移动互联网、物联网等新一代信息技术的快速发展,建设智慧校园已经具备了成熟的技术条件。自从教育部启动教育信息化2.0计划后,建设智慧校园已成为我国教育信息化发展目标,无论是国家教育事业发展的十三五规划,还是十四五规划&…

Hadoop高手之路7-Hadoop的新特性

文章目录Hadoop高手之路7-Hadoop的新特性一、Hadoop2.0以上新特性二、Yarn资源管理框架1. yarn体系结构2. yarn的工作流程三、HDFS的高可用HA1. HDFS的高可用(HA)架构2. 搭建Hadoop高可用HA集群1) 规划集群节点2) 环境准备3) 配置HA集群(1) 修改core-sit…

【ROS】—— ROS通信机制——实践与练习(六)

文章目录前言1. 话题发布1.1 C方式实现1.2 python实现2. 话题订阅2.1 C实现2.2 python实现3. 服务调用3.1 C3.2 python4. 参数设置4.1 C4.2 python4.3 运行4.4 其他方式4.4.1 修改小乌龟节点的背景色(命令行实现)4.4.2 启动节点时,直接设置参数4.4.3 通过launch文件…

Java测试框架——JUnit详解(45)

文章目录前言何为JUnit?官方资料JUnit4常用注解和断言代码测试搭建一个JUnit测试环境生命周期忽略测试断言测试异常测试测试时间套件测试JUnit5JUnit5对比JUnit4的好处导包的改变注解的改变扩展JUnit新功能:参考文章JUnit是Java编程语言的单元测试框架&a…

list的介绍及模拟实现

🌈感谢阅读East-sunrise学习分享——list的介绍及模拟实现 博主水平有限,如有差错,欢迎斧正🙏感谢有你 码字不易,若有收获,期待你的点赞关注💙我们一起进步 今天想分享介绍一下STL的容器之一lis…

openharmony GPIO 驱动开发

openharmony GPIO 驱动开发GPIO 基础知识GPIO 基础知识——概念GPIO 基础知识——IO 复用GPIO 基础知识——GPIO 分组和编号GPIO 基础知识——用户态测试HDF 框架下 GPIO 驱动HDF 框架下的 GPIO 驱动——案例描述(以 HI3516DV300 平台为例,提供代码)HDF 框架下的 GP…

为什么jvm需要有栈协程?

旧有的servlet生态的线程模型 首先我们先要聊一聊现在我们用的最多的servlet的执行模型是什么: 这个dispatch其实就是一个EventLoop或者说是一个selector来检测注册到其上的链接状态发生的变化 以Tomcat为例子,当这个selector发现存在一个链接可读时&…

【node.js】fs\path\http模块的使用

🥳博 主:初映CY的前说(前端领域) 🌞个人信条:想要变成得到,中间还有做到! 🤘本文核心:Node.js的fs\path\http模块的使用,模块化开发概念 目录 一、node.js概念与作…

一个曾经分享动态(2021)的回顾和解释-2023-

虽然看过一些典故,里面有名言道: 解释永远是多余的,理解的人不需要,不理解的更不需要。 但是,误会还是需要沟通来消除的。 例如,曾经分享过: 如下都是误会 ↓↓↓↓↓↓↓↓↓ 有朋友联系我&a…