Vince Jiang

CSCI3230 / 课程伴读 · 本站更新

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 用小随机值初始化。若同一层的隐藏单元拥有完全相同的输入权重、偏置和对称的输出连接,它们可能一直收到相同梯度、一起移动,无法分工。随机初始化用于打破这种对称;不是说任意大小的随机数都合适。

原页举小随机值的记号为 N(0,0.1)N(0,0.1),表示以0为中心的正态初始化示例;页内未注明第二个参数采用方差还是标准差约定,代码实现时须明确,不能只抄记号。p.40把常用反传算法联系到Rumelhart等(1986),强调其核心是高效复用链式法则。

p.40 A clever and efficient use of the Chain Rule for derivatives.

链式法则就是“先看中间量变多少,再看它造成结果变多少,把两个变化率相乘”。反向传播求梯度;梯度下降用梯度更新。 两者搭配常见,但不是同一个动作。

一次前向、一次反向、一次更新(p.41–42)

把一次训练看成三个分开的阶段:

  1. 使用同一套旧参数,从输入计算所有中间值、预测与损失;保存之后求导要用的量。
  2. 从损失开始逆序传播导数,求出所有待更新参数的梯度。
  3. 全部梯度到齐后,再按学习率统一更新参数。

数学上,对一个参数 θ\theta,更新为

θnew=θold−α∂L∂θ. \theta_{\mathrm{new}}=\theta_{\mathrm{old}}-\alpha\frac{\partial L}{\partial\theta}.

LL 是当前损失标量,α>0\alpha>0 是学习率,偏导数也是当前旧参数处求出的数。如果偏导为正,稍增参数会使损失上升,所以向负方向走;若偏导为负,就增大参数。这只是局部近似,步子过大可能不降反升。

p.42 的流程把逐层更新写在反向循环中。实际计算要保存旧权重或延迟更新,不能上一层梯度还没算完就把它需要的权重替换成新值,否则反传的不是刚才那次前向对应的函数。

拆出中间节点(p.43–45)

课件不用完整网络起步,而用一个加法与一个乘法:

f(x,y,z)=(x+y)z. f(x,y,z)=(x+y)z.

令 q=x+yq=x+y,则 f=qzf=qz。x,y,z,q,fx,y,z,q,f 这里全是标量。这是学习求导的计算图,不必把 x,y,zx,y,z 都解释成神经网络权重。

课件给 x=−2,y=5,z=−4x=-2,y=5,z=-4。前向先做加法 q=−2+5=3q=-2+5=3,再做乘法 f=3×(−4)=−12f=3\times(-4)=-12。图(p.44)中左边 x、y 汇入加法结点,q 与 z 再进入乘法结点;绿色数值沿箭头向右。

现在只看每个结点自己的规则,这叫局部导数:

结点 对哪个输入求导 局部导数 代入本次前向值
q=x+yq=x+y x ∂q/∂x=1\partial q/\partial x=1 1
q=x+yq=x+y y ∂q/∂y=1\partial q/\partial y=1 1
f=qzf=qz q ∂f/∂q=z\partial f/\partial q=z −4
f=qzf=qz z ∂f/∂z=q\partial f/\partial z=q 3

乘法对一边求导,会留下另一边。例如固定 z=−4z=-4,q 每增加 1,乘积减少 4,所以局部变化率是 −4。不要把乘法节点的输出 −12 当成导数;数值和变化率是两张不同的账。

把目标的导数传回输入(p.46–48)

目标就是 ff 自己,所以起始“上游梯度”为 ∂f/∂f=1\partial f/\partial f=1。先从乘法节点往回:对 q 的梯度是 1×z=−41\times z=-4;对 z 的梯度是 1×q=31\times q=3。

再经过加法节点到 x。链式法则逐步写为

∂f∂x=∂f∂q∂q∂x=(−4)×1=−4. \begin{aligned} \frac{\partial f}{\partial x} &=\frac{\partial f}{\partial q}\frac{\partial q}{\partial x}\\ &=(-4)\times1=-4. \end{aligned}

