news 2026/5/1 6:11:36

误差反向传播法(链式法则)

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
误差反向传播法(链式法则)

链式法则

前面介绍的计算图的正向传播将计算结果正向(从左到右)传递,其计
算过程是我们日常接触的计算过程,所以感觉上可能比较自然。而反向传播将局部导数向正方向的反方向(从右到左)传递,一开始可能会让人感到困惑。
传递这个局部导数的原理,是基于链式法则(chain rule)的。本节将介绍链
式法则,并阐明它是如何对应计算图上的反向传播的。

计算图的反向传播

话不多说,让我们先来看一个使用计算图的反向传播的例子。假设存在
y = f(x) 的计算,这个计算的反向传播如图5-6 所示。

如图所示,反向传播的计算顺序是,将信号E乘以节点的局部导数
(∂y∂x)\left( \frac{\partial y}{\partial x} \right)(xy),然后将结果传递给下一个节点。这里所说的局部导数是指正向传播
y=f(x)y = f(x)y=f(x)的导数,也就是y 关于x的导数( )。比如,假设y=f(x)=x2y = f(x) = x^2y=f(x)=x2
则局部导数为∂y∂x=2x\frac{\partial y}{\partial x} = 2xxy=2x。把这个局部导数乘以上游传过来的值(本例中为E),
然后传递给前面的节点。

这就是反向传播的计算顺序。通过这样的计算,可以高效地求出导数的
值,这是反向传播的要点。那么这是如何实现的呢?我们可以从链式法则的
原理进行解释。下面我们就来介绍链式法则。

什么是链式法则

介绍链式法则时,我们需要先从复合函数说起。复合函数是由多个函数
构成的函数。比如,z=(x+y)2z = (x + y)^2z=(x+y)2是由式(5.1)所示的两个式子构成的。
z=t2 z = t^2z=t2
t=x+y t = x + yt=x+y

链式法则是关于复合函数的导数的性质,定义如下。

如果某个函数由复合函数表示,则该复合函数的导数可以用构成复
合函数的各个函数的导数的乘积表示。

这就是链式法则的原理,乍一看可能比较难理解,但实际上它是一个
非常简单的性质。以式(5.1)为例,∂z∂x\frac{\partial z}{\partial x}xz(z 关于x 的导数)可以用∂z∂t\frac{\partial z}{\partial t}tz(z 关于t
的导数)和∂t∂x\frac{\partial t}{\partial x}xt(t 关于x的导数)的乘积表示。用数学式表示的话,可以写成
式(5.2)。
∂z∂x=∂z∂t⋅∂t∂x \frac{\partial z}{\partial x} = \frac{\partial z}{\partial t} \cdot \frac{\partial t}{\partial x}xz=tzxt

式(5.2)中的∂t∂ tt正好可以像下面这样“互相抵消”,所以记起来很简单。

∂z∂x=∂z∂t⋅∂t∂x \frac{\partial z}{\partial x} = \frac{\partial z}{\partial t} \cdot \frac{\partial t}{\partial x}xz=tzxt

现在我们使用链式法则,试着求式(5.2)的导数∂z∂x\frac{\partial z}{\partial x}xz。为此,我们要先求
式(5.1)中的局部导数(偏导数)。
∂z∂t=2t \frac{\partial z}{\partial t} = 2ttz=2t
∂t∂x=1 \frac{\partial t}{\partial x} = 1xt=1

如式(5.3)所示,∂z∂x\frac{\partial z}{\partial x}xz等于2t,∂t∂x\frac{\partial t}{\partial x}xt等于1。这是基于导数公式的解析解。
然后,最后要计算的∂z∂x\frac{\partial z}{\partial x}xz可由式(5.3)求得的导数的乘积计算出来。

链式法则和计算图

现在我们尝试将式(5.4)的链式法则的计算用计算图表示出来。如果用
“**2”节点表示平方运算的话,则计算图如图5-7 所示。

