卷积神经网络 - 梯度和反向传播算法

news2025/3/22 9:37:26

在卷积网络中,参数为卷积核中权重以及偏置。和全连接前馈网络类似,卷积网络也可以通过误差反向传播算法来进行参数学习。本文我们从数学角度,来学习卷积神经网络梯度的推导和其反向传播算法的原理。

一、梯度:损失函数 L 关于第 𝑙 层的卷积核𝑾 和 偏置B的偏导数

在全连接前馈神经网络中,梯度主要通过每一层的误差项 𝛿 进行反向传播, 并进一步计算每层参数的梯度。

在卷积神经网络中,主要有两种不同功能的神经层:卷积层和汇聚层。而参数为卷积核以及偏置,因此只需要计算卷积层中参数的梯度。

不失一般性,对第 𝑙 层为卷积层,第 𝑙 − 1 层的输入特征映射为 𝒳^(𝑙−1) ∈ R^(𝑀×𝑁×𝐷),通过卷积计算得到第𝑙层的特征映射净输入𝒵^(𝑙) ∈R^(𝑀′×𝑁′×𝑃)。第𝑙层的第𝑝(1 ≤ 𝑝 ≤ 𝑃)个特征映射净输入:

其中 𝑾 ^(𝑙,𝑝,𝑑) 和 𝑏^(𝑙,𝑝) 为卷积核以及偏置。第 𝑙 层中共有 𝑃 × 𝐷 个卷积核和 𝑃 个偏 置,可以分别使用链式法则来计算其梯度。

根据卷积的导数计算公式,可以参考:

卷积神经网络 - 卷积的变种、数学性质-CSDN博客

损失函数 L 关于第 𝑙 层的卷积核 𝑾 ^(𝑙,𝑝,𝑑) 的偏导数为:

其中,

为损失函数关于第 𝑙 层的第 𝑝 个特征映射净输入 𝒁(𝑙,𝑝) 的偏导数。

同理可得,损失函数关于第 𝑙 层的第 𝑝 个偏置 𝑏^(𝑙,𝑝) 的偏导数为:

在卷积网络中,每层参数的梯度依赖其所在层的误差项 𝛿^(𝑙,𝑝)。

二、卷积神经网络的反向传播算法

卷积层和汇聚层中误差项的计算有所不同,因此我们分别计算其误差项。

1、汇聚层

当第 𝑙 + 1 层为汇聚层时,因为汇聚层是下采样操作,𝑙 + 1 层的每个神经元的误差项 𝛿 对应于第 𝑙 层的相应特征映射的一个区域。𝑙 层的第 𝑝 个特征映射中的每个神经元都有一条边和 𝑙 + 1 层的第 𝑝 个特征映射中的一个神经元相连。

根据链式法则,第 𝑙 层的一个特征映射的误差项 𝛿^(𝑙,𝑝),只需要将 𝑙 + 1 层对应特征映射的误差项 𝛿^(𝑙+1,𝑝) 进行上采样操作(和第 𝑙 层的大小一样),再和 𝑙 层特征映射 的激活值偏导数逐元素相乘,就得到了 𝛿^(𝑙,𝑝)。

这段话比较抽象,大家可以慢慢理解,着重理解前后层之间误差项的关系:

第 𝑙 层的第 𝑝 个特征映射的误差项 𝛿^(𝑙,𝑝) 的具体推导过程如下:

其中 为第 𝑙 层使用的激活函数导数,up 为上采样函数(up sampling),与汇聚层中使用的下采样操作刚好相反。

如果下采样是最大汇聚,误差项 𝛿^(𝑙+1,𝑝) 中每个值会直接传递到前一层对应区域中的最大值所对应的神经元,该区域中其他神经元的误差项都设为 0。

如果下采样是平均汇聚,误差项 𝛿^(𝑙+1,𝑝) 中每个值会被平均分配到前一层对应区域中的所有神经元上。

2、卷积层

当𝑙 + 1层为卷积层时,假设特征映射净输入𝒵^(𝑙+1) ∈ R^(𝑀′×𝑁′×𝑃),其中第𝑝(1 ≤ 𝑝 ≤ 𝑃)个特征映射净输入:

其中𝑾^(𝑙+1,𝑝,𝑑) 和𝑏^(𝑙+1,𝑝) 为第𝑙+1层的卷积核以及偏置。第𝑙+1层中共有𝑃×𝐷 个卷积核和 𝑃 个偏置。

第 𝑙 层的第 𝑑 个特征映射的误差项 𝛿^(𝑙,𝑑) 的具体推导过程如下:

可以看到,第l层的误差项,还是可以通过第l+1层的误差项推导而来,就是所谓的反向传播算法。和前馈全连接神经网络的反向传播算法有所不同,但是思路是类似的,理解这一点很关键。

三、附:卷积神经网络中的上采样和下采样

