【机器学习】卷积和反向传播

news2024/11/22 17:41:52

一、说明

        自从 AlexNet 在 2012 年赢得 ImageNet 竞赛以来,卷积神经网络 (CNN) 就变得无处不在。从不起眼的 LeNet 到 ResNets 再到 DenseNets,CNN 无处不在。

        您是否想知道 CNN 的反向传播中会发生什么,特别是反向传播在 CNN 中的工作原理。如果您读过反向传播,您就会了解它是如何在具有全连接层的简单神经网络中实现的。 (Andrew Ng 在 Coursera 上的课程对此做了很好的解释)。但是,对于我的一生,我无法理解反向传播如何与卷积层一起工作。

我知道,您不必了解反向传播的数学复杂性即可实现 CNN。您不必手动实现它们。因此,大多数深度学习书籍也没有涵盖它。

 

        这篇文章最重要的是向您展示这一点:

我们都知道卷积层的前向传递使用卷积。但是,反向传播期间的反向传递也使用了卷积!

        但如果您已经了解反向传播中的链式法则,那么您可以跳到下一节。

二、了解反向传播中的链式法则 

        考虑这个方程

f(x,y,z) = (x + y)z

        为了让它更简单,让我们把它分成两个方程。

        现在,让我们为其绘制一个计算图,其中 x、y、z 的值为x = -2、y = 5、z = 4。

        f = q*z 的计算图,其中 q = x + y

        当我们求解方程时,当我们从左向右移动时(“前向传递”),我们得到的输出为f = -12

        现在让我们进行向后传递。比如说,就像在反向传播中一样,我们在每个阶段导出从右到左移动的梯度。因此,最后,我们必须得到输入 x、y 和 z 的梯度值 — ∂f/∂x ∂f/∂y∂f/∂z用 x 来区分函数 f, y 和 z)

        从右到左,在乘法门处,我们可以对f进行微分以获得qz处的梯度— ∂f/∂q∂f/∂z。在加法门,我们可以对q进行微分以获得xy处的梯度— ∂q/∂x∂q/∂y。

计算计算图中的梯度及其值

       

我们必须找到∂f/∂x∂f/∂y ,但我们只得到∂q/∂x和∂q/∂y的值那么,我们该怎么做呢?

我们如何找到 ∂f/∂x∂f/∂y

        这可以使用微分链式法则来完成。根据链式法则,我们可以求出∂f/∂x

微分链式法则

        我们可以将∂f/∂x∂f/∂y计算为:

具有所有梯度的计算图的向后传递

三、卷积层中的链式法则

        现在我们已经完成了一个简单的计算图,我们可以将 CNN 想象成一个巨大的计算图。假设计算图中有一个门f,输入为x 和 y,输出为z。

一个简单的函数 f,将 x 和 y 作为输入并输出 z

       

        我们可以轻松计算局部梯度——将 z 相对于 x 和 y 微分∂z/∂x∂z/∂y

        对于前向传播,我们穿过 CNN,遍历其各层,最后使用损失函数获得损失。当我们开始逐层向后计算损失时,我们从前一层得到损失的梯度为∂L/∂z为了将损失传播到其他门,我们需要找到∂L/∂x∂L/∂y

局部梯度可以使用函数 f 计算。我们需要找到 𝛛  L/ 𝛛  x 𝛛  L/ 𝛛  y,因为它需要传播到其他层。

        链式法则对我们有帮助。使用链式法则,我们可以计算∂L/∂x∂L/∂y,这将馈送到扩展计算图中的其他门

求 x 和 y 的损失梯度

        那么,这与 CNN 卷积层中的反向传播有什么关系呢?

        现在,假设函数f 是输入 X 和滤波器 F之间的卷积。输入 X 是 3x3 矩阵,滤波器 F 是 2x2 矩阵,如下所示:

具有输入 X 和滤波器 F 的简单卷积层示例

        输入 X 和滤波器 F 之间的卷积得到输出 O。这可以表示为:

X 和 F 之间的卷积函数,给出输出 O

卷积运算给出输出 O 的值

        这给了我们前向传球!让我们来看看向后传递。如前所述,在向后传递期间,我们得到相对于下一层输出 O 的损失梯度为∂L/∂O。结合我们之前使用链式法则和反向传播的知识,我们得到:

向后传递期间的函数 f

        如上所示,我们可以找到相对于输出 O 的局部梯度∂O/∂X∂O/∂F 。利用前几层的损失梯度 — ∂L/∂O并使用链式法则,我们可以计算∂L /∂X∂L/∂F

好吧,但是为什么我们需要找到∂L/∂X∂L/∂F呢?

为什么我们需要找到 ∂L/∂X 和 ∂L/∂F

四、所以我们来求 X 和 F 的梯度 — ∂L/∂X∂L/∂F

