自动微分的原理:计算图与前向传播

目录

前言

一、什么是自动微分

数值微分

符号微分

二、自动微分的本质

[三、什么是计算图(Computation Graph)](#三、什么是计算图(Computation Graph))

四、为什么需要计算图

[五、前向传播(Forward Propagation)](#五、前向传播(Forward Propagation))

六、前向传播保存了什么

七、计算图是如何构建的

八、前向传播在神经网络中的作用

九、自动微分为什么如此高效

[十、PyTorch 自动微分示例](#十、PyTorch 自动微分示例)

总结


在学习深度学习框架时,无论是 PyTorch 还是 TensorFlow,我们都会接触到一个非常重要的概念:

复制代码
Automatic Differentiation
自动微分

很多初学者会认为:

复制代码
自动微分
=
求导公式

实际上并不是这样。

自动微分并不是简单地套用数学公式,而是通过:

复制代码
计算图
+
前向传播
+
反向传播

自动计算复杂神经网络中的梯度。

可以说:

自动微分是现代深度学习框架的核心基础。

没有自动微分,就不会有今天的 PyTorch、TensorFlow 和各种大模型训练框架。

本文将重点讲解:

  • 什么是自动微分

  • 什么是计算图

  • 前向传播如何工作

  • 自动微分为什么依赖计算图


一、什么是自动微分

假设有一个函数:

如果要求导:

复制代码
dy/dx

传统方法有两种。


数值微分

利用导数定义:

f'(x)\approx\frac{f(x+h)-f(x)}{h}

例如:

python 复制代码
def numerical_grad(f, x):
    h = 1e-5
    return (f(x + h) - f(x)) / h

优点:

复制代码
简单

缺点:

复制代码
存在误差
计算速度慢

符号微分

例如:

复制代码
y = x² + 3x + 2

直接推导:

复制代码
dy/dx = 2x + 3

优点:

复制代码
结果精确

缺点:

复制代码
复杂表达式容易爆炸

例如:

复制代码
深度神经网络

拥有上亿参数。

符号推导几乎不可行。


于是出现了:

复制代码
自动微分

二、自动微分的本质

自动微分并不是直接对整个函数求导。

而是:

复制代码
将复杂函数拆解成多个简单运算

例如:

复制代码
加法
减法
乘法
除法
指数
对数

然后利用链式法则逐步计算。


例如:

复制代码
z = (x + y) * t

可以拆成:

复制代码
a = x + y

z = a * t

此时复杂函数被分解成多个简单步骤。

而这些步骤连接起来:

复制代码
就是计算图

三、什么是计算图(Computation Graph)

计算图本质上是:

复制代码
数据流图

用于描述:

复制代码
数据如何流动

运算如何执行

例如:

复制代码
z = (x + y) * t

对应计算图:

从图中可以清晰看到:

复制代码
输入变量

运算节点

输出结果

之间的关系。


在深度学习框架内部:

复制代码
每一个Tensor
每一次运算

都会形成这样的图结构。


四、为什么需要计算图

假设函数:

复制代码
y = (a+b)*(c+d)

如果没有计算图。

程序只会得到:

复制代码
最终结果

却不知道:

复制代码
中间过程

而自动微分需要:

复制代码
记录每一步运算

例如:

复制代码
e = a+b

f = c+d

y = e*f

这样后续才能计算:

复制代码
dy/da

dy/db

dy/dc

dy/dd

因此:

复制代码
计算图
=
自动微分的数据基础

五、前向传播(Forward Propagation)

计算图建立之后。

首先执行:

复制代码
Forward Pass
前向传播

很多人以为:

复制代码
前向传播
=
神经网络专属

实际上不是。

任何计算图都会执行前向传播。


例如:

复制代码
x = 2

y = 3

z = x*y + 5

拆分:

复制代码
a = x*y

z = a+5

对应计算图:


前向传播过程:

第一步:

复制代码
x = 2

y = 3

第二步:

复制代码
a = x*y

a = 6

第三步:

复制代码
z = a+5

z = 11

最终输出:

复制代码
z = 11

这就是前向传播。


六、前向传播保存了什么

自动微分不仅计算结果。

还会记录:

复制代码
运算类型

输入节点

输出节点

中间结果

例如:

复制代码
a = x*y

框架会记录:

复制代码
Operation:
Multiply

Input:
x,y

Output:
a

在 PyTorch 中:

python 复制代码
import torch

x = torch.tensor(
    2.0,
    requires_grad=True
)

y = torch.tensor(
    3.0,
    requires_grad=True
)

z = x * y

此时:

python 复制代码
print(z.grad_fn)

输出:

复制代码
<MulBackward0>

说明:

复制代码
乘法节点
已经被记录

七、计算图是如何构建的

在 PyTorch 中:

python 复制代码
x = torch.tensor(
    2.0,
    requires_grad=True
)

开启:

复制代码
梯度跟踪

执行:

复制代码
y = x * 3

框架自动创建:

复制代码
乘法节点

继续:

复制代码
z = y + 2

自动创建:

复制代码
加法节点

最终形成:

整个过程完全自动。

开发者无需手工构建。


八、前向传播在神经网络中的作用

假设一个简单神经元:

z=w_1x_1+w_2x_2+b

输入:

复制代码
x1 = 2

x2 = 3

参数:

复制代码
w1 = 0.5

w2 = 0.8

b = 1

前向传播:

复制代码
0.5 × 2 = 1

复制代码
0.8 × 3 = 2.4

复制代码
1 + 2.4 + 1
=
4.4

输出:

复制代码
z = 4.4

如果再经过激活函数:

a=\sigma(z)

就得到神经元最终输出。


整个神经网络训练过程:

复制代码
输入数据
↓
前向传播
↓
计算损失
↓
反向传播
↓
更新参数

前向传播负责:

复制代码
计算预测结果

九、自动微分为什么如此高效

假设一个神经网络:

复制代码
100层

包含:

复制代码
上百万次运算

如果采用:

复制代码
数值微分

需要反复计算函数。

效率极低。


而自动微分:

复制代码
只记录计算图

前向传播时:

复制代码
顺便保存中间结果

后续反向传播直接复用。


因此:

复制代码
计算速度快

内存利用合理

梯度精确

这也是现代深度学习框架全部采用自动微分的原因。


十、PyTorch 自动微分示例

完整代码:

python 复制代码
import torch

x = torch.tensor(
    2.0,
    requires_grad=True
)

y = x ** 2 + 3 * x + 2

print(y)

输出:

复制代码
tensor(12.)

查看计算图:

python 复制代码
print(y.grad_fn)

输出:

复制代码
<AddBackward0>

说明:

复制代码
PyTorch已经构建好计算图

此时:

python 复制代码
y.backward()

print(x.grad)

输出:

复制代码
tensor(7.)

因为:

复制代码
dy/dx

=
2x+3

=
7

而这一切:

复制代码
无需手工求导

完全由自动微分完成。


总结

自动微分是现代深度学习框架最重要的基础技术之一。

其核心思想并不复杂:

复制代码
复杂函数
↓
拆解成简单运算
↓
构建计算图
↓
执行前向传播
↓
保存中间结果
↓
后续计算梯度

其中:

复制代码
计算图
负责记录计算过程

前向传播
负责计算最终结果

二者共同构成了自动微分系统的基础。

理解了计算图和前向传播之后,我们就已经掌握了自动微分的第一块拼图。下一步便是深入学习:

复制代码
反向传播(Backpropagation)

链式法则(Chain Rule)

梯度下降(Gradient Descent)

PyTorch Autograd源码机制

这些内容共同组成了现代深度学习训练框架的核心原理。

相关推荐
杭州华望MBSE1 小时前
AI应用园地(1)| AI驱动需求工程升级—条目化、模型化、追溯化的三位一体实践
大数据·人工智能·mbse·sysml·ai助手
运维小欣1 小时前
AI可观测厂商选型指南(2026版)
人工智能
2301_818527781 小时前
瑜伽服供应链优化——AI让每一件都准时高品质交付
人工智能
调试优选官1 小时前
2026上海AI搜索GEO优化:技术路径与服务能力全景梳理
人工智能·ai·geo·上海
2601_955135031 小时前
AI音乐生态客服成本2026分析
大数据·人工智能
云烟成雨TD1 小时前
Spring AI Alibaba 1.x 系列【80】可观测集成
java·人工智能·spring
渡码桑1 小时前
STM32 TinyML实战2026:3步在单片机上跑通AI推理——从TensorFlow到Edge Impulse的嵌入式进化
人工智能·stm32·单片机
chian-ocean1 小时前
突破纯文字交互:基于魔珐星云端到端技术,赋能国产大模型构建数字人智能体
人工智能·交互·语音识别
暗夜猎手-大魔王1 小时前
hermes源码学习8--Gateway 内部机制
人工智能·gateway