在卷积神经网络(CNN)中,上采样和下采样是两个关键操作,用于调整特征图的空间尺寸,从而达到提取有用特征和恢复空间分辨率的目的。下面详细解释这两个概念,并举例说明:

1. 下采样(Downsampling)

定义与目的
下采样主要用于减少特征图的空间尺寸。常见方法有最大池化平均池化

  • 最大池化:在一个预定义区域内(如2×2),取最大值。
  • 平均池化:在该区域内取平均值。

作用

  • 降维和降低计算量:减小后续层输入的尺寸,从而减少参数量和计算量。
  • 增强局部不变性:对小幅平移、旋转和尺度变化不敏感,提高特征的鲁棒性。

例子
假设我们有一张特征图尺寸为 28×28×64(64个通道),使用 2×2 最大池化,步幅为 2。池化操作会把每个2×2区域中的最大值选出,从而将尺寸缩小到 14×14×64。这一步骤使得网络更关注局部最显著的特征,同时降低计算资源消耗。

2. 上采样(Upsampling)

定义与目的
上采样用于增大特征图的空间尺寸,常见方法包括最近邻插值双线性插值以及转置卷积(反卷积)

  • 最近邻插值:简单地复制最近的像素值。
  • 双线性插值:根据周围像素的线性关系计算新像素值。
  • 转置卷积:通过可学习的卷积核将低分辨率特征图“反向”映射到高分辨率空间,同时恢复部分细节信息。

作用

  • 恢复空间细节:例如在语义分割或图像生成任务中,需要将经过下采样后的特征图恢复到与输入图像相同的分辨率,以便对每个像素做出预测或生成高分辨率图像。

例子
在语义分割任务中,一个常见的网络(如U-Net)首先对输入图像(例如 224×224)经过多层卷积和池化操作进行下采样,最终得到较小的特征图(比如 28×28)。接着,通过上采样(例如转置卷积)将这些特征图逐步恢复到原始尺寸224×224,以便为每个像素分配一个类别标签。上采样过程中,网络不仅简单放大图像,还通过学习对细节进行重建,从而生成更精细的分割结果。

3. 综合说明

  • 下采样
    将输入特征图通过池化操作等方式缩小尺寸,提取局部最重要的特征,同时降低计算量。
    例子:从 28×28×64 的特征图通过2×2最大池化变为 14×14×64。

  • 上采样
    将下采样后的特征图通过插值或转置卷积等方法放大,还原出细节和空间信息。
    例子:在语义分割中,将 28×28×F 的特征图逐步上采样到 224×224,最终得到与原图大小一致的分割图。

这两个操作在网络中通常处于对称结构中(例如编码器-解码器结构):编码器部分通过下采样提取抽象特征,解码器部分通过上采样恢复空间分辨率,最终实现像素级的预测或图像生成。

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

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

相关文章

基于 Java 和深度学习的图像分类应用实践

前言 随着人工智能技术的飞速发展,深度学习在图像处理、自然语言处理等领域展现出强大的能力。然而,许多开发者认为深度学习只能依赖 Python 的框架(如 TensorFlow 或 PyTorch)。事实上,Java 生态也有成熟的深度学习库,如 Deeplearning4j(DL4J),适合企业级应用场景。…

如何实现园区零碳管理?安科瑞EMS3.0推动园区低碳转型

当工业园区电费年耗超千万、碳排数据成监管红线,传统“拉闸限电”式管理已无法应对双碳倒计时——如何让光伏、储能、充电桩“听懂指令”,让每一度电创造3倍价值?187*210*98*782 一、零碳园区管理的三大痛点 1. 能源错配严重:风…

Python Django入门(创建其他网页)

