聊聊关于矩阵反向传播的梯度计算

news2024/12/24 20:35:44

目录

1. 前向传播

2. 反向传播

3. 矩阵反向传播

4. 总结


1. 前向传播

建立如图所示的简单网络

W 是权重矩阵,初始赋值为 2*2 的矩阵

X 是输入特征,初始赋值为 2*1 的矩阵

这样通过矩阵乘法 , Y = WX ,应该得到一个 2*1 的输出矩阵

最后定义loss 为二范数的平方,即 out = 0.22^2 + 0.26^2 = 0.116

 

代码演示为:

torch.norm 是计算矩阵范数的函数

 

2. 反向传播

反向传播的计算根据链式法则,这里不作数学上的推导。在计算图当中,只需要记住以下常用的即可:(注:需要注意的是,传递的值是反向传递过来的,还是正向传播输入的)

  • 加法节点:上游传回来的值直接传递到下游
  • 乘法节点:上游传回来的值,乘上输入信号的翻转值
  • Max 门:上游传来的值,只传递给输入信号的最大者,其余为0
  • ReLU : 如果输入信号大于 0,则上游直接传递;否则,为0

本章,只需要知道乘法节点计算图传递的规则即可

3. 矩阵反向传播

先将结果进行展示:

 

 


 

首先,Y 的梯度很容易计算,Y = [0.22 0.26](转置)

因为这里out 是二范数的平方,因此out = x1^2 + x2^2 ,对Y进行偏导的话,就是2倍的关系

 


 

对W和X进行计算的话,因为这里是乘法节点(W*X),因此这里需要将输入信号反转

例如求取W反向传播,应该是上游传递过来的和X的矩阵乘法 

这里只要记住反向传播的维度要和输入保持一致就行了

也就是说,目标是得到一个2*2大小的W反向传播,已经知道上游传过来的是一个2*1大小的矩阵,而将输入信号翻转的X是一个2*1大小的。那么根据矩阵乘法,只能是上游传递过来的 * X的转置

 

 


同样的道理,对X计算反向传播

目标是得到一个2*1大小的X反向传播,已经知道上游传过来的是一个2*1大小的矩阵,而将输入翻转的W是一个2*2大小的。那么根据矩阵乘法,只能是W的转置 * 上游传递过来的值

 

4. 总结

本章采用的是 W * X = Y 的方式计算。因为资料或者书籍上面有时候矩阵乘法的顺序会不一样,有的还会加上转置等等。其实这些都是为了满足矩阵乘法规则

为了不会混乱,可以这样记忆。可以不用考虑乘法的顺序或者有无转置

A * B = C 的矩阵乘法

计算谁的时候,就用反向传递的值替换掉谁,然后将另一个元素转置。顺序不变

例如:

W_{2*2} * X_{2*1} = Y_{2*1}

计算W梯度的时候,用反向传递的值替换掉W,变成 y * X(这里y是反向传递的值,本章y = 2 Y)

然后另一个元素转置,变成y * X(转置)

计算X梯度的时候,用反向传递的值替换掉X,变成 W * y(这里y是反向传递的值,本章y = 2 Y)

然后另一个元素转置,变成W(转置)* y

或者根据上游传递的信号的维度,和 输入信号翻转的维度进行矩阵计算,也可以得到正确的计算

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

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

相关文章

在这竞争激烈的时代,如何才能够在激烈竞争中脱颖而出呢

不管是在职场想要获得认可得到晋升,还是与客户谈合作;都需要你能够脱颖而出。让他人能够看到你并且认可你。那如何才能脱颖而出呢?首先你要先认识自己,知道自己有什么优势、劣势、技能、兴趣、爱好等等。明确自己有什么价值&#…

软件工程(1)--初识基础概念

前言 学习了半年的软件工程课程,总不能一无所获吧,故此写下文章总结一番。 软件工程是一门综合性交叉学科,它涉及计算机科学、工程科学、管理科学和数学等领域。学习目标是掌握需求分析、软件设计、编码风格、软件测试的工程化方法。 软件程序…

什么是股票量化研究?

谈到股票量化研究领域,肯定少不了有自动交易系统的支撑,像平时能将股票池中的数据挖掘出来也能熟能生巧的进行自助量化研究,包括数据接口系统的开发使用都是受到量化的影响,那么,如何看待股票量化研究?像平…

arm版(以uos为例)linux安装mysql8

官网下载:https://downloads.mysql.com/archives/community/上传到服务器,然后解压缩tar -zxvf mysql-8.0.31-linux-glibc2.17-aarch64.tar.gzmv mysql-8.0.31-linux-glibc2.17-aarch64 /usr/local/mysql-8创建MySQL数据目录mkdir -p /datacd datamkdir …

打通对账的最后一公里——对账管理平台

背景 日新月异的科技与快速变化的消费需求不断驱动零售模式的变革,实体商业与数字经济、传统零售与新零售,逐渐融合并形成了全渠道、一体化的发展趋势,也改变了以往企业认知中线上、线下渠道割裂的思维定式,零售快消类企业纷纷建…

电子技术——MOS管的物理特性

