deep learning system 笔记 自动微分 reverse mode AD

news2024/11/17 21:28:07

计算图 Computational Graph

image.png

  • 图上的每个节点代表一个中间值
  • 边事输入输出的关系

forward 求导 forward mode AD

image.png

上图中从前向后,一步一步计算每个中间值对 x1的偏导,那么计算到 v7,就得到了整个函数对于 x1的偏导。

有limitation

  • 对一个参数 xi 运行一次可以得到这个参数,可以得到多个输出对参数xi的求导结果。
  • 当参数比较少,输出比较多时,使用这个方法比较好
  • 但是,大多数情况下,我们仅仅有一个输出 loss,但是会有很多参数
  • 有n个参数,需要运行n次forward求导

Reverse Mode AD 求导

image.png

反向求导,实际上事对链式法则的运用

v 1 ˉ = ∂ y ∂ v 1 = ∂ y ∂ v i ∂ v i ∂ v 1 = ∂ y ∂ v i ∂ v i ∂ v i − 1 ∂ v i − 2 ∂ v 1 = ∂ y ∂ v i ∂ v i ∂ v i − 1 ∂ v i − 2 ∂ v i − 3 . . . ∂ v 2 ∂ v 1 \bar{v_1} = \frac{\partial y}{\partial v1} = \frac{\partial y}{\partial v_i}\frac{\partial v_i}{\partial v1} = \frac{\partial y}{\partial v_i}\frac{\partial v_i}{\partial v_{i-1}}\frac{\partial v_{i-2}}{\partial v1} = \frac{\partial y}{\partial v_i}\frac{\partial v_i}{\partial v_{i-1}}\frac{\partial v_{i-2}}{\partial v_{i-3}}...\frac{\partial v_{2}}{\partial v1} v1ˉ=v1y=viyv1vi=viyvi1viv1vi2=viyvi1vivi3vi2...v1v2

其中很多的中间结果可以被重用,就减少了我们的很多开销。

  • 每个节点接收到上游传来的偏导,如节点 v i v_i vi 的偏导 v i ˉ = ∂ y ∂ v i \bar{v_i} = \frac{\partial y}{\partial v_i} viˉ=viy 来自于上游偏导的输出
  • 每个节点根据下游节点,求一个 partial adjoint v i → j ‾ = v j ˉ ∂ v j ∂ v i \overline{v_{i\to j}} = \bar{v_j}\frac{\partial v_j}{\partial v_i} vij=vjˉvivj 再传给下游节点

对于有多个上游节点的情况,会得到多个上游节点的梯度,如何处理?

v i ˉ = ∑ i ∈ n e x t ( i ) v i → j ‾ \bar{v_i} = \sum_{i\in next(i)}\overline{v_{i\to j}} viˉ=inext(i)vij
下游节点将上游传来的所有偏导相加 (partial adjoint 我没有很好的翻译方式)

下面有证明;
image.png

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

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

相关文章

单机版部署Redis详细教程

概述 大多数企业都是基于Linux服务器来部署项目,而且Redis官方也没有提供Windows版本的安装包。因此课程中我们会基于Linux系统来安装Redis. 此处选择的Linux版本为CentOS 7. Redis的官方网站地址:https://redis.io/ 单机安装Redis 1.1.安装Redis依…

【IP地址与子网掩码】如何计算网络地址、广播地址、地址范围、主机个数、子网数(附详解与习题)

【写在前面】其实很多时候通过IP地址和子网掩码计算其网络地址、广播地址、可用IP,地址范围,主机数啥的,有些人不太清楚规则就只能瞎猜了,但是作为一个网络管理员还是一个基础常识的,这不因为最近备考网络管理员&#…

【数据结构】八大排序(二)

😛作者:日出等日落 📘 专栏:数据结构 在最黑暗的那段人生,是我自己把自己拉出深渊。没有那个人,我就做那个人。 …

API接口的对接流程和注意事项

一、对接API数据接口的步骤通常包括以下几个部分: 了解API:首先需要详细了解API的基本信息、请求格式、返回数据格式、错误码等相关信息。可以查看API的官方文档或者使用API探索工具。同时,还需要明确数据请求的频率和使用权限等限制。 ​​测…

恐怖,又要有多少人下岗!AI零成本设计主图,渗入10万亿电商市场

在电商平台上,主图是吸引消费者点击进入商品详情页的重要因素之一。 一张高点击的电商主图,不仅要能够吸引消费者的眼球,还要能够清晰地展示产品的特点和卖点。下面是一些制作高点击电商主图的建议。 1. 突出产品特点:在制作主图…

【Spring】Spring的事务管理

目录 1.Spring事务管理概述1.1 事务管理的核心接口1. PlatformTransactionManager2. TransactionDefinition3. TransactionStatus 1.2 事务管理的方式 2.声明式事务管理2.1 基于XML方式的声明式事务2.2 基于Annotation方式的声明式事务 1.Spring事务管理概述 Spring的事务…

惠普暗影精灵5 super 873-068rcn如何重装系统

