CSCI3230 L06 · Part 2/5 Backpropagation
课程:CSCI3230 (ESTR3108) Fundamentals of Artificial Intelligence · 2025T1 本讲:L06,第 2 部分 / 共 5 部分 · 原件 L06-Neural-Network-Basics-2025T1.pdf(本地课件) p.38–51 定位:旧版预习材料,尚非已取得的 2026T1 L06;反向传播计算梯度,优化器使用梯度更新参数。 前后:上一份 Neural network architecture · 下一份 Network training and validation
上游梯度乘本地导数
初始化与训练组成(p.38–40)【延伸 L03 p.37–49】
上一份网络结构教我们“已知参数怎样算输出”。训练时问题反过来:输出不好时,哪一个参数朝哪个方向改,能让损失降低? 反向传播负责高效算这种敏感程度,也就是梯度。
先分清三个对象:架构决定连接方式;参数是连接上的当前数值;损失把预测与目标的差异变成一个数。我们对损失求导,得到的是“参数微变时损失会怎样变”,不是把错误的答案沿网络原路倒着算回去。
p.39 用小随机值初始化。若同一层的隐藏单元拥有完全相同的输入权重、偏置和对称的输出连接,它们可能一直收到相同梯度、一起移动,无法分工。随机初始化用于打破这种对称;不是说任意大小的随机数都合适。
原页举小随机值的记号为 ,表示以0为中心的正态初始化示例;页内未注明第二个参数采用方差还是标准差约定,代码实现时须明确,不能只抄记号。p.40把常用反传算法联系到Rumelhart等(1986),强调其核心是高效复用链式法则。
p.40 A clever and efficient use of the Chain Rule for derivatives.
链式法则就是“先看中间量变多少,再看它造成结果变多少,把两个变化率相乘”。反向传播求梯度;梯度下降用梯度更新。 两者搭配常见,但不是同一个动作。
一次前向、一次反向、一次更新(p.41–42)
把一次训练看成三个分开的阶段:
- 使用同一套旧参数,从输入计算所有中间值、预测与损失;保存之后求导要用的量。
- 从损失开始逆序传播导数,求出所有待更新参数的梯度。
- 全部梯度到齐后,再按学习率统一更新参数。
数学上,对一个参数 ,更新为
是当前损失标量, 是学习率,偏导数也是当前旧参数处求出的数。如果偏导为正,稍增参数会使损失上升,所以向负方向走;若偏导为负,就增大参数。这只是局部近似,步子过大可能不降反升。
p.42 的流程把逐层更新写在反向循环中。实际计算要保存旧权重或延迟更新,不能上一层梯度还没算完就把它需要的权重替换成新值,否则反传的不是刚才那次前向对应的函数。
拆出中间节点(p.43–45)
课件不用完整网络起步,而用一个加法与一个乘法:
令 ,则 。 这里全是标量。这是学习求导的计算图,不必把 都解释成神经网络权重。
课件给 。前向先做加法 ,再做乘法 。图(p.44)中左边 x、y 汇入加法结点,q 与 z 再进入乘法结点;绿色数值沿箭头向右。
现在只看每个结点自己的规则,这叫局部导数:
| 结点 | 对哪个输入求导 | 局部导数 | 代入本次前向值 |
|---|---|---|---|
| x | 1 | ||
| y | 1 | ||
| q | −4 | ||
| z | 3 |
乘法对一边求导,会留下另一边。例如固定 ,q 每增加 1,乘积减少 4,所以局部变化率是 −4。不要把乘法节点的输出 −12 当成导数;数值和变化率是两张不同的账。
把目标的导数传回输入(p.46–48)
目标就是 自己,所以起始“上游梯度”为 。先从乘法节点往回:对 q 的梯度是 ;对 z 的梯度是 。
再经过加法节点到 x。链式法则逐步写为
第一因子回答“q 改一点,f 变多快”,第二因子回答“x 改一点,q 变多快”。两者相乘才回答最终问题。同理 。于是这个图的最终三个梯度为 ,分别对应 x、y、z,不能不写对象只记一串数字。
换个慢一点的理解:把 x 增加 0.01,q 也增加 0.01,乘以 −4 后 f 减少 0.04;变化率就是 。这一例对 x 恰好线性,因此有限小步也精确;一般非线性函数只在步子趋小时接近导数。
核对与一般计算图(p.49–51)
p.49–50 把同一例子画完整,p.51 的绿箭头向前传值,红箭头向后传梯度。对任意结点,收到上游梯度后,乘自己的局部导数,交给输入。如果一个量通过多条路径影响损失,各条路径的贡献相加,不是随意只挑一条。
p.51一般结点图的符号与前面的数值例稍不同:此处 是结点输出,最终损失叫 。绿箭头正向传 ,右侧红箭头带入upstream gradient ,结点内部保存local gradients ;左侧传出的downstream gradients分别为
upstream/downstream在图里按梯度流命名;不应把绿色数值流方向误当红色求导方向。
补充自取:令 ,在 求导。第一支 的贡献为 ,第二支 的贡献为 3,所以总梯度 7。只沿平方支回传会漏掉 3。一般若 x 影响若干中间量 ,则
求和是分支,乘法是串联。先掌握这个区分,再把标量式扩展到矩阵。
把同样办法放回一个神经元
补充自取的完整训练一步:输入 、目标 ,模型 ,,损失 。取旧参数 。这里只用单样本、半平方损失,所有量都是标量。
前向:,,残差 ,损失 。反向从损失开始:
为什么权重梯度乘 x,偏置梯度不乘?因为 w 在 里,b 则直接加到 z 上。用学习率 0.1 同时更新,得到 。新前向 ,新损失 ,比 0.5 小。这个检查验证本次数值,不证明任何步长都会下降。
停顿:当前只需会这四步。 写中间量 → 算前向 → 按路径乘导数、分支求和 → 最后更新。多层网络只是结点多,不会突然更换求导原则。
补充 · 共享参数出现两次,梯度也要算两份(通识讲解;演示数据不属于原题)。
同一参数用于多处,不等于把它复制成互不相关的两个参数。演示 、、,其中 。两条路径分别给权重贡献2和3,故 。若程序每次收到梯度就覆盖旧值,最后只留下3;正确动作是在本次反向传播中累加贡献。
再区分另一种“累加”:不同训练批次的梯度是否保留,是训练循环的选择。普通逐批更新通常先清掉上一批梯度,再对当前计算图累加;有意做梯度累积则要明确累积多少批、何时更新、损失是否按批次大小归一化。图内多路径累加是链式法则需要,跨批累加是训练策略,不要为了避免上一批污染而误把同一图内的合法贡献清掉。
数值核验与常见误会
可用一个很小的扰动 对某参数检查:
左右各算一次损失,其余参数不动。它是补充的有限差分检查,浮点误差使 h 不能无限小;ReLU 折点附近也不适合用它验证不存在的通常导数。梯度为零可能来自饱和、被 ReLU 关闭或路径抵消,不自动证明已经到全局最优。
小检查: 若单元预激活为 −2,ReLU 输出为 0,目标为 3,损失很大,沿该 ReLU 回去的梯度一定很大吗?
参考答案
不一定,实际上该点 ReLU 局部导数为 0,会把这条路径的上游梯度乘成 0。“预测错得大”与“参数梯度大”不是同一个命题;中间函数是否把变化传过去也很重要。
理解一单元后再看多层历史题,见附录 A1。先标箭头方向与损失是否含一半,再代数字。
补充:把反传从单个箭头扩到一个完整矩阵层
自编两输入、两隐藏单元、单输出网络,列向量约定为 ,,,,。取
前向先得 ,两项都正,所以 ;输出 ,损失 。反向必须使用这一轮保存的旧参数:输出梯度 ;于是 ,。传回隐藏层是 ,ReLU两处导数均为1,故 。
每个 只影响第 个隐藏分数,局部导数为输入 ,所以梯度是外积而非点积:
传给输入则为 。维度可以逐个核:权重梯度必须2×2,偏置梯度2×1,输入梯度2×1。输入梯度有定义不代表训练时必须更新输入,通常只更新指定的模型参数。
同步用学习率0.01更新后,,,。重新前向得到 ,,损失 。这才是一次完整更新的核验:先全部求完旧点梯度,再更新,再重新前向;不能沿反传走到哪就立即改参数并拿新值继续算。
本讲核心考点
- 反传算梯度,优化器使用梯度更新;不要混淆(p.39–42)。
- 串联路径乘局部导数,分支贡献相加(p.43–51)。
- 同一次前向的所有梯度必须使用同一旧参数状态(p.42)。
- 数值与梯度分开记录,不能把中间值直接当导数。
附录
A1 作业/往年题演练(非讲义内容):作业与历年反传题
读历史反传题时,先给每层分成两行:预激活(乘加结果)和激活(经过函数后的值)。再在每一行下方开一栏记录损失对它的梯度。由后向前填表,凡同一结点接到两个输出,就先把两项贡献相加再往前传。求某一权重更新只需追踪它影响的路径;若题目要全部参数,必须为每条边和偏置分别写梯度。以下题目的下标方向和 MSE 常数约定不同,不能把上一题的公式不看图就搬过来。
题面(HW03-2025T1-题目.pdf · Q2 · p.2;网络箭头视觉读取)
p.2 2. Consider a simple feedforward neural network with the following architecture:
One input Layer: 2 neurons
One hidden Layer: 2 neurons with a ReLU activation function
One output Layer: 1 neuron with a Sigmoid activation function
Weights and Biases:
Let the weights between the input layer and the hidden layer be: ; .
Let the weights between the hidden layer and the output layer be: .
Let the biases be: Hidden layer biases: ; Output layer bias: .
The network structure is shown below, in which are the hidden features, and is the final output:
For a given input , perform the following calculations. (25%)
(1) Forward Pass: Compute the output of network. (Include activation in your calculations. Use to represent the Sigmoid function). (10%)
(2) Loss Calculation: Assume the target output as . Use mean squared error (MSE) to calculate the loss . (hint: use to present the label and to present the output of the network) (5%)
(3) Back propagation:
(3.1) Compute the gradients of the loss with respect to the output layer weights and biases. (hint: compute , , . Remove constant coefficients in calculation for simplicity) (5%)
(3.2) Compute the gradients of the loss with respect to the hidden layer weights and biases . (5%)
公式按原题重排。图(题面,p.2):全连接 2→2→1。 元素: 为 、 为 、 为 、 为 ;两个隐藏单元经 连到输出。 看什么:本题用目标单元优先的下标,不能直接套往年卷另一种下标方向。
演练定位:HW03-2025T1 p.2 Q2。 这题没有给数值,要输出通用的前向与梯度式。先把全部结点拆开;本题权重下标的首位是目标隐藏单元,与下一个旧试卷题不同。
HW03:先列前向中间量
| 量 | 如何计算 | 它的作用 |
|---|---|---|
| 隐藏单元 1 的预激活 | ||
| 隐藏单元 2 的预激活 | ||
| ReLU 隐藏输出,j=1,2 | ||
| u | 最终 sigmoid 之前的分数 | |
| p | 预测,即原题的 | |
| L | 这里采用单样本完整平方误差 |
这些量全是标量;不要把隐藏输出 h 与预激活 z 混称。题面准许梯度省略共同常数,下面先保留常数 2,把链写完整;如果最后选择省略,应对全部梯度统一处理。
HW03:从损失回到输出层
先沿 这条链求:
只是给已经求出的一个导数取短名,不是新的误差定义。输出权重 只通过 u 影响预测,而 ,所以
偏置直接加到 u 上,本地导数为 1,故最后一项不再乘输入。
HW03:经过 ReLU 回到隐藏层
从 u 到 的本地导数是 ;从 到 的本地导数在 为 1、 为 0。用指示量记录这扇“门”:
这里在零点选择导数 0;若题目另有约定,须相应说明。门的开关由整个 决定,不由某条权重的正负决定。
最后逐个对 z 的乘加式求导:
| 参数 | 它直接影响哪个预激活 | 本地导数 | 最终梯度 |
|---|---|---|---|
| 1 | |||
| 1 |
这题只要求求梯度,没有给学习率,因此不编一个数值更新。若以后要求训练一步,将表里各梯度交给同一个更新规则,全部使用旧参数算完再统一更新。核对口诀的真正含义是:一条权重的本地导数等于它乘的源激活,因此“目标单元梯度 × 源激活”自然出现。
题面(ESTR-Final-Exam-2023T1.pdf · Part III Q3(a)(b) · p.8;2024T1 Q3(a)(b) p.8–9 同数据)
p.8 3. (15%) Given the following neural network with fully connected layer and ReLU activations. The input has two units , and four hidden units and . The output has two units indicated as , and their targeted ground-truth are indicated as . The weights and bias of fully connected layer are represented by and with specific sub-descriptors.
The values of variables are given in the following table:
a) Compute the output with the input and network parameters as specified above. Write down all calculations, including results of for intermediate layers. (4%)
b) Define the mean squared error (MSE) as the average squared difference between the prediction and the ground-truth, i.e., . Compute the loss for output as calculated above. Then, use this loss to update the weight using backpropagation. If the learning rate is set as 0.1, what is the updated after one iteration of backpropagation. (5%)
公式按原题重排。2024 的公共题干与数据相同,Q3 总分 10%,(a) 为 2%,(b) 为 5%;其余训练诊断问在 Part 3 附录。2023 另有 (c)(d) 学习率与验证损失问,也在下一 Part。
表(题面,2023 p.8 / 2024 p.8):全部变量
| 变量 | ||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 值 | 2.0 | -1.0 | 1.0 | -0.5 | 0.5 | -1.0 | 0.5 | -1.0 | -0.5 | 1.0 | 0.5 | -0.5 | -1.0 | 0.5 | 1.0 | 0.5 |
图(题面,2023 p.8 / 2024 p.8):两路 ReLU 隐藏特征接两线性输出。 元素:输入 都连到预激活 ;、 为 ReLU; 都连到 。输入到隐藏的首下标表示输入源,输出边 来自 。 看什么:目标通过两个输出回传到同一 ,需要将两支贡献相加。
演练定位:2023 p.8 / 2024 p.8–9 Part III Q3。 本题输出层是线性的,不能额外套 sigmoid。原表中的输入到隐藏权重按“源输入→目标隐藏”编号;先沿图确认 连的是 。
两输出旧题:前向与损失
| 结点 | 代入原表计算 | 结果 |
|---|---|---|
| 2 | ||
| −0.5 | ||
| 2 | ||
| 0 | ||
| 0 | ||
| −1.5 |
是激活前的值, 才是 ReLU 后的值。原题将两输出的平方误差各乘一半:
写成预测减目标或目标减预测,平方后的损失相同;求导时不能只换残差符号却忘记相应链式法则。以下统一用预测减目标。
两输出旧题:分支先相加,再向前传
目标参数 影响 ,再经 ReLU 影响 。 同时影响两个输出,所以有两条回来的路径:
第一支贡献 −0.5,第二支贡献 2,两者相加为 1.5。漏掉第二支会连梯度方向都判断错。再往前,,ReLU 导数为 1;而 在 里,本地导数为 。因此
两输出旧题:更新后重新核算
原参数为 0.5,学习率为 0.1:
这里只按题目改这一条权重,其他参数保持原值。重新前向:,ReLU 后 ; 仍为 0。新输出为 ,,所以
比原损失 2.5 小,符合这一步沿负梯度移动的预期。这是数值核对,不代表任何更大学习率也会下降。
题面(Final-Exam-CSCI3230-Record-2025T1-官方节选.pdf 及 ESTR 同题 · Part II Q4 · PDF p.2)
p.2 4. (4%) Consider the simple neural network as follows, which computes the function : suppose , what are the gradients and using back-propagation?
公式按原题重排。图中的 先进入加法节点得到 ,再与 进入乘法节点得到 。
演练定位:2025 官方节选 PDF p.2(卷面 p.5)Part II Q4。 图的加法、乘法结构与正文一致,但数字已经改变,不能背正文的 −4、3。
先前向:,。从目标 f 开始,上游梯度为 1。对 q,乘法的本地导数为 z=2;再经过加法,对 x 的本地导数为 1。因此
对 z 则直接经过乘法,本地导数为另一输入 q,所以 。题目只求梯度,没有要求把 x 或 z 当参数更新。
题面(Final-Exam-CSCI3230-Record-2025T1-官方节选.pdf 及 ESTR 同题 · Part III Q2 · PDF p.4)
p.4 2. (10%) Given the neural network architecture shown in the diagram. The network accepts two inputs and produces a single output . It contains a hidden layer with pre-activation units and post-activation ReLU units . Crucially, the network features two residual connections (skip connections): The input is added to to form , and the input is added to to form . The final output is a weighted sum of and .
Given Values:
Inputs:
Weights (Layer 1):
Biases (Layer 1):
Weights (Layer 2):
Bias (Output):
Ground Truth:
(a) Based on the network structure, calculate the numerical values for the pre-activation hidden units , the residual sums , and the final output . (2%)
(b) Using the Mean Squared Error (MSE) loss function , first calculate the total loss value. Then, perform backpropagation to calculate the gradient of the loss with respect to the weight (the weight connecting to ). Finally, calculate the updated value of with a learning rate . (5%)
(c) In neural network training, is it acceptable to initialize all learnable weights and biases to 0? Explain why or why not, specifically referencing the behavior of gradients. (3%)
公式按原题重排。图的额外两条跳接是加法,不另带可训练权重。
演练定位:2025 官方节选 PDF p.4(卷面 p.7)Part III Q2。 两条残差连接执行的是加法,没有额外可训练权重。输入在前向中走了两条路线,不代表本题目标参数也一定经过两条路线;求某个参数的导数时,必须追踪它真正影响的结点。
残差旧题:逐结点前向
| 结点 | 代入原值 | 结果 |
|---|---|---|
| 1 | ||
| 2 | ||
| 1 | ||
| 2 | ||
| 3 | ||
| 1 | ||
| 4 |
残差加法把原输入接回隐藏输出,所以不能把 当成纯 ReLU 输出直接抄成 1、2。目标为 ,半平方损失为
残差旧题:只沿目标权重的影响链回传
连的是 。它的影响顺序为 。反传按相反顺序列每段因子:
| 反传段 | 为什么是这个因子 | 本地导数或上游量 |
|---|---|---|
| 损失到输出 | 半平方对预测求导 | |
| 输出到 | 输出中的系数 | 1 |
| 到 | 加法 | 1 |
| 到 | ,ReLU正分支 | 1 |
| 到 | 参数乘着源输入 | 2 |
沿串联路径相乘:
虽然输出还依赖 ,但 不依赖本题的 ,那条分支对这个参数贡献为 0。若改求输入 的导数,残差直连才会额外贡献,不能把两种求导对象混淆。
残差旧题:更新与初始化判断
按题给学习率 0.1,仅更新这条权重:
补充核对:新 ,仍在 ReLU 正分支;新 ,另一支 仍为 3,故新输出为 3.2、半平方损失为 0.72。这里只用于核对梯度方向,原题没有要求把所有参数一起更新。
零初始化问题要回到梯度:同层完全对称的单元可能一直收到相同梯度,不能学出不同特征;若 ReLU 在 0 处取导数 0,隐藏路径还会暂时被门关闭。残差连接允许输入直接通过,不自动令那些可训练隐藏权重获得正确的不同梯度。因此不能仅因为有残差就宣称“全部权重和偏置初始化为零没有问题”。这与允许部分偏置初始化为零是两回事。
来源与证据
- 原件:L06-Neural-Network-Basics-2025T1.pdf(本地课件);对应页区间见文件头及各节标题。本页是 2025T1 旧材料预习,不代表 2026T1 已讲进度。页码按当前 91 页 PDF,不能直接用仍标到 103 的旧页脚号。p.74 起为 ESTR3108 扩展。
- 数字演示凡非课件原例均明确标为“补充自取”;这些例子用于理解,不是教师布置的作业。
- 附录中的历史题面保留其文件名、年份和题号,与当前作业区分;它们不能证明本学期考试范围。正文的学习检查是通识练习,不作出题预测。