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

卷积神经网络 - ResNet(残差网络)

残差网络(Residual Network,ResNet)通过给非线性的卷积层增加直连边 (Shortcut Connection)(也称为残差连接(Residual Connection))的方式来提高信息的传播效率。

这是一种特殊的深度神经网络结构,由 Kaiming He 等人在 2015 年提出,目的是解决深层网络训练中出现的退化问题和梯度消失问题。

假设在一个深度网络中,我们期望一个非线性单元(可以为一层或多层的卷积层)𝑓(𝒙; 𝜃) 去逼近一个目标函数为 h(𝒙)。如果将目标函数拆分成两部分:恒等函数(Identity Function)𝒙 和残差函数(Residue Function)h(𝒙) − 𝒙。

根据通用近似定理,一个由神经网络构成的非线性单元有足够的能力来近似逼近原始目标函数或残差函数,但实际中后者更容易学习。因此, 原来的优化问题可以转换为:让非线性单元 𝑓(𝒙; 𝜃) 去近似残差函数 h(𝒙) − 𝒙,并 用 𝑓(𝒙; 𝜃) + 𝒙 去逼近 h(𝒙)。

下图给出了一个典型的残差单元示例。残差单元由多个级联的(等宽)卷 积层和一个跨层的直连边组成,再经过 ReLU 激活后得到输出:

残差网络就是将很多个残差单元串联起来构成的一个非常深的网络。

接下来,我们从其核心概念、设计思想和举例说明:

1. 核心思想

  • 深层网络的难题
    随着网络层数加深,传统网络往往难以训练,原因在于:

    • 梯度在反向传播中逐渐变小(梯度消失),导致前面层更新缓慢。

    • 层数过深时,网络容易出现“退化”问题,即即使加深网络,训练误差也可能反而增大。

  • 残差学习(Residual Learning)
    ResNet 的核心思想是让网络学习“残差函数”,而不是直接学习原始映射。设原始目标映射为 H(x)(输入 x 到输出之间的映射),传统网络直接逼近 H(x)。而在残差网络中,设计层(即残差块)学习一个残差函数 F(x)=H(x)−x,因此原始映射可以表示为

    H(x)=F(x)+x.

    这种“快捷连接”(skip connection)直接将输入 x 加到输出上,帮助梯度直接传递,使得更深的网络也能有效训练。

2. 残差块结构

基本残差块通常由以下部分构成:

  1. 两个或三个卷积层:负责学习残差函数 F(x)。

  2. 激活函数(通常是 ReLU):在每个卷积层之后加上非线性变换。

  3. 快捷连接(Shortcut/Skip Connection):将输入 x 直接加到残差输出 F(x) 上,形成输出 H(x)=F(x)+x。

举例说明
假设一个简单的残差块,输入 x 经过两层卷积操作:

  • 第 1 层:卷积 W_1 + 批归一化 + ReLU,得到中间特征 F_1(x)。

  • 第 2 层:卷积 W_2 + 批归一化,得到残差 F(x)。

  • 然后输出为

    H(x) = F(x) + x.
  • 最后再经过 ReLU 得到最终输出。

这种设计让网络可以更容易地学习恒等映射(即如果 F(x)=0,那么 H(x)=x),从而防止网络层数增加时性能下降。

3. 残差网络的优势

  • 缓解梯度消失:快捷连接使得梯度在反向传播时可以直接传递给较早的层,从而避免梯度消失问题。

  • 易于训练更深的网络:通过残差块,网络可以堆叠几十甚至上百层,而不会出现明显的退化现象。

  • 更好的泛化能力:实验表明,ResNet 在 ImageNet 等大型数据集上表现优异,并推动了深度学习向更深层次的发展。

4. 直观比喻

可以将残差网络比作一条高速公路:

  • 普通网络:每一层都是一段独立的路段,如果某一段出现了堵车(梯度消失),整个行程都会受影响。

  • 残差网络:在每段路之间都有直通车道(快捷连接),即使某一段路段“堵车”,信号(梯度)也能通过直通车道直接到达前方,确保整个系统的流畅性。