如图所示,计算图的反向传播从右到左传播信号。反向传播的计算顺序
是,先将节点的输入信号乘以节点的局部导数(偏导数),然后再传递给下一
个节点。比如,反向传播时,“**2”节点的输入是∂z∂x\frac{\partial z}{\partial x}xz,将其乘以局部导数∂z∂t\frac{\partial z}{\partial t}tz(因
为正向传播时输入是t、输出是z,所以这个节点的局部导数是∂z∂t\frac{\partial z}{\partial t}tz),然后传
递给下一个节点。另外,图5-7 中反向传播最开始的信号∂z∂z\frac{\partial z}{\partial z}zz在前面的数学
式中没有出现,这是因为∂z∂z=1\frac{\partial z}{\partial z}=1zz=1,所以在刚才的式子中被省略了。

图5-7 中需要注意的是最左边的反向传播的结果。根据链式法则,
$
\frac{\partial z}{\partial z} \cdot \frac{\partial z}{\partial t} \cdot \frac{\partial t}{\partial x} = \frac{\partial z}{\partial t} \cdot \frac{\partial t}{\partial x} = \frac{\partial z}{\partial x}
$
成立,对应“z 关于x的导数”。也就是说,反向传播
是基于链式法则的。

把式(5.3)的结果代入到图5-7 中,结果如图5-8 所示,∂z∂t\frac{\partial z}{\partial t}tz的结果为
2(x+y)2(x + y)2(x+y)

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/23 10:08:40

【普中STM32F1xx开发攻略--标准库版】-- 第 29 章 内部温度传感器实验

(1)实验平台:普中STM32F103朱雀、玄武开发板 上一章我们介绍了 ADC 模数转换实验, 知道 ADC 内部有一个通道连接着芯片的温度传感器, 这一章我们就来学习下 STM32F1 的内部温度传感器。 本章要实现的功能是: 通过芯片内部温度传感…

作者头像 李华
网站建设 2026/4/25 10:17:58

【计算机毕业设计案例】基于SpringBoot+微信小程序的微信电影院票务系统管理系统(程序+文档+讲解+定制)

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围:&am…

作者头像 李华
网站建设 2026/4/18 3:01:38

Apache FreeMarker:Java生态下动态文本生成的核心引擎与前瞻实践

在Java软件开发领域,动态文本生成是一个贯穿Web开发、配置管理、自动化办公等多个场景的核心需求。无论是动态渲染HTML页面实现前后端分离架构,还是批量生成配置文件、自动化邮件模板,抑或是构建代码生成器提升研发效率,一款高效、…

作者头像 李华
网站建设 2026/4/16 10:47:45

STM32非接触式的睡眠监测系统-麦克风声音-MLX90614-LCD1602-WiFi-DHT11(设计源文件+万字报告+讲解)(支持资料、图片参考_相关定制)_文章底部可以扫码

[ ]23-074、STM32非接触式的睡眠监测系统-麦克风声音-MLX90614-LCD1602-WiFi-DHT11(设计源文件万字报告讲解)(支持资料、图片参考_相关定制)_文章底部可以扫码产品功能描述: 本设计由STM32F103C8T6单片机核心板电路麦克风检测呼吸频率电路MLX…

作者头像 李华
网站建设 2026/4/26 16:54:54

基于STM32单片机乙烯检测报警器设计(设计源文件+万字报告+讲解)(支持资料、图片参考_相关定制)_文章底部可以扫码

基于STM32单片机乙烯检测报警器设计DIY定制套件22-156 22-156、STM32乙烯测试报警仪设计-乙烯-LCD1602-KEY-声光产品功能描述: 本设计由STM32F103C8T6单片机核心板电路乙烯传感器模块电路按键电路LCD1602液晶显示电路声光报警电路组成。 1、LCD1602液晶实时显示当前…

作者头像 李华