惠普暗影精灵5 super 873-068rcn是一款家用游戏台式电脑,有时候你可能用久会遇到系统出现故障、中毒、卡顿等问题,或者你想要更换一个新的操作系统,这时候你就需要重装系统。重装系统可以让你的电脑恢复到出厂状态,清除所有的个人…

【vite+vue3.2 项目性能优化实战】打包体积分析插件rollup-plugin-visualizer视图分析

rollup-plugin-visualizer是一个用于Rollup构建工具的插件,它可以生成可视化的构建报告,帮助开发者更好地了解构建过程中的文件大小、依赖关系等信息。 使用rollup-plugin-visualizer插件,可以在构建完成后生成一个交互式的HTML报告&#xf…

【提示学习】Label prompt for multi-label text classification

论文信息 名称内容论文标题Label prompt for multi-label text classification论文地址https://link.springer.com/article/10.1007/s10489-022-03896-4研究领域NLP, 文本分类, 提示学习, 多标签提出模型LP-MTC(Label Prompt Multi-label Text Classification model)来源Appli…

Docker跨主机网络通信

常见的跨主机通信方案主要有以下几种: 形式描述Host模式容器直接使用宿主机的网络,这样天生就可以支持跨主机通信。这样方式虽然可以解决跨主机通信的问题,但应用场景很有限,容易出现端口冲突,也无法做到隔离网络环境…

buildroot系统调试苹果手机网络共享功能

苹果手机usb共享网络调试 首先了解usb基础知识,比如usb分为主设备和从设备进行通信, 1.HOST模式下是只能做主设备, 2.OTG模式下是可以即做主又可以做从,主设备即HCD,从设备即UDC(USB_GADGET &#xff09…

年后准备进腾讯的可以看看....

大家好~ 最近内卷严重,各种跳槽裁员,今天特意分享一套学习笔记 / 面试手册,年后跳槽的朋友想去腾讯的可以好好刷一刷,还是挺有必要的,它几乎涵盖了所有的软件测试技术栈,非常珍贵,肝完进大厂&a…

多态的原理

有了虚函数,会在类的对象增加一个指针,该指针就是虚函数表指针_vfptr;虚表本质就是函数指针数组,虚表里面存放着该对象的虚函数的地址; 派生类继承有虚函数基类的对象模型 子类继承父类的虚表指针时,是对父类的虚表指针进行了拷…

密码学:古典密码.

密码学:古典密码. 古典密码是密码学的一个类型,大部分加密方式是利用替换式密码或移项式密码,有时是两者的混合。古典密码在历史上普遍被使用,但到现代已经渐渐不常用了。一般来说,一种古典密码体制包含一个字母表(如…

MATLAB 点云均匀体素下采样(6)

MATLAB 点云均匀体素下采样的不同参数效果测试 (6) 一、实现效果二、算法介绍三、函数说明3.1 函数3.2 参数四、实现代码(详细注释!)一、实现效果 不同参数调整下的均匀体素下采样结果如下图所示,后续代码复制黏贴即可: 分别为0.3m,0.2m,0.1m尺度下的格网下采样结果…

【C++复习2】C++编译器的工作原理

如果你是一名newbird的话,建议观看如下视频加深你的理解,再看如下内容: https://www.bilibili.com/video/BV1N24y1B7nQ?p7 The cherno会额外告诉你如何将目标文件转换成汇编代码,CPU执行指令的过程以及编译器如何通过删除冗余变…

【MySQL】SQL优化

上一篇索引是针对查询语句进行优化,但在MySQL中可不仅有查询语句,针对其他的SQL语句同样也能进行优化 文章目录 1.插入数据2.主键优化3.order by 优化4.group by优化5.limit优化6.update优化 1.插入数据 插入数据所使用的关键字为insert,SQL语句为 insert into 表名(字段1,字…

Huntly: 一款超强大的自托管信息管理工具,支持管理RSS、自动保存网页、稍后阅读

Huntly是一款开源的自托管信息管理工具,旨在帮助用户更好地管理和处理各种信息。Huntly可以通过管理RSS、自动保存网页和稍后阅读等功能来帮助用户更有效地收集、保存和浏览信息。 github 地址:GitHub - lcomplete/huntly: Huntly, information manageme…

服务器的基本概念与初始Ajax

1. 客户端与服务器 1.1 上网的目的 刷微博、看新闻、听歌、看电影。。。 本质目的:通过互联网的形式来获取和消费资源 1.2 服务器 上网过程中,负责存放和对外提供资源的电脑,叫做服务器。 1.3 客户端 上网过程中,负责获取…

如何用ChatGPT搭建品牌文本体系?(品牌名+slogan+品牌故事)

该场景对应的关键词库(26个): 品牌名、奶茶、中文名、情感联想度、饮料、价值观/理念、发音、slogan、产品功能导向、行业性质导向、经营理念导向、消费者观念导向、口语化、修辞手法、品牌故事、创始人初心品牌故事、里程碑事件故事、产品初…