在本章中,你将学习如何使用 Django(http://djangoproject.com/ )来开发一个名为“学习笔记”(Learning Log)的项目,这是一个在线日志系统,让你能够记录所学习的有关特定主题的知识。 我们将为这…

Error: The resource name must start with a letter

Error: The resource name must start with a letter 这个错误通常是由于资源名称(如布局文件、字符串资源、ID 等)不符合命名规则导致的。Android 资源名称必须遵循以下规则: 必须以字母开头(不能以数字或下划线开头&#xff09…

2025年- G23-Lc97-104.二叉树的最大深度-java版(递归调用左右子树)

1.题目描述 2.思路 要用到max函数,返回的时候返回左右子树的最大值。其次要递归调用左右子树,寻找最大深度。 在每个递归返回时,我们 必须把当前节点的深度算进去,否则我们只计算了子树的深度,而没有包括当前节点。 …

Powershell WSL Windows系统复制数据到ubuntu子系统系统

从本地D盘下拷贝数据到ubuntu子系统下 Powershell 管理员打开执行 /mnt/d 此处是本地Windows系统的路径表示/opt ubutu 子系统目录 wsl -d Ubuntu-22.04 -u root -- bash -c cp -rf /mnt/d/nginx.conf /opt/从ubuntu子系统中拷贝数据到本地D盘下 Powershell 管理员打开执行…

到底爱不爱我

L2-3 到底爱不爱我 古代少女有了心上人时,会悄悄折一条树枝,揪那枝上的叶子,揪一片叶子念一句“爱我”,再揪一片念一句“不爱我”…… 这样揪落最后一片叶子的时候,看看是停在“爱”还是“不爱”。 但聪明的慧娘一眼洞…

Python 3.13.2安装教程(安装包)Python 3.13.2 快速安装指南

文章目录 前言一 、Python 3.13.2下载二、Python 3.13.2安装教程1.运行安装程序2.选择安装方式3.自定义安装选项4.开始安装5.安装完成6.打开程序7.验证安装 前言 Python 作为一门通用编程语言,在全球拥有庞大的用户群体。其简洁易读的语法和丰富的库,使…

Linux驱动学习笔记(六)

平台总线 1.平台总线模型也叫platform总线模型,平台总线是Linux系统虚拟出来的总线, 引入总线的概念可以对驱动代码和设备信息进行分离。平台总线模型将一个驱动分成了两个部分:platform_device和platform_driver,例如可使用文件device.c和d…

w264民族婚纱预定系统

🙊作者简介:多年一线开发工作经验,原创团队,分享技术代码帮助学生学习,独立完成自己的网站项目。 代码可以查看文章末尾⬇️联系方式获取,记得注明来意哦~🌹赠送计算机毕业设计600个选题excel文…

Compose 实践与探索十五 —— 自定义触摸

1、自定义触摸与一维滑动监测 之前我们在讲 Modifier 时讲过如下与手势检测相关的 Modifier: Modifier.clickable { } Modifier.combinedClickable { } Modifier.pointerInput {detectTapGestures { } }这里对以上内容就不再赘述了,直接去讲解更复杂的…

炫酷的3D按钮效果实现 - CSS3高级特性应用

炫酷的3D按钮效果实现 - CSS3高级特性应用 这里写目录标题 炫酷的3D按钮效果实现 - CSS3高级特性应用项目介绍核心技术实现1. 基础结构设计2. 视觉效果实现2.1 背景渐变2.2 立体感营造 3. 交互动效设计3.1 悬停效果3.2 按压效果 技术要点分析1. 深度层次感2. 动画过渡3. 性能优…

teaming技术

一.介绍 在CentOS 6与RHEL 6系统中,双网卡绑定采用的是bonding技术。到了CentOS 7,不仅能继续沿用bonding,还新增了teaming技术。在此推荐使用teaming,因其在查看与监控方面更为便捷 。 二.原理 这里介绍两种最常见的双网卡绑定…

【JavaEE进阶】Linux常用命令

目录 🍃前言 🌴pwd 与 ls 🚩pwd 🚩ls 🎍cd 🌲mkdir与touch 🚩mkdir 🚩touch 🍀cat与rm 🚩cat 🚩rm 🎋vim 🚩…

【FastGPT】利用知识库创建AI智能助手

【FastGPT】利用知识库创建AI智能助手 摘要创建知识库上传文档创建应用准备提示词准备开场白关联知识库AI回答效果 摘要 关于FastGPT的部署,官方提供了docker-compose方式的部署文档,如果使用的是podman和podman-compose的同学,可以参考这篇…

【DeepSeek 学c++】dynamic_cast 原理

用于向下转化。 父类引用指向指类对象 假设父亲是a, 子类是b. B* pb new B; 子类对象 A* pa 父类引用指向子类对象, 那么向上转化 Apa pb 这个是自动完成的,隐式转化,不需要dynamic_cast 向下转化指的是 A pa new B。 这个是指向子类对象…

【递归,搜索与回溯算法篇】- 名词解释

一. 递归 1. 什么是递归? 定义: 函数自己调用自己的情况关键点: ➀终止条件: 必须明确递归出口,避免无限递归 ➁子问题拆分: 问题需能分解成结构相同的更小的子问题缺点: ➀栈溢出风险&#x…

Beans模块之工厂模块注解模块@Qualifier

博主介绍:✌全网粉丝5W,全栈开发工程师,从事多年软件开发,在大厂呆过。持有软件中级、六级等证书。可提供微服务项目搭建与毕业项目实战,博主也曾写过优秀论文,查重率极低,在这方面有丰富的经验…

数据结构---图的深度优先遍历(DFS)

一、与树的深度优先遍历之间的联系 1.类似于树的先根遍历。 递归访问各个结点: 2.图的深度优先遍历 先设置一个数组,初始值全部设置为false,先访问一个结点,在用一个循环,依次检查和这个结点相邻的其他结点&#xff0c…

健康养生:拥抱生活,从呵护身心开始

在这个瞬息万变的时代,人们好似不停旋转的陀螺,在忙碌中迷失了对健康的关注。然而,健康养生绝非可有可无的点缀,它是幸福生活的基石,如同阳光与空气,滋养并支撑着我们的生命。当我们懂得拥抱健康养生&#…