跳到主内容
快讯直播
AI智模界
AI 词典

自动微分(Autograd):框架替你算梯度的机制

一句话:自动微分(Autograd)是深度学习框架自动、精确算出每个参数梯度的机制——你只管写前向计算,求导交给它。

很多人把自动微分和反向传播AI 词典:Backpropagation">Backpropagation)当成一回事,其实分工不同:反向传播是"从后往前套链式法则(Chain Rule)"的数学方法,自动微分是把它工程化、塞进框架里能自动跑起来的那套系统。

原理大致两步。第一步,前向计算时框架悄悄记账:每个张量(Tensor)的运算都被记进一张计算图(Computational Graph)——谁是谁的输入、用了什么运算,节点和边都留着。第二步,你调用一次反向接口(比如 backward()),框架从输出节点出发沿图往回走,每遇到一个运算就取它的局部导数,一路乘回来,每个需要梯度的参数都拿到自己的梯度。

打个比方:做一锅汤,你每加一样料都记一笔——3 克盐、50 毫升酱油、炖 20 分钟。最后尝出偏咸,想追问"盐少放 1 克,咸度会降多少",不必重做一遍汤,顺着记录倒推每一步的影响就行。计算图就是那本流水账,链式法则是倒推的规则。

关键是:自动微分既不是数值微分(Numerical Differentiation,用差商近似,有误差也慢),也不是符号微分(Symbolic Differentiation,把表达式硬展开,容易爆炸)。它算的是解析导数,又复用中间结果,所以既准又快。

方式做法问题
数值微分参数加一点点,看输出变多少只是近似,参数多则计算量大
符号微分对表达式做代数求导表达式膨胀,复杂模型扛不住
自动微分记录计算图,反向套链式法则要存中间结果,吃显存

自动微分还分前向模式(Forward Mode)和反向模式(Reverse Mode)。深度学习的典型场景是"几百万个参数、一个损失值",反向模式一次就能拿到全部梯度,所以框架默认走反向模式。

对从业者的意义很直接:模型结构改一行,梯度不用重推。手写梯度在浅层网络时代还勉强能忍,到几十层基本不可维护。更进一步,凡是能写成可微计算图的流程,都能接优化器(Optimizer)做梯度下降(Gradient Descent)——不只神经网络,物理仿真、渲染、控制里也在用。

几个日常会踩的点:推理时用 no_grad 之类方式关掉记录,省显存;想把某段计算摘出图、不让梯度传过去,用 detach;调梯度异常时,先怀疑某步操作不可微或被意外截断。

一句话:模型定义回答"怎么算",自动微分回答"往哪个方向调、调多少"。具体 API 名称与行为,以你所用法版本的官方文档为准。

AI 生成本文由 AI 基于公开信息自动生成,仅供参考。