当前位置: 首页 > news >正文

跳跃连接(Skip Connection)与残差连接(Residual Connection)

1. 跳跃连接(Skip Connection)的基本概念

跳跃连接是一种在深度神经网络中广泛应用的技术,它允许信息在网络中跨层直接传递。在传统的神经网络里,每一层的输出仅仅是前一层输出经过特定变换后的结果。而在具备跳跃连接的网络中,某一层的输出不仅能够包含前一层的变换结果,还可以直接包含更早层的输出。

在残差网络(ResNet)里,跳跃连接的核心结构为残差块。假设输入为 x,经过一系列非线性变换(像卷积、激活函数等)后得到 F(x),残差块的输出 y 由以下公式给出:

 y=F(x)+x

2. 从反向传播角度看梯度稳定

在神经网络的训练过程中,反向传播算法用于计算损失函数关于网络参数的梯度,以此来更新参数。梯度消失和梯度爆炸是深度神经网络训练时常见的问题。当网络层数极深时,梯度在反向传播过程中会不断地进行连乘操作,要是梯度值小于 1,经过多层连乘后就会趋近于 0,这便是梯度消失;要是梯度值大于 1,经过多层连乘后就会变得非常大,这就是梯度爆炸。

现在,我们从反向传播的角度来分析跳跃连接对梯度的影响。假设损失函数为 L  ,对输出 y 求梯度可得:

\frac{\vartheta L}{\vartheta x}=\frac{\vartheta L}{\vartheta y}\frac{\vartheta y}{\vartheta x}

由于 y=F(x)+x,所以\frac{\vartheta y}{\vartheta x}=\frac{\vartheta F(x)}{\vartheta x}+1

那么\frac{\vartheta L}{\vartheta x}=\frac{\vartheta L}{\vartheta y}(\frac{\vartheta F(x)}{\vartheta x}+1)=\frac{\vartheta L}{\vartheta y}\frac{\vartheta F(x)}{\vartheta x}+\frac{\vartheta L}{\vartheta y}

3. “梯度上加 1 的常数项” 对梯度稳定的作用

  • 避免梯度消失:在没有跳跃连接的情况下,梯度\frac{\vartheta L}{\vartheta x}仅仅是\frac{\vartheta L}{\vartheta y}\frac{\vartheta F(x)}{\vartheta x}。要是\frac{\vartheta F(x)}{\vartheta x}的值非常小,经过多层反向传播后,梯度就会趋近于 0。然而,在有跳跃连接时,多了一个常数项\frac{\vartheta L}{\vartheta y}。即便 \frac{\vartheta F(x)}{\vartheta x}趋近于 0,梯度\frac{\vartheta L}{\vartheta x}至少还有\frac{\vartheta L}{\vartheta y}这一部分,不会完全消失。
  • 平滑梯度更新:在反向传播过程中,梯度的波动可能会很大,这会使训练过程变得不稳定。跳跃连接添加的常数项能够在一定程度上平滑梯度的更新。因为这个常数项的存在,梯度不会因为\frac{\vartheta F(x)}{\vartheta x}的微小变化而产生剧烈的波动,进而让训练过程更加稳定。

4. 直观示例

我们可以把神经网络的每一层想象成一个信息处理的阶段。在传统网络中,信息必须一层一层地传递,要是某一层的处理出现问题(例如梯度消失),后续层就很难接收到有效的信息。而跳跃连接就像是一条 “捷径”,信息能够直接跳过某些层。从梯度的角度来看,跳跃连接提供了另一条梯度传播的路径,使得梯度不会因为某一层的变换而完全丢失或者变得不稳定。

综上所述,跳跃连接通过在梯度计算中引入常数项 1,有效地避免了梯度消失问题,平滑了梯度更新,从而增强了深度神经网络训练过程中梯度的稳定性。

5.残差连接(Residual Connection)

跳跃连接(Skip Connection)和残差连接(Residual Connection)在很多情况下被视为等同概念,但严格来说,二者既有联系又有区别,下面为你详细分析:

联系

在大多数深度学习的讨论场景中,跳跃连接和残差连接可以互换使用,它们核心思想一致。残差连接是跳跃连接在残差网络(ResNet)里的具体应用形式。二者都旨在解决深度神经网络训练过程中梯度消失和梯度爆炸的问题,通过让网络中的信息跨层直接传递,来保留更多原始特征,增强网络的学习能力。

在数学形式上,它们也具有相似性。以常见的残差块为例,假设输入为x,经过一系列非线性变换(如卷积、激活函数等)后得到F(x),残差块的输出y可以表示为:

y=F(x)+x

这里的x直接跨越了F(x)这部分网络层,这既是残差连接的体现,也符合跳跃连接的定义。

区别

  • 概念范畴:跳跃连接是一个更宽泛的概念,它描述的是信息可以跨越网络中的某些层进行传递的这种连接方式。只要存在信息不按照常规的逐层传递,而是跳过部分层的情况,都可以称为跳跃连接。而残差连接是一种特定类型的跳跃连接,它在跳跃连接的基础上,强调了残差学习的思想,即学习输入x与期望输出之间的残差 F(x)
  • 应用场景和目的侧重:跳跃连接的应用场景更为广泛,它可以应用于各种类型的神经网络架构中,目的是为了促进信息的流动、缓解梯度问题等。例如,在 U-Net 网络中也使用了跳跃连接,主要是为了在解码器部分恢复图像的细节信息,将编码器部分的特征图直接传递到解码器对应层。而残差连接主要应用于以 ResNet 为代表的残差网络中,侧重于通过残差学习让网络更容易学习到输入与输出之间的映射关系,从而可以训练更深层次的网络。

综上所述,虽然跳跃连接和残差连接在很多情况下含义相近,但残差连接是跳跃连接的一种具体且有特定目的的应用形式。

http://www.dtcms.com/a/112925.html

相关文章:

  • 家庭路由器wifi设置LAN2LAN和LAN2WAN
  • STM32低功耗模式详解:睡眠、停机、待机模式原理与实践(下) | 零基础入门STM32第九十三步
  • 30信号和槽_带参数的信号槽(3)
  • [Linux]进程状态、僵尸进程处理回收、进程优先级 + 图例展示
  • kali——httrack
  • Tensorflow、Pytorch与Python、CUDA版本的对应关系(更新时间:2025年4月)
  • 6.1 python加载win32或者C#的dll的方法
  • 对应列表数据的分割和分组
  • 【瑞萨 RA-Eco-RA2E1-48PIN-V1.0 开发板测评】PWM
  • tkiner模块的初步学习
  • 冷门预警,英超006:埃弗顿VS阿森纳,阿森纳分心欧冠,太妃糖或有机可乘
  • TDengine 3.3.6.0 版本中非常实用的 Cols 函数
  • Vue.js设计与实现学习
  • 走进未来的交互世界:下一代HMI设计趋势解析
  • 第九章Python语言高阶加强-面向对象篇
  • 基于Python的微博数据采集
  • 架构及大数据-Zookeeper与Kafka的关系及使用依赖,二者需要同时使用吗?KRaft模式又是啥?
  • Linux常用命令详解:从基础到进阶
  • 基于Python+Flask的服装零售商城APP方案,用到了DeepSeek AI、个性化推荐和AR虚拟试衣功能
  • DCMM详解
  • JS DOM 修改表单样式
  • 浅谈AI - DeepSpeed - 单卡慎用!
  • opencv中mat深拷贝和浅拷贝
  • 常用中间件合集
  • 深入理解 C++ 三大特性之一 继承
  • Java项目之基于ssm的孩童收养信息管理(源码+文档)
  • 详细分析单例模式
  • 【AI编程学习之Python】第五天:Python的变量和常量
  • Kafka 高吞吐量的原因是什么?
  • CNN 中感受野/权值共享是什么意思?