复合函数的前向微分与反向自动微分计算
复合函数的前向微分与反向自动微分计算
关于
- 首次发表日期:2024-09-13
- 参考:
- https://rufflewind.com/2016-12-30/reverse-mode-automatic-differentiation
- Calculus Early Transcendentals 9e - James Stewart (2020)
- https://en.wikipedia.org/wiki/Automatic_differentiation
- 水平有限,如有错误,请不吝指出
前向与反向自动微分:数学
先复习一下微积分求导法则
微积分求导法则复习
乘法法则
除法法则
cos和sin求导
链式法则(单变量复合函数)
多变量链式法则(Case 1)
多变量链式法则(Case 2)
当计算
多变量链式法则(广义版)
复合函数,偏微分,链式法则,前向和反向自动微分
前向与反向的计算顺序
对于组合函数:
链式法则将给出:
计算顺序:
- 前向微分计算时 ,先计算
,然后计算 ,最后计算 - 反向微分计算时,先计算
,然后计算 ,最后计算
前向微分
对于组合函数:
前向微分计算:
当
当
当
反向微分
对于组合函数:
反向微分计算:
可以想象有一个函数
当
以例子说明自动微分的计算
例子
假设有2个输入变量(
即:
其中:
接下来,我们将以这个例子说明如何进行前向自动微分和反向自动微分
前向自动微分
我们将用到如下的链式法则:
其中:
表示输出- 在例子中,为
或者
- 在例子中,为
表示直接影响 的输入变量- 在例子中,为
和
- 在例子中,为
表示有待给出的输入变量- 在例子中,为
或者 其中之一
- 在例子中,为
在计算之前,我们先将公式(1)分解为简单的算子计算:
现在我们对有待给出的变量
前面有提到
- 将
代入以上公式,则 而 ,然后可以计算 和
- 将
代入以上公式,则 而 ,然后可以计算 和
可以推断:
- 当有
个输入变量时(本例中有2个),需要计算 次上述公式。 - 假设神经网络中的输入是一张1280 x 720的图片,输出是51个浮点数,那么前向微分方法则需要计算921600次。
反向自动微分
我们将用到如下的链式法则:
其中:
表示输入变量 表示依赖 的输出变量 表示有待给出的变量
回顾拆解后的简单算子计算(2):
现在计算反向微分:
当
同理可以计算当
可以推断:
- 当有
个输出变量时(本例中有2个),需要计算 次上述公式。 - 假设神经网络中的输入是一张1280 x 720的图片,输出是51个浮点数,那么反向微分方法则需要计算51次。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· winform 绘制太阳,地球,月球 运作规律
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人