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

ResNet(残差网络)中的残差是什么?

ResNet(残差网络)提出的 残差(Residual)是深度学习中的一种关键创新,旨在解决深层神经网络训练中的梯度消失/爆炸和退化问题(随着网络加深,准确率不升反降)。其核心思想是通过引入“跳跃连接”(Shortcut Connection),让网络直接学习输入与输出之间的残差(即变化部分),而非直接学习完整的输出。

1. 残差的核心定义

在ResNet中,残差指的是:  

残差= 期望输出 - 输入

假设输入为 x ,某一层的期望输出为 H(x) ,则网络改为学习残差 F(x) = H(x) - x,而原始输出可通过 H(x) = F(x) + x 重构。

传统网络:直接拟合 H(x)(复杂映射)。  

ResNet:拟合残差 F(x) = H(x) - x (简单映射,通常 F(x) 接近零)。

 

2. 残差块(Residual Block)的结构

ResNet通过残差块实现这一思想,其结构如下:  

y = F(x, Wi) + x

x为输入,F(x, Wi)是需要学习的残差函数(如堆叠的卷积层)。  + x 是跳跃连接(恒等映射,不引入额外参数)。  y :输出。  

 

若输入输出维度不同,需对 x 线性投影(如1x1卷积):  

y = F(x, Wi) + Ws

 

3. 为什么残差学习有效?

缓解梯度消失:跳跃连接提供了梯度传播的捷径,使深层网络更容易训练。  

简化优化问题:学习残差 F(x) 比直接学习 H(x) 更容易(尤其是当 H(x) 约等于x 时,残差趋近零)。  

避免网络退化:即使增加的层无效,残差结构也能退化为恒等映射F(x) = 0 ,保持性能不下降。

 

4. 实际应用

经典残差块:包含两个3x3卷积层(ResNet-34)。  

瓶颈结构:用1x1卷积降维/升维(ResNet-50/101等更深的网络)。  

变体:Pre-activation ResNet(将BN和ReLU提到卷积前)。

 

5. 直观理解

假设目标是让网络学习“将输入加1”:  

传统网络需精确拟合  H(x) = x + 1 。  

ResNet只需拟合 F(x) = 1 ,而 H(x) = F(x) + x = 1 + x。  

当网络加深时,冗余层可以学习F(x) = 0,避免破坏已有功能。

 

总结

ResNet的残差设计通过跳跃连接将深层网络的训练转化为微小扰动(残差)的学习,极大提升了网络的深度和性能。这一思想不仅影响了图像分类(如ResNeXt、EfficientNet),还广泛应用于目标检测(Faster R-CNN)、语义分割(U-Net++)等领域。


http://www.kler.cn/a/613147.html

相关文章:

  • 网盘解析工具1.3.0,修改了一些bug,建议更新到此版本
  • OpenCV 图形API(或称G-API)
  • 小型水库大坝安全及水雨情监测技术方案
  • 第 8 章:使用更好的库_《C++性能优化指南》_notes
  • 数据库——MySQL字符、日期函数
  • 字符串相加和字符串相乘
  • 通过Map类和List类的List<Map<>>组合类体会JSON
  • 7. 实现命名路由和反向路由
  • windows第十八章 菜单、工具栏、状态栏
  • leetcode102 二叉树的层次遍历 递归
  • [贪心算法] 加油站 单调递增的数字 坏了的计算器 合并区间 无重叠区间
  • MUX VLAN -- PVLAN
  • 每日一题之杨辉三角
  • 雕琢健康生活,奏响养生乐章
  • 一周掌握Flutter开发--9. 与原生交互(上)
  • Jmeter触发脚本备份
  • 《白帽子讲 Web 安全》之服务端请求伪造(SSRF)深度剖析:从攻击到防御
  • Sa-Token
  • 探索高效的图像处理:SMFA 模块与 DMlp 类的实现解析
  • 《 C语言实现:金字塔式星号图案打印》