5. 举例说明

假设我们有一个输入图像 x,通过残差块后得到输出 H(x)。

  • 如果输入 x 的信息本身已经足够好,那么理想情况下网络只需要学习到 F(x)≈0,于是 H(x)≈x。

  • 如果图像存在一些复杂特征需要调整,那么卷积层学习的 F(x) 会捕捉到这些“差异”信息,并加上 x 后得到更合适的特征表示。

例如,在图像分类任务中,如果低层已经能够提取到简单的边缘和纹理,而某些高层需要区分细微的类别差异,残差块就能帮助网络更精确地调整特征表示,而不会因层数加深而导致训练困难。

6. 总结

  • 残差网络通过引入快捷连接,让每个残差块学习输入与输出之间的差异(残差),而不是直接学习复杂的映射。

  • 这种设计有效缓解了深层网络训练中出现的梯度消失和退化问题,使得网络可以更深、更容易训练,并取得更好的性能。

  • 理解残差网络不仅需要从数学公式上掌握 H(x) = F(x) + x 的设计,还需要通过直观比喻和实验观察其对梯度流动和特征提取的积极作用。

这些详细解释和实例能够帮助我们更全面地理解残差网络的设计理念和优势。

相关文章:

卷积神经网络 - ResNet(残差网络)

残差网络(Residual Network,ResNet)通过给非线性的卷积层增加直连边 (Shortcut Connection)(也称为残差连接(Residual Connection))的方式来提高信息的传播效率。 这是一种特殊的深度神经网络结构,由 Kaiming He 等人在 2015 年提出,目的是解…...

GreenPlum学习

简介 Greenplum是一个面向数据仓库应用的关系型数据库,因为有良好的体系结构,所以在数据存储、高并发、高可用、线性扩展、反应速度、易用性和性价比等方面有非常明显的优势。Greenplum是一种基于PostgreSQL的分布式数据库,其采用sharednothi…...

传统神经网络、CNN与RNN

在网络上找了很多关于深度学习的资料,也总结了一点小心得,于是就有了下面这篇文章。这里内容较为简单,适合初学者查看,所以大佬看到这里就可以走了。 话不多说,上图 #mermaid-svg-Z3k5YhiQ2o5AnvZE {font-family:&quo…...

无人机,雷达定点飞行时,位置发散,位置很飘,原因分析

参考: 无人车传感器 IMU与GPS数据融合进行定位机制_gps imu 组合定位原始数-CSDN博客 我的无人机使用雷达定位,位置模式很飘 雷达的更新频率也是10HZ, 而px飞控的频率是100HZ,没有对两者之间的频率差异做出处理 所以才导致无人…...

【Linux探索学习】第二十九弹——线程概念:Linux线程的基本概念与线程控制详解

Linux学习笔记: https://blog.csdn.net/2301_80220607/category_12805278.html?spm1001.2014.3001.5482 前言: 在现代操作系统中,线程是程序执行流的最小单元。与进程相比,线程更加轻量级,创建和销毁的开销更小&…...

做游戏的发展方向

自己做的游戏(询问发展方向) 请选择发展方向(截止时间5.1)(投票截止3.24) (这将影响接下来用的游戏发展(未登录也可参加)) 网页 c(原)...

深入探索 iOS 卡顿优化

认识卡顿 一些概念 FPS:Frames Per Second,表示每秒渲染的帧数,通过用于衡量画面的流畅度,数值越高则表示画面越流畅。CPU:负责对象的创建和销毁、对象属性的调整、布局计算、文本的计算和排版、图片的格式转换和解码…...

# 基于 OpenCV 的选择题自动批改系统实现

在教育领域,选择题的批改工作通常较为繁琐且重复性高。为了提高批改效率,我们可以利用计算机视觉技术,通过 OpenCV 实现选择题的自动批改。本文将详细介绍如何使用 Python 和 OpenCV 实现一个简单的选择题自动批改系统。 1. 项目背景 选择题…...