电子技术——MOS管的物理特性 增强型 MOSFET 是应用最广泛的场效应晶体管。除了最后一节,我们整章讨论的都是增强型 MOSFET 。我们从它的物理元件结构和物理操作入手,在下一节我们会在本节的基础上学习 MOSFET 的电流-电压特性。 元件结构 上图展示了n-…

Day876.redolog刷盘问题 -MySQL实战

redolog刷盘问题 Hi,我是阿昌,今天学习记录的是关于redolog刷盘问题的内容。 平时的工作中,一条 SQL 语句,正常执行的时候特别快,但是有时也不知道怎么回事,它就会变得特别慢,并且这样的场景很…

RPA自动化办公07——Uibot流程加入python插件

参考:扩展UiBot命令_UiBot开发者指南 Uibot是非常方便,但是有些功能可能还需要别的语言来完成,例如python语言,作为胶水语言,在一个Uibot里面插入python脚本是很方便,好用的。 加入插件的位置 在新建一个流…

Seata分布式事务模式(TA、TCC、XA、SAGA)工作机制

前言 分布式应用痛点 分布式应用有一个比较明显的问题就是,一个业务流程通常需要几个服务来完成,业务的一致性很难保证。为了保障业务一致性,每一步都要在 catch 里去处理前面所有的“回滚”操作,可读性及维护性差,开…

分布式微服务

目录 认识微服务 单体服务架构的特点 分布式架构的特点 微服务 SpringCloud 总结 服务拆分及远程调用 服务拆分原则 假如在订单服务中,需要一起返回用户的信息 Eureka注册中心 Eureka的结构和作用 问题:order-service如何得知user-service实例…

基于拓扑的单树分割用于地面激光扫描点云的自动处理

Paper题目:Topology-based individual tree segmentation for automated processing of terrestrial laser scanning point clouds ABSTRACT 地面激光扫描 (TLS) 是一种基于地面的方法,可通过光探测和测距 (LiDAR) 技术快速获取 3D 点云。从 TLS 点云量…

搜索引擎关键字智能提示实践

为了提高阅读体验,请移步到:搜索引擎关键字智能提升实践一、背景搜索关键字智能提示是一个搜索应用的标配,主要作用是避免用户输入错误的搜索词,并将用户引导到相应的关键词上,以提升用户使用体验。雪球以连接人与资产…

【K8S之调度器流程和扩展】如何给 scheduler 添加扩展插件、关闭默认插件、创建多个 scheduler?

参考 自定义 Kubernetes 调度器 阳明https://github.com/cnych/sample-scheduler-extender kube-scheduler 源码位置 kubernetes 调度器的源码位于 kubernetes/pkg/scheduler 中,大体的代码目录结构如下所示:(不同的版本目录结构可能不太一样) kuber…

如何检测文章被搜索引擎收录(如何让搜索引擎收录网站)

如何写网站内容才利于搜索引擎收录 网站关键词要想有好的排名,网站本身必须是被搜索引擎收录的状态,另外,网站上的相关内容收录越多,搜索引擎给与网站关键词的排名靠前概率会越大,那么,网站内容怎样来写会…

[Linux]生产者消费者模型(基于BlockQueue的生产者消费者模型 | 基于环形队列的生产者消费者模型 | 信号量 )

文章目录生产者消费者模型函数调用角度理解生产者消费者模型生活角度理解生产者消费者模型为什么要使用生产者消费者模型生产者消费者模型优点321原则基于BlockingQueue的生产者消费者模型POSIX信号量回顾信号量概念信号量操作函数环形队列基于环形队列的生产者消费者模型生产者…

Android Studio如何打jar包和aar包并使用

Android Studio如何打jar包和使用生成jar包方式module方式生成jar方式第一类修改主app的方式第二类:通过新建module方式生成jar包如何使用jar包aar生成并使用aar生成aar使用之前有篇文章介绍了so库的生成和使用,看这里,但是,如果我…

[NOI Online #1 入门组] 文具订购

题目描述: 小明的班上共有 n 元班费,同学们准备使用班费集体购买 3 种物品: 圆规,每个 7 元。笔,每支 4 元。笔记本,每本 3 元。 小明负责订购文具,设圆规,笔,笔记本的订购数量分别…

Linux 下安装 JDK 和 Maven 环境

目录 1. 进入 maven 官网下载安装包 2. 安装 maven 3. 添加 Maven 环境变量 4. 配置 Maven 本地仓库 5. 配置镜像 6. 配置 JDK 7. 测试 操作系统:Centos 7.6 安装 maven 环境前,需要先安装 java 环境,笔者这里已经成功安装 java 环境&…

PHP基础知识 - PHP面向对象OOP

目录 一. 面向对象基本知识 1.1 面向对象概念 1.2 什么是类 1.3 什么是对象 1.4 类与对象的关系 1.5 PHP创建类的示例 二、类、属性、方法的修饰符 2.1 类的修饰符 2.2 成员方法的修饰符 2.3 成员属性修饰符 2.4 访问控制修饰符 2.5 static 静态修饰符 2.6 final…

多模块项目中,SpringBoot项目下启动失败-无法加载主类com.xch.XxxApplication

错误:项目启动时,无法找到主类(启动类)XxxApplication由于,主类需要先被编译,再被JVM找到编译后的文件运行如:XxxApplication.java-(编译)-XxxApplication.class-(运行)所以,原因:1、未编译情况…