第一因子回答“q 改一点,f 变多快”,第二因子回答“x 改一点,q 变多快”。两者相乘才回答最终问题。同理 ∂f/∂y=−4\partial f/\partial y=-4。于是这个图的最终三个梯度为 (−4,−4,3)(-4,-4,3),分别对应 x、y、z,不能不写对象只记一串数字。

换个慢一点的理解:把 x 增加 0.01,q 也增加 0.01,乘以 −4 后 f 减少 0.04;变化率就是 −0.04/0.01=−4-0.04/0.01=-4。这一例对 x 恰好线性,因此有限小步也精确;一般非线性函数只在步子趋小时接近导数。

核对与一般计算图(p.49–51)

p.49–50 把同一例子画完整,p.51 的绿箭头向前传值,红箭头向后传梯度。对任意结点,收到上游梯度后,乘自己的局部导数,交给输入。如果一个量通过多条路径影响损失,各条路径的贡献相加,不是随意只挑一条。

p.51一般结点图的符号与前面的数值例稍不同:此处 z=f(x,y)z=f(x,y) 是结点输出,最终损失叫 LL。绿箭头正向传 x,y,zx,y,z,右侧红箭头带入upstream gradient ∂L/∂z\partial L/\partial z,结点内部保存local gradients ∂z/∂x,∂z/∂y\partial z/\partial x,\partial z/\partial y;左侧传出的downstream gradients分别为

∂L∂x=∂L∂z∂z∂x,∂L∂y=∂L∂z∂z∂y. \frac{\partial L}{\partial x}=\frac{\partial L}{\partial z}\frac{\partial z}{\partial x},\qquad \frac{\partial L}{\partial y}=\frac{\partial L}{\partial z}\frac{\partial z}{\partial y}.

upstream/downstream在图里按梯度流命名;不应把绿色数值流方向误当红色求导方向。

补充自取:令 L=x2+3xL=x^2+3x,在 x=2x=2 求导。第一支 x2x^2 的贡献为 2x=42x=4,第二支 3x3x 的贡献为 3,所以总梯度 7。只沿平方支回传会漏掉 3。一般若 x 影响若干中间量 zjz_j,则

∂L∂x=∑j∂L∂zj∂zj∂x. \frac{\partial L}{\partial x}=\sum_j\frac{\partial L}{\partial z_j}\frac{\partial z_j}{\partial x}.

求和是分支,乘法是串联。先掌握这个区分,再把标量式扩展到矩阵。

把同样办法放回一个神经元

补充自取的完整训练一步:输入 x=2x=2、目标 y=3y=3,模型 z=wx+bz=wx+b,a=ReLU(z)a=\mathrm{ReLU}(z),损失 L=12(a−y)2L=\frac12(a-y)^2。取旧参数 w=1,b=0w=1,b=0。这里只用单样本、半平方损失,所有量都是标量。

前向:z=2z=2,a=2a=2,残差 a−y=−1a-y=-1,损失 L=0.5L=0.5。反向从损失开始:

∂L∂a=a−y=−1,∂a∂z=1(z>0),∂L∂z=(−1)×1=−1,∂z∂w=x=2,∂z∂b=1,∂L∂w=(−1)×2=−2,∂L∂b=(−1)×1=−1. \begin{aligned} \frac{\partial L}{\partial a}&=a-y=-1,\\ \frac{\partial a}{\partial z}&=1\quad(z>0),\\ \frac{\partial L}{\partial z}&=(-1)\times1=-1,\\ \frac{\partial z}{\partial w}&=x=2,\qquad \frac{\partial z}{\partial b}=1,\\ \frac{\partial L}{\partial w}&=(-1)\times2=-2,\\ \frac{\partial L}{\partial b}&=(-1)\times1=-1. \end{aligned}

为什么权重梯度乘 x,偏置梯度不乘?因为 w 在 wxwx 里,b 则直接加到 z 上。用学习率 0.1 同时更新,得到 w=1.2,b=0.1w=1.2,b=0.1。新前向 z=2.5,a=2.5z=2.5,a=2.5,新损失 0.5×(−0.5)2=0.1250.5\times(-0.5)^2=0.125,比 0.5 小。这个检查验证本次数值,不证明任何步长都会下降。