4.1 求 ∂L/∂F

        正如我们之前所做的那样,这有两个步骤。

  • 求局部​​梯度∂O/∂F
  • 使用链式法则求∂L/∂F

        步骤 1:求局部梯度 — ∂O/∂F:

        这意味着我们必须区分输出矩阵 O 和滤波器 F。通过我们的卷积运算,我们知道这些值。因此,让我们开始区分 O- O11 的第一个元素与 F — F11 、 F12、F21 和 F22 的元素

步骤 2:使用链式法则:

        正如我们之前的例子中所描述的,我们需要找到∂L/∂F

        OF是矩阵。并且∂O/∂F将是矩阵O对于矩阵F的偏导数!最重要的是我们必须使用链式法则。这看起来确实很复杂,但幸运的是我们可以使用下面的公式来扩展它。

使用链式法则导出矩阵相对于矩阵的偏导数的公式

       

展开,我们得到..

∂L/∂F的导数

        将方程 A 中的局部梯度值 — ∂O/∂F 代入,我们得到

使用方程 A 中的局部梯度值

        如果你仔细观察的话,这就是我们非常熟悉的操作。我们可以将其表示为输入 X和损失梯度∂L/∂O 之间的卷积运算,如下所示:

∂L/∂F = 输入矩阵 X 与损失梯度 ∂L/∂O 的卷积

∂L/∂F 只不过是输入 X 和下一层的损失梯度 ∂L/∂O 之间的卷积

4.2 求 ∂L/∂X:

        步骤 1:求局部梯度 — ∂O/∂X:

        与我们之前找到局部梯度的方式类似,我们可以找到∂O/∂X

局部梯度 ∂O/∂X

        步骤 2:使用链式法则:

        将其展开并代入方程 B,我们得到

使用方程中的局部梯度计算 ∂L/∂X的导数

        好的。现在我们有了 ∂L/∂X 的值不管你相信与否,这甚至可以表示为卷积运算。

∂L/∂X 可以表示为 180 度旋转滤波器 F 和损失梯度 ∂L/∂O 之间的“完全”卷积

首先,让我们将滤镜 F 旋转 180 度。这是通过先垂直翻转然后水平翻转来完成的。

将滤镜 F 翻转 180 度 — 垂直和水平翻转

        现在,让我们在这个翻转的滤波器 F 和 ∂L/∂O 之间进行“完全”卷积,如下所示:(这就像将一个矩阵从右到左、从下到上滑动到另一个矩阵上)

180 度翻转滤波器 F 和损失梯度 ∂L/∂O 之间的全卷积运算可视化

        上面的全卷积生成 ∂L/∂X 的值,因此我们可以将 ∂L/∂X 表示为

∂L/∂X 可以表示为 180 度旋转滤波器 F 和损失梯度 ∂L/∂O 之间的“完全”卷积

好了,现在我们已经找到了∂L/∂X 和 ∂L/∂F,我们现在可以得出这个结论

卷积层的前向传播和反向传播都是卷积

总结一下:

如何计算 ∂L/∂X 和 ∂L/∂F

五、结束语

        希望这有助于解释反向传播在 CNN 卷积层中的工作原理。如果您想了解更多相关信息,请查看下面的链接。并通过为这篇文章鼓掌来表达一些爱。

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

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

相关文章

【知识整理】技术新人的培养计划

一、培养计划落地实操 1. 概要 新人入职,要给予适当的指导,目标: 1、熟悉当前环境: 生活环境:吃饭、交通、住宿、娱乐 工作环境:使用的工具,Mac、maven、git、idea 等 2、熟悉并掌握工作技…

Android---Jetpack Compose学习003

Compose 状态。本文将探索如何在使用 Jetpack Compose 时使用和考虑状态,为此,我们需要构建一个 TODO 应用,我们将构建一个有状态界面,其中会显示可修改的互动式 TODO 列表。 状态的定义。在科学技术中,指物质系统所处…

【C深度解剖】前置++与后置++

简介:本系列博客为C深度解剖系列内容,以某个点为中心进行相关详细拓展 适宜人群:已大体了解C语法同学 作者留言:本博客相关内容如需转载请注明出处,本人学疏才浅,难免存在些许错误,望留言指正 作…

相机图像质量研究(12)常见问题总结:光学结构对成像的影响--炫光

系列文章目录 相机图像质量研究(1)Camera成像流程介绍 相机图像质量研究(2)ISP专用平台调优介绍 相机图像质量研究(3)图像质量测试介绍 相机图像质量研究(4)常见问题总结:光学结构对成像的影响--焦距 相机图像质量研究(5)常见问题总结:光学结构对成…

关于Navicat导入sql文件后er图乱序问题

关于Navicat导入sql文件后er图乱序问题 具体操作如下: 点击左下角刷新旁边的小三角

涤生大数据实战:基于Flink+ODPS历史累计计算项目分析与优化(上)

涤生大数据实战:基于FlinkODPS历史累计计算项目分析与优化(一) 1.前置知识 ODPS(Open Data Platform and Service)是阿里云自研的一体化大数据计算平台和数据仓库产品,在集团内部离线作为离线数据处理和存…