在Linux系统中将html保存为PNG图片

1 前言 之前使用Pyecharts库在Windows系统中生成图表并转换为PNG格式图片(传送门),现将代码放于Linux服务器上运行,结果发现错误,生成html文件之后无法保存图片。 2 原理 基于Selenium库的保存方案,其原…...

身份验证:区块链如何让用户掌控一切

在网上证明你自称的身份变得越来越复杂。由于日常生活的很多方面现在都在网上进行,保护你的数字身份比以往任何时候都更加重要。 我们可能都接受过安全培训,这些培训鼓励我们选择安全的密码、启用双因素身份验证或回答安全问题,例如“你祖母…...

嵌入式硬件: GPIO与二极管基础知识详解

1. 前言 在嵌入式系统和硬件开发中,GPIO(通用输入输出)是至关重要的控制方式,而二极管作为基础电子元件,广泛应用于信号整流、保护电路等。本文将从基础原理出发,深入解析GPIO的输入输出模式,包…...

Android HAL 架构详解,底层开发不再难

目录 HAL 基础概念 HAL 是个啥? 为啥要有 HAL? HAL 在系统中的位置 HAL 工作原理 抽象接口:硬件的 “通用语言” 接口的设计思路 核心结构体 版本与兼容性 实例:相机 HAL 接口 模块加载:动态链接的魔法 加载步骤 优化策略 实例:加载音频 HAL 通信机制:HAL…...

游戏引擎学习第194天

为当天的活动做铺垫 正在进行游戏开发中的调试和视图功能开发。目标是增加一些新功能,使得在开发过程中能够有效地检查游戏行为。今天的重点是推进用户界面(UI)的开发,并且尝试在调试变量的管理上找到一个折中的解决方案。计划探…...

js文字两端对齐

目录 一、问题 二、原因及解决方法 三、总结 一、问题 1.text-align: justify; 不就可以了吗?但是实际测试无效 二、原因及解决方法 1.原因:text-align只对非最后一行文字有效。只有一行文字时,text-align无效,要用text-alig…...

经典论文解读系列:MapReduce 论文精读总结:简化大规模集群上的数据处理

🧠 MapReduce 论文解读总结:简化大规模集群上的数据处理 原文标题:MapReduce: Simplified Data Processing on Large Clusters 作者:Jeffrey Dean & Sanjay Ghemawat 发表时间:2004 年 发表机构:Google…...

HarmonyOS 介绍

HarmonyOS简介 随着万物互联时代的开启,应用的设备底座将从几十亿手机扩展到数百亿IoT设备。全新的全场景设备体验,正深入改变消费者的使用习惯。 同时应用开发者也面临设备底座从手机单设备到全场景多设备的转变,全场景多设备的全新底座&am…...

每天一篇目标检测文献(六)——Part One

今天看的是《Object Detection with Deep Learning: A Review》 目录 一、摘要 1.1 原文 1.2 翻译 二、介绍 2.1 信息区域选择 2.2 特征提取 2.3 分类 三、深度学习的简要回顾 3.1 历史、诞生、衰落和繁荣 3.2 CNN架构和优势 一、摘要 1.1 原文 Due to object dete…...

ESXI 安装及封装第三方驱动和在ESXI系统下安装驱动