停顿:当前只需会这四步。 写中间量 → 算前向 → 按路径乘导数、分支求和 → 最后更新。多层网络只是结点多,不会突然更换求导原则。

补充 · 共享参数出现两次,梯度也要算两份(通识讲解;演示数据不属于原题)。

同一参数用于多处,不等于把它复制成互不相关的两个参数。演示 u=wx1u=wx_1、v=wx2v=wx_2、L=u+vL=u+v,其中 x1=2,x2=3x_1=2,x_2=3。两条路径分别给权重贡献2和3,故 ∂L/∂w=5\partial L/\partial w=5。若程序每次收到梯度就覆盖旧值,最后只留下3;正确动作是在本次反向传播中累加贡献。

再区分另一种“累加”:不同训练批次的梯度是否保留,是训练循环的选择。普通逐批更新通常先清掉上一批梯度,再对当前计算图累加;有意做梯度累积则要明确累积多少批、何时更新、损失是否按批次大小归一化。图内多路径累加是链式法则需要,跨批累加是训练策略,不要为了避免上一批污染而误把同一图内的合法贡献清掉。

数值核验与常见误会

可用一个很小的扰动 hh 对某参数检查:

L(θ+h)−L(θ−h)2h≈∂L∂θ. \frac{L(\theta+h)-L(\theta-h)}{2h}\approx\frac{\partial L}{\partial\theta}.

左右各算一次损失,其余参数不动。它是补充的有限差分检查,浮点误差使 h 不能无限小;ReLU 折点附近也不适合用它验证不存在的通常导数。梯度为零可能来自饱和、被 ReLU 关闭或路径抵消,不自动证明已经到全局最优。

小检查: 若单元预激活为 −2,ReLU 输出为 0,目标为 3,损失很大,沿该 ReLU 回去的梯度一定很大吗?

参考答案

不一定,实际上该点 ReLU 局部导数为 0,会把这条路径的上游梯度乘成 0。“预测错得大”与“参数梯度大”不是同一个命题;中间函数是否把变化传过去也很重要。

理解一单元后再看多层历史题,见附录 A1。先标箭头方向与损失是否含一半,再代数字。

补充:把反传从单个箭头扩到一个完整矩阵层

自编两输入、两隐藏单元、单输出网络,列向量约定为 x=(2,1)Tx=(2,1)^T,z=Wx+bz=Wx+b,h=ReLU⁡(z)h=\operatorname{ReLU}(z),o=vTh+co=v^Th+c,E=(o−y)2/2E=(o-y)^2/2。取

W=(1−121),b=(0,0)T,v=(1,−1)T,c=0,y=1. W=\begin{pmatrix}1&-1\\2&1\end{pmatrix},\quad b=(0,0)^T,\quad v=(1,-1)^T,\quad c=0,\quad y=1.

前向先得 z=(1,5)Tz=(1,5)^T,两项都正,所以 h=(1,5)Th=(1,5)^T;输出 o=1−5=−4o=1-5=-4,损失 25/2=12.525/2=12.5。反向必须使用这一轮保存的旧参数:输出梯度 δo=o−y=−5\delta_o=o-y=-5;于是 ∇vE=δoh=(−5,−25)T\nabla_vE=\delta_oh=(-5,-25)^T,∂E/∂c=−5\partial E/\partial c=-5。传回隐藏层是 ∇hE=δov=(−5,5)T\nabla_hE=\delta_ov=(-5,5)^T,ReLU两处导数均为1,故 δz=(−5,5)T\delta_z=(-5,5)^T。

每个 WjkW_{jk} 只影响第 jj 个隐藏分数,局部导数为输入 xkx_k,所以梯度是外积而非点积:

∇WE=δzxT=(−10−5105),∇bE=(−5,5)T. \nabla_WE=\delta_zx^T=\begin{pmatrix}-10&-5\\10&5\end{pmatrix},\qquad \nabla_bE=(-5,5)^T.

传给输入则为 WTδz=(5,10)TW^T\delta_z=(5,10)^T。维度可以逐个核:权重梯度必须2×2,偏置梯度2×1,输入梯度2×1。输入梯度有定义不代表训练时必须更新输入,通常只更新指定的模型参数。

同步用学习率0.01更新后,W′=(1.1−0.951.90.95)W'=\begin{pmatrix}1.1&-0.95\\1.9&0.95\end{pmatrix},b′=(0.05,−0.05)Tb'=(0.05,-0.05)^T,v′=(1.05,−0.75)T,c′=0.05v'=(1.05,-0.75)^T,c'=0.05。重新前向得到 h′=(1.3,4.7)Th'=(1.3,4.7)^T,o′=−2.11o'=-2.11,损失 (−3.11)2/2=4.83605(-3.11)^2/2=4.83605。这才是一次完整更新的核验:先全部求完旧点梯度,再更新,再重新前向;不能沿反传走到哪就立即改参数并拿新值继续算。

本讲核心考点

  • 反传算梯度,优化器使用梯度更新;不要混淆(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: w11,w12w_{11},w_{12}; w21,w22w_{21},w_{22}.

Let the weights between the hidden layer and the output layer be: v1,v2v_1,v_2.

Let the biases be: Hidden layer biases: b1,b2b_1,b_2; Output layer bias: bob_o.

The network structure is shown below, in which h1,h2h_1,h_2 are the hidden features, and y^\hat{y} is the final output:

For a given input [x1,x2][x_1,x_2], perform the following calculations. (25%)

(1) Forward Pass: Compute the output y^\hat{y} of network. (Include activation in your calculations. Use σ\sigma to represent the Sigmoid function). (10%)

(2) Loss Calculation: Assume the target output as yy. Use mean squared error (MSE) to calculate the loss LL. (hint: use yy to present the label and y^\hat{y} 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 ∂L/∂v1\partial L/\partial v_1, ∂L/∂v2\partial L/\partial v_2, ∂L/∂bo\partial L/\partial b_o. Remove constant coefficients in calculation for simplicity) (5%)

(3.2) Compute the gradients of the loss with respect to the hidden layer weights w11,w12,w21,w22w_{11},w_{12},w_{21},w_{22} and biases b1,b2b_1,b_2. (5%)

公式按原题重排。图(题面,p.2):全连接 2→2→1。 元素:x1→h1x_1\to h_1 为 w11w_{11}、x2→h1x_2\to h_1 为 w12w_{12}、x1→h2x_1\to h_2 为 w21w_{21}、x2→h2x_2\to h_2 为 w22w_{22};两个隐藏单元经 v1,v2v_1,v_2 连到输出。 看什么:本题用目标单元优先的下标,不能直接套往年卷另一种下标方向。

演练定位:HW03-2025T1 p.2 Q2。 这题没有给数值,要输出通用的前向与梯度式。先把全部结点拆开;本题权重下标的首位是目标隐藏单元,与下一个旧试卷题不同。

HW03:先列前向中间量

量 如何计算 它的作用
z1z_1 w11x1+w12x2+b1w_{11}x_1+w_{12}x_2+b_1 隐藏单元 1 的预激活
z2z_2 w21x1+w22x2+b2w_{21}x_1+w_{22}x_2+b_2 隐藏单元 2 的预激活
h1,h2h_1,h_2 hj=max⁡(0,zj)h_j=\max(0,z_j) ReLU 隐藏输出,j=1,2
u v1h1+v2h2+bov_1h_1+v_2h_2+b_o 最终 sigmoid 之前的分数
p p=σ(u)p=\sigma(u) 预测,即原题的 y^\hat y
L L=(p−y)2L=(p-y)^2 这里采用单样本完整平方误差

这些量全是标量;不要把隐藏输出 h 与预激活 z 混称。题面准许梯度省略共同常数,下面先保留常数 2,把链写完整;如果最后选择省略,应对全部梯度统一处理。

HW03:从损失回到输出层

先沿 u→p→Lu\to p\to L 这条链求:

∂L∂p=2(p−y),∂p∂u=p(1−p),δ:=∂L∂u=2(p−y)p(1−p). \begin{aligned} \frac{\partial L}{\partial p}&=2(p-y),\\ \frac{\partial p}{\partial u}&=p(1-p),\\ \delta:=\frac{\partial L}{\partial u}&=2(p-y)p(1-p). \end{aligned}

δ\delta 只是给已经求出的一个导数取短名,不是新的误差定义。输出权重 vjv_j 只通过 u 影响预测,而 ∂u/∂vj=hj\partial u/\partial v_j=h_j,所以

∂L∂v1=δh1,∂L∂v2=δh2,∂L∂bo=δ. \begin{aligned} \frac{\partial L}{\partial v_1}&=\delta h_1,\\ \frac{\partial L}{\partial v_2}&=\delta h_2,\\ \frac{\partial L}{\partial b_o}&=\delta. \end{aligned}

偏置直接加到 u 上,本地导数为 1,故最后一项不再乘输入。

HW03:经过 ReLU 回到隐藏层

从 u 到 hjh_j 的本地导数是 vjv_j;从 hjh_j 到 zjz_j 的本地导数在 zj>0z_j>0 为 1、zj<0z_j<0 为 0。用指示量记录这扇“门”:

δj:=∂L∂zj=δvj1{zj>0},j=1,2. \delta_j:=\frac{\partial L}{\partial z_j} =\delta v_j\mathbf{1}\{z_j>0\},\qquad j=1,2.

这里在零点选择导数 0;若题目另有约定,须相应说明。门的开关由整个 zjz_j 决定,不由某条权重的正负决定。

最后逐个对 z 的乘加式求导:

参数 它直接影响哪个预激活 本地导数 最终梯度
w11w_{11} z1z_1 x1x_1 δ1x1\delta_1x_1
w12w_{12} z1z_1 x2x_2 δ1x2\delta_1x_2
w21w_{21} z2z_2 x1x_1 δ2x1\delta_2x_1
w22w_{22} z2z_2 x2x_2 δ2x2\delta_2x_2
b1b_1 z1z_1 1 δ1\delta_1
b2b_2 z2z_2 1 δ2\delta_2

这题只要求求梯度,没有给学习率,因此不编一个数值更新。若以后要求训练一步,将表里各梯度交给同一个更新规则,全部使用旧参数算完再统一更新。核对口诀的真正含义是:一条权重的本地导数等于它乘的源激活,因此“目标单元梯度 × 源激活”自然出现。

题面(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 (i1,i2)(i_1,i_2), and four hidden units (h1,h2)(h_1,h_2) and (h3,h4)(h_3,h_4). The output has two units indicated as (o1,o2)(o_1,o_2), and their targeted ground-truth are indicated as (t1,t2)(t_1,t_2). The weights and bias of fully connected layer are represented by ω\omega and bb with specific sub-descriptors.

The values of variables are given in the following table:

a) Compute the output (o1,o2)(o_1,o_2) with the input (i1,i2)(i_1,i_2) and network parameters as specified above. Write down all calculations, including results of (h1,h2,h3,h4)(h_1,h_2,h_3,h_4) 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., ℓMSE=12(t1−o1)2+12(t2−o2)2\ell_{MSE}=\frac{1}{2}(t_1-o_1)^2+\frac{1}{2}(t_2-o_2)^2. Compute the loss for output (o1,o2)(o_1,o_2) as calculated above. Then, use this loss to update the weight ω21\omega_{21} using backpropagation. If the learning rate is set as 0.1, what is the updated ω21′\omega'_{21} 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):全部变量

变量 i1i_1 i2i_2 w11w_{11} w12w_{12} w21w_{21} w22w_{22} w31w_{31} w32w_{32} w41w_{41} w42w_{42} b1b_1 b2b_2 b3b_3 b4b_4 t1t_1 t2t_2
值 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 隐藏特征接两线性输出。 元素:输入 i1,i2i_1,i_2 都连到预激活 h1,h2h_1,h_2;h1→h3h_1\to h_3、h2→h4h_2\to h_4 为 ReLU;h3,h4h_3,h_4 都连到 o1,o2o_1,o_2。输入到隐藏的首下标表示输入源,输出边 w31,w32w_{31},w_{32} 来自 h3h_3。 看什么:目标通过两个输出回传到同一 h3h_3,需要将两支贡献相加。

演练定位:2023 p.8 / 2024 p.8–9 Part III Q3。 本题输出层是线性的,不能额外套 sigmoid。原表中的输入到隐藏权重按“源输入→目标隐藏”编号;先沿图确认 w21w_{21} 连的是 i2→h1i_2\to h_1。

两输出旧题:前向与损失

结点 代入原表计算 结果
h1h_1 2×1+(−1)×0.5+0.52\times1+(-1)\times0.5+0.5 2
h2h_2 2×(−0.5)+(−1)×(−1)−0.52\times(-0.5)+(-1)\times(-1)-0.5 −0.5
h3h_3 ReLU(h1)\mathrm{ReLU}(h_1) 2
h4h_4 ReLU(h2)\mathrm{ReLU}(h_2) 0
o1o_1 0.5×2+(−0.5)×0−10.5\times2+(-0.5)\times0-1 0
o2o_2 (−1)×2+1×0+0.5(-1)\times2+1\times0+0.5 −1.5

h1,h2h_1,h_2 是激活前的值,h3,h4h_3,h_4 才是 ReLU 后的值。原题将两输出的平方误差各乘一半:

L=12(o1−t1)2+12(o2−t2)2=12(0−1)2+12(−1.5−0.5)2=0.5+2=2.5. \begin{aligned} L&=\frac12(o_1-t_1)^2+\frac12(o_2-t_2)^2\\ &=\frac12(0-1)^2+\frac12(-1.5-0.5)^2\\ &=0.5+2=2.5. \end{aligned}

写成预测减目标或目标减预测,平方后的损失相同;求导时不能只换残差符号却忘记相应链式法则。以下统一用预测减目标。

两输出旧题:分支先相加,再向前传

目标参数 w21w_{21} 影响 h1h_1,再经 ReLU 影响 h3h_3。h3h_3 同时影响两个输出,所以有两条回来的路径:

∂L∂o1=o1−t1=−1,∂L∂o2=o2−t2=−2,∂L∂h3=∂L∂o1∂o1∂h3+∂L∂o2∂o2∂h3=(−1)×0.5+(−2)×(−1)=1.5. \begin{aligned} \frac{\partial L}{\partial o_1}&=o_1-t_1=-1,\\ \frac{\partial L}{\partial o_2}&=o_2-t_2=-2,\\ \frac{\partial L}{\partial h_3} &=\frac{\partial L}{\partial o_1}\frac{\partial o_1}{\partial h_3} +\frac{\partial L}{\partial o_2}\frac{\partial o_2}{\partial h_3}\\ &=(-1)\times0.5+(-2)\times(-1)\\ &=1.5. \end{aligned}

第一支贡献 −0.5,第二支贡献 2,两者相加为 1.5。漏掉第二支会连梯度方向都判断错。再往前,h1=2>0h_1=2>0,ReLU 导数为 1;而 w21w_{21} 在 i2w21i_2w_{21} 里,本地导数为 i2=−1i_2=-1。因此

∂L∂w21=∂L∂h3∂h3∂h1∂h1∂w21=1.5×1×(−1)=−1.5. \frac{\partial L}{\partial w_{21}} =\frac{\partial L}{\partial h_3} \frac{\partial h_3}{\partial h_1} \frac{\partial h_1}{\partial w_{21}} =1.5\times1\times(-1)=-1.5.

两输出旧题:更新后重新核算

原参数为 0.5,学习率为 0.1:

w21new=0.5−0.1(−1.5)=0.65. w_{21}^{\mathrm{new}}=0.5-0.1(-1.5)=0.65.

这里只按题目改这一条权重,其他参数保持原值。重新前向:h1=2−0.65+0.5=1.85h_1=2-0.65+0.5=1.85,ReLU 后 h3=1.85h_3=1.85;h4h_4 仍为 0。新输出为 o1=0.5×1.85−1=−0.075o_1=0.5\times1.85-1=-0.075,o2=−1.85+0.5=−1.35o_2=-1.85+0.5=-1.35,所以

Lnew=12(−1.075)2+12(−1.85)2=2.2890625. L_{\mathrm{new}}=\frac12(-1.075)^2+\frac12(-1.85)^2 =2.2890625.

比原损失 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 f=(x+y)⋅zf=(x+y)\cdot z: suppose x=3,y=−8,z=2x=3,y=-8,z=2, what are the gradients ∂f/∂x\partial f/\partial x and ∂f/∂z\partial f/\partial z using back-propagation?

公式按原题重排。图中的 x,yx,y 先进入加法节点得到 qq,再与 zz 进入乘法节点得到 ff。

演练定位:2025 官方节选 PDF p.2(卷面 p.5)Part II Q4。 图的加法、乘法结构与正文一致,但数字已经改变,不能背正文的 −4、3。

先前向:q=3+(−8)=−5q=3+(-8)=-5,f=qz=(−5)×2=−10f=qz=(-5)\times2=-10。从目标 f 开始,上游梯度为 1。对 q,乘法的本地导数为 z=2;再经过加法,对 x 的本地导数为 1。因此

∂f∂x=∂f∂q∂q∂x=2×1=2. \frac{\partial f}{\partial x} =\frac{\partial f}{\partial q}\frac{\partial q}{\partial x} =2\times1=2.

对 z 则直接经过乘法,本地导数为另一输入 q,所以 ∂f/∂z=−5\partial f/\partial z=-5。题目只求梯度,没有要求把 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 (i1,i2)(i_1,i_2) and produces a single output o1o_1. It contains a hidden layer with pre-activation units (h1,h2)(h_1,h_2) and post-activation ReLU units (h3,h4)(h_3,h_4). Crucially, the network features two residual connections (skip connections): The input i1i_1 is added to h3h_3 to form h5h_5, and the input i2i_2 is added to h4h_4 to form h6h_6. The final output o1o_1 is a weighted sum of h5h_5 and h6h_6.

Given Values:

Inputs: i1=2.0,i2=−1.0i_1=2.0,i_2=-1.0

Weights (Layer 1): w11=1.0,w12=0.5,w21=1.0,w22=−1.0w_{11}=1.0,w_{12}=0.5,w_{21}=1.0,w_{22}=-1.0

Biases (Layer 1): b1=0.0,b2=0.0b_1=0.0,b_2=0.0

Weights (Layer 2): w51=1.0,w61=1.0w_{51}=1.0,w_{61}=1.0

Bias (Output): b3=0.0b_3=0.0

Ground Truth: t1=2.0t_1=2.0

(a) Based on the network structure, calculate the numerical values for the pre-activation hidden units (h1,h2)(h_1,h_2), the residual sums (h5,h6)(h_5,h_6), and the final output o1o_1. (2%)

(b) Using the Mean Squared Error (MSE) loss function L=0.5(t1−o1)2L=0.5(t_1-o_1)^2, first calculate the total loss value. Then, perform backpropagation to calculate the gradient of the loss with respect to the weight w12w_{12} (the weight connecting i1i_1 to h2h_2). Finally, calculate the updated value of w12w_{12} with a learning rate η=0.1\eta=0.1. (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。 两条残差连接执行的是加法,没有额外可训练权重。输入在前向中走了两条路线,不代表本题目标参数也一定经过两条路线;求某个参数的导数时,必须追踪它真正影响的结点。

残差旧题:逐结点前向

结点 代入原值 结果
h1h_1 i1w11+i2w21+b1=2×1+(−1)×1+0i_1w_{11}+i_2w_{21}+b_1=2\times1+(-1)\times1+0 1
h2h_2 i1w12+i2w22+b2=2×0.5+(−1)×(−1)+0i_1w_{12}+i_2w_{22}+b_2=2\times0.5+(-1)\times(-1)+0 2
h3h_3 ReLU(h1)\mathrm{ReLU}(h_1) 1
h4h_4 ReLU(h2)\mathrm{ReLU}(h_2) 2
h5h_5 h3+i1=1+2h_3+i_1=1+2 3
h6h_6 h4+i2=2−1h_4+i_2=2-1 1
o1o_1 w51h5+w61h6+b3=1×3+1×1+0w_{51}h_5+w_{61}h_6+b_3=1\times3+1\times1+0 4

残差加法把原输入接回隐藏输出,所以不能把 h5,h6h_5,h_6 当成纯 ReLU 输出直接抄成 1、2。目标为 t1=2t_1=2,半平方损失为

L=12(o1−t1)2=12(4−2)2=2. L=\frac12(o_1-t_1)^2=\frac12(4-2)^2=2.

残差旧题:只沿目标权重的影响链回传

w12w_{12} 连的是 i1→h2i_1\to h_2。它的影响顺序为 h2→h4→h6→o1→Lh_2\to h_4\to h_6\to o_1\to L。反传按相反顺序列每段因子:

反传段 为什么是这个因子 本地导数或上游量
损失到输出 半平方对预测求导 ∂L/∂o1=4−2=2\partial L/\partial o_1=4-2=2
输出到 h6h_6 输出中的系数 w61w_{61} 1
h6h_6 到 h4h_4 加法 h6=h4+i2h_6=h_4+i_2 1
h4h_4 到 h2h_2 h2=2>0h_2=2>0,ReLU正分支 1
h2h_2 到 w12w_{12} 参数乘着源输入 i1i_1 2

沿串联路径相乘:

∂L∂w12=2×1×1×1×2=4. \frac{\partial L}{\partial w_{12}} =2\times1\times1\times1\times2=4.

虽然输出还依赖 h5h_5,但 h5h_5 不依赖本题的 w12w_{12},那条分支对这个参数贡献为 0。若改求输入 i1i_1 的导数,残差直连才会额外贡献,不能把两种求导对象混淆。

残差旧题:更新与初始化判断

按题给学习率 0.1,仅更新这条权重:

w12new=0.5−0.1×4=0.1. w_{12}^{\mathrm{new}}=0.5-0.1\times4=0.1.

补充核对:新 h2=2×0.1+(−1)×(−1)=1.2h_2=2\times0.1+(-1)\times(-1)=1.2,仍在 ReLU 正分支;新 h6=1.2−1=0.2h_6=1.2-1=0.2,另一支 h5h_5 仍为 3,故新输出为 3.2、半平方损失为 0.72。这里只用于核对梯度方向,原题没有要求把所有参数一起更新。

零初始化问题要回到梯度:同层完全对称的单元可能一直收到相同梯度,不能学出不同特征;若 ReLU 在 0 处取导数 0,隐藏路径还会暂时被门关闭。残差连接允许输入直接通过,不自动令那些可训练隐藏权重获得正确的不同梯度。因此不能仅因为有残差就宣称“全部权重和偏置初始化为零没有问题”。这与允许部分偏置初始化为零是两回事。

返回正文

来源与证据

  • 原件:L06-Neural-Network-Basics-2025T1.pdf(本地课件);对应页区间见文件头及各节标题。本页是 2025T1 旧材料预习,不代表 2026T1 已讲进度。页码按当前 91 页 PDF,不能直接用仍标到 103 的旧页脚号。p.74 起为 ESTR3108 扩展。
  • 数字演示凡非课件原例均明确标为“补充自取”;这些例子用于理解,不是教师布置的作业。
  • 附录中的历史题面保留其文件名、年份和题号,与当前作业区分;它们不能证明本学期考试范围。正文的学习检查是通识练习,不作出题预测。