数据结构(3) 顺序表存储结构

顺序表存储结构 存储结构顺序结构定义基本操作的实现静态分配问题 动态分配代码功能 顺序表的特点: 顺序表小结顺序表的插入删除插入删除小结 顺序表的查找按位查找按值查找小结 各位小伙伴想要博客相关资料的话关注公众号:chuanyeTry即可领取相关资料! …

Codeforces Round 924 E. Modular Sequence

E. Modular Sequence 题意 对于一个长度为 n n n 的数组 a a a,定义它是 g o o d good good 的当且仅当: a 1 x a_1 x a1​x a i a i − 1 y a_{i} a_{i - 1} y ai​ai−1​y 或 a i a i − 1 m o d y i ≥ 2 a_{i} a_{i - 1} mod \hspace{…

【Linux】内核中的链表

🔥博客主页:PannLZ 🎋系列专栏:《Linux系统之路》 🥊不要让自己再留有遗憾,加油吧! 文章目录 链表1.创建和初始化2.创建节点3.添加节点4.删除节点5.遍历 链表 内核开发者只实现了循环双链表&am…

nodejs学习计划--(十)会话控制及https补充

一、会话控制 1.介绍 所谓会话控制就是 对会话进行控制 HTTP 是一种无状态的协议,它没有办法区分多次的请求是否来自于同一个客户端, 无法区分用户 而产品中又大量存在的这样的需求,所以我们需要通过 会话控制 来解决该问题 常见的会话控制…

中科大计网学习记录笔记(十):P2P 应用

前言: 学习视频:中科大郑烇、杨坚全套《计算机网络(自顶向下方法 第7版,James F.Kurose,Keith W.Ross)》课程 该视频是B站非常著名的计网学习视频,但相信很多朋友和我一样在听完前面的部分发现信…

CSP-动态规划-最长公共子序列(LCS)

一、动态规划 动态规划(Dynamic Programming,简称DP)主要用于求解可以被分解为相似子问题的复杂问题,特别是在优化问题上表现出色,如最短路径、最大子数组和、编辑距离等。动态规划的核心思想是将原问题分解为较小的子…

【MySQL】MySQL函数学习和总结

🌈个人主页: Aileen_0v0 🔥热门专栏: 华为鸿蒙系统学习|计算机网络|数据结构与算法 ​💫个人格言:“没有罗马,那就自己创造罗马~” #mermaid-svg-Ny0xnYjfHqF7s3aS {font-family:"trebuchet ms",verdana,arial,sans-serif;font-siz…

C++ //练习 6.3 编写你自己的fact函数,上机检查是否正确。

C Primer(第5版) 练习 6.3 练习 6.3 编写你自己的fact函数,上机检查是否正确。 环境:Linux Ubuntu(云服务器) 工具:vim 代码块 /********************************************************…

Linux系统中HTTP代理的常见问题及解决方案

亲爱的Linux用户们,是不是有时候觉得HTTP代理就像是一个魔法盒子,让你在数字世界中自由穿梭?但是,就像所有的魔法物品一样,它也会偶尔出点小状况。今天,我们就来一起探讨一下Linux系统中HTTP代理的常见问题…

购物|电商购物小程序|基于微信小程序的购物系统设计与实现(源码+数据库+文档)

电商购物小程序目录 目录 基于微信小程序的购物系统设计与实现 一、前言 二、系统功能设计 三、系统实现 1、用户前台功能实现 2、管理员后台功能实现 四、数据库设计 1、实体ER图 2、具体的表设计如下所示: 五、核心代码 六、论文参考 七、最新计算机毕设…

【原创 附源码】Flutter安卓及iOS海外登录--Tiktok登录最详细流程

最近接触了几个海外登录的平台,踩了很多坑,也总结了很多东西,决定记录下来给路过的兄弟坐个参考,也留着以后留着回顾。更新时间为2024年2月7日,后续集成方式可能会有变动,所以目前的集成流程仅供参考&#…

【数据结构】14 队列(带头结点的链式存储和顺序存储实现)

定义 队列是一个有序线性表,但是队列的插入、删除操作是分别在线性表的两个不同端点进行的。 设一个队列 Q ( a 1 , a 2 , . . . , a n ) Q (a_1, a_2,...,a_n) Q(a1​,a2​,...,an​),那么 a 1 a_1 a1​被称为队头元素, a n a_n an​为队…

漫漫数学之旅017

文章目录 经典格言数学习题古今评注名人小传(一)亚当斯密(二)J理查德高特三世 经典格言 科学是热情与迷信之毒的最佳解毒剂。——亚当斯密(Adam Smith) 咳咳,各位看官,且听我用轻松…

leetcode:买卖股票最佳时机二

思路: 使用贪心算法:局部最优是将买卖过程中产生的正数进行相加,进而使得最后结果最大(全局最优)。 price [7,1,5,10,3,6,4] -6,4,5,-7,3,-2 正数相加就得到了最大 代码实现: 1.循环中下标从1开始 …