ESXI 安装及封装第三方驱动和在ESXI系统下安装驱动 准备工作在线安装 Windows PowerShell离线安装 Windows PowerShell更新在线更新离线更新 下载 ESXi-Customizer-PS-v2.6.0.ps1安装Python安装pip安装相关插件 下载离线捆绑包下载对应的网卡驱动(如果纯净版可以进去…...

【12】Ajax的原理和解析

一、前言 二、什么是Ajax 三、Ajax的基本原理 3.1 发送请求 3.2 解析内容 3.3 渲染网页 3.4 总结 四、Ajax 分析 五、过滤请求-筛选所有Ajax请求 一、前言 当我们在用 requests 抓取页面的时候,得到的结果可能会和在浏览器中看到的不一样&a…...

双塔模型2之如何选择正确的正负样本

双塔模型:正负样本 选对正负样本的作用 > 改进模型的结构 正样本 什么是正样本?答:曝光且有点击的 “用户-物品” 二元组 存在的问题:存在28法则,即少部分物品(比如热门物品)占大部分点击…...

《八大排序算法》

相关概念 排序:使一串记录,按照其中某个或某些关键字的大小,递增或递减的排列起来。稳定性:它描述了在排序过程中,相等元素的相对顺序是否保持不变。假设在待排序的序列中,有两个元素a和b,它们…...

清晰易懂的Rust安装与配置教程

Rust 是一门以安全性和性能著称的系统级编程语言,适合开发操作系统、游戏引擎和高性能服务。本教程将手把手教你安装 Rust 并配置开发环境,从安装到运行第一个程序,全程无坑! 一、安装 Rust(全平台通用) 1…...

零基础使用AI从0到1开发一个微信小程序

零基础使用AI从0到1开发一个微信小程序 准备操作记录 准备 想多尝试一些新的交互方式,但我没有相关的开发经验,html,JavaScript 等都不了解,看了一些使用AI做微信小程序的视频教程,觉得自己也行…...

基于Spring Boot的社区互助平台的设计与实现(LW+源码+讲解)

专注于大学生项目实战开发,讲解,毕业答疑辅导,欢迎高校老师/同行前辈交流合作✌。 技术范围:SpringBoot、Vue、SSM、HLMT、小程序、Jsp、PHP、Nodejs、Python、爬虫、数据可视化、安卓app、大数据、物联网、机器学习等设计与开发。 主要内容:…...

【Elasticsearch入门到落地】10、初始化RestClient

接上篇《9、hotel数据结构分析》 上一篇我们讲解了导入的宾馆数据库tb_hotel表结构的具体含义,并分析如何建立其索引库。本篇我们来正式进入链接Elasticsearch的Java代码的编写阶段,先进行RestClient的初始化。 RestClient的初始化分为三步,…...

【AI大模型系列】DeepSeek V3的混合专家模型机制-MoE架构(八)

一、什么是MoE架构 MoE架构的核心思想是将输入数据分配给不同的专家子模型,然后将所有子模型的输出进行合并,以生成最终结果。这种分配可以根据输入数据的特征进行动态调整,确保每个专家处理其最擅长的数据类型或任务方面,从而实…...

HarmonyOS之深入解析如何根据url下载pdf文件并且在本地显示和预览

一、文件下载 ① 网络请求配置 下载在线文件,需要访问网络,因此需要在 config.json 中添加网络权限: {"module": {"requestPermissions": [{"name": "ohos.permission.INTERNET","reason&qu…...

HTML5贪吃蛇游戏开发经验分享

HTML5贪吃蛇游戏开发经验分享 这里写目录标题 HTML5贪吃蛇游戏开发经验分享项目介绍技术栈核心功能实现1. 游戏初始化2. 蛇的移动控制3. 碰撞检测4. 食物生成 开发心得项目收获后续优化方向结语 项目介绍 在这个项目中,我使用HTML5 Canvas和原生JavaScript实现了一…...

AI 的出现是否能替代 IT 从业者?

AI 的出现是否能替代 IT 从业者? AI 的快速发展正在深刻改变各行各业,IT 行业也不例外。然而,AI 并非完全替代 IT 从业者,而是与其形成互补关系。本文将从 AI 的优势、IT 从业者的不可替代性、未来趋势等方面,探讨 AI…...

git 操作记录

1、检查子模块是否在主分支上 [git submodule foreach --recursive \\n [ "$(git rev-parse HEAD)" "$(git rev-parse origin/master)" ] \\n && echo " 一致: $name" || echo "不一致: $name"] 使用 git submodule fore…...