跳转至

反向传播完整算例:作业二·5(逐元素法 + 老师对「两类符号」的裁决)

  • 章节:第23章 · 前馈神经网络(前向 + 反向传播 / 计算题)
  • 载体题目:作业二·5(两层前馈网络,无偏置)
  • 相关条目
  • 反向传播-为什么权重梯度是外积xδᵀ的链式推导.md(那条用 \(\hat y=5\)\(\delta=[4,0]^\top\) 演示外积方向;本条是 \(\hat y=4\)整道算例 + 老师裁决
  • 线性变换-WTx转置与维度判别.md(本课程约定 \(z=W^\top x\)
  • 出处:课本(李航《机器学习方法》)式 23.42–23.52;老师(叶海良)钉钉裁决(2026-06,周末)。

问题/疑问

两层网络:\(\boldsymbol x\xrightarrow{W_1}\boldsymbol z_1\xrightarrow{\text{ReLU}}\boldsymbol h_1\xrightarrow{W_2}\hat y\)\(\boldsymbol x=[1,2]^\top\)\(W_1=\begin{bmatrix}1&2\\-1&0\end{bmatrix}\)\(W_2=[1,2]^\top\)\(y=1\)\(L=\tfrac12(\hat y-y)^2\),无偏置。 求 \(\hat y,\ L,\ \partial L/\partial W_1,\ \partial L/\partial W_2\)

乱点:黑板、本子、课本三方答案对不上——前向有人 4 有人 5;梯度有人横有人竖、互为转置。到底哪个对?

老师的裁决(先钉死方法,再看算例)

钉钉原话(叶海良,2026-06): - 「按逐元素理解不会出问题」 - 「少了个转置」(承认黑板上的权重梯度漏了转置) - 「你按照逐元素去理解,书上用了两类符号,那个算法和前面没有很一致,需要转置

翻译成可操作的三条:

  1. 逐元素式 (23.49) 是免疫层\(\dfrac{\partial L}{\partial w_{ji}}=\delta_j\,h_i\),对每个标量权重单独算,没有任何转置,不会错。
  2. 课本内部两套符号打架:前面的逐元素式(23.43/23.49)与后面的矩阵算法式 23.58 \(\nabla_W L=\delta\,h^\top\) 不一致;要套到本课程的 \(z=W^\top x\) 约定上,矩阵式必须再转一次\(\nabla_W L=x\,\delta^\top\)
  3. 形状是铁律\(\partial L/\partial W\) 永远与 \(W\) 同形(因更新式 \(W\leftarrow W-\eta\nabla_W L\) 要逐元素相减)。算完拿它反查,发现长得像 \(W^\top\) 就是混了符号。

正确答案(本课程约定 \(z=W^\top x\),逐元素,\(\hat y=4\)

记号:\(W\) 摆成「输入 × 神经元」,\(w_{ij}\)=输入 \(i\)→神经元 \(j\) 的权重。\(W_1\)\(w_{11}{=}1,w_{12}{=}2,w_{21}{=}{-}1,w_{22}{=}0\)

① 前向 · 第一层净输入(式 23.43,分量式无转置)

\[z_j=\sum_i w_{ij}x_i+b_j\]
\[z_1=w_{11}x_1+w_{21}x_2=1\cdot1+(-1)\cdot2=-1\]
\[z_2=w_{12}x_1+w_{22}x_2=2\cdot1+0\cdot2=2\]

② 前向 · ReLU 激活(式 23.42)

\[h_1=\mathrm{ReLU}(-1)=0,\qquad h_2=\mathrm{ReLU}(2)=2\]

③ 前向 · 输出层 + 损失

\[\hat y=\sum_i w^{(2)}_{i1}h_i=1\cdot0+2\cdot2=4\]
\[L=\tfrac12(\hat y-y)^2=\tfrac12(4-1)^2=\tfrac92\]

④ 反向 · 输出层误差(式 23.48 / 23.56)

\[\delta^{(2)}=\frac{\partial L}{\partial z^{(2)}}=\hat y-y=4-1=3\]

⑤ 反向 · \(W_2\) 的梯度(式 23.49)

\[\frac{\partial L}{\partial w^{(2)}_{i1}}=\delta^{(2)}\,h_i\]
\[\frac{\partial L}{\partial w^{(2)}_{11}}=3\cdot0=0,\qquad \frac{\partial L}{\partial w^{(2)}_{21}}=3\cdot2=6\]
\[\Longrightarrow\quad \nabla_{W_2}L=\begin{bmatrix}0\\6\end{bmatrix}\quad(\text{竖的,与 }W_2\text{ 同形})\]

⑥ 反向 · 误差传回第一层(式 23.52)

\[\delta_j^{(1)}=\mathrm{ReLU}'(z_j)\cdot w^{(2)}_{j1}\cdot\delta^{(2)}\]

其中 \(\mathrm{ReLU}'(-1)=0,\ \mathrm{ReLU}'(2)=1\)

\[\delta_1^{(1)}=0\cdot1\cdot3=0,\qquad \delta_2^{(1)}=1\cdot2\cdot3=6\quad\Longrightarrow\quad \delta^{(1)}=\begin{bmatrix}0\\6\end{bmatrix}\]

⑦ 反向 · \(W_1\) 的梯度(式 23.49)

\[\frac{\partial L}{\partial w_{ij}}=\delta_j^{(1)}\,x_i\]
元素 \(=\delta_j x_i\) 位置(行 \(i\)\(j\))
\(\partial L/\partial w_{11}\) \(\delta_1 x_1=0\cdot1\) 0 行1列1
\(\partial L/\partial w_{12}\) \(\delta_2 x_1=6\cdot1\) 6 行1列2
\(\partial L/\partial w_{21}\) \(\delta_1 x_2=0\cdot2\) 0 行2列1
\(\partial L/\partial w_{22}\) \(\delta_2 x_2=6\cdot2\) 12 行2列2
\[\Longrightarrow\quad \nabla_{W_1}L=\begin{bmatrix}0&6\\0&12\end{bmatrix}=\boldsymbol x\,(\delta^{(1)})^\top\quad(\text{与 }W_1\text{ 同形})\]

最终答案

\[\boxed{\ \hat y=4,\quad L=\tfrac92,\quad \nabla_{W_2}L=\begin{bmatrix}0\\6\end{bmatrix},\quad \nabla_{W_1}L=\begin{bmatrix}0&6\\0&12\end{bmatrix}\ }\]

两个自检:① 形状——两个梯度分别与 \(W_2,W_1\) 同形;② 死神经元——\(z_1=-1<0\) 被 ReLU 压死 → \(\delta_1^{(1)}=0\)\(W_1\) 梯度第一列全 0。

易错点 / 为什么错

  • 横竖/转置混约定:黑板用课本矩阵式 \(\delta h^\top\)(δ 在左)算出 \(\nabla_{W_1}L=\big[\begin{smallmatrix}0&0\\6&12\end{smallmatrix}\big]\)\(\nabla_{W_2}L=(0,6)\) 横排——这是把课本符号直接套到本课程 \(z=W^\top x\) 上,少转了一次。转置回来即本条答案。老师已认此处「少了个转置」。
  • \(\hat y\) 到底 4 还是 5(另一独立坑):取决于 \(W_1\) 那个转置删不删,与上面的梯度横竖是两件事
  • 本课程 \(z=W^\top x\) + 删转置\(W_1\)(老师后来的更正)→ \(\hat y=4\)本条 / lsq 本子)。
  • \(z=W^\top x\) + 保留原题转置 \(W_1=[\cdots]^\top\)(两转置抵消)→ \(\hat y=5\)(见 [[反向传播-为什么权重梯度是外积xδᵀ的链式推导]] 用的 \(\delta=[4,0]^\top\))。
  • 老师在不同时间两个都说过,此处自相矛盾;但无论 4 还是 5,权重梯度都按 \(x\delta^\top\),方法不变。
  • 凭"标量可交换"写反外积\(x\delta^\top\ne\delta x^\top\),写反得转置矩阵(详见相关条目)。
  • 万能解法:忘了横竖/转置,就回逐元素 \(\partial L/\partial w_{ij}=\delta_j h_i\),一格一格填,形状天然对——这正是老师说的「按逐元素理解不会出问题」。

出处

  • 课本(李航《机器学习方法》,OCR 见 txt/课本_复习讲义.md): 式 23.42 \(h_j=a(z_j)\);式 23.43 \(z_j=\sum_i w_{ji}h_i+b_j\)(前向分量式);式 23.48 \(\delta_j=\partial L/\partial z_j\)式 23.49 \(\partial L/\partial w_{ji}=\delta_j h_i\)(权重梯度分量式,⭐ 老师指定按此理解);式 23.50 \(\partial L/\partial b_j=\delta_j\);式 23.52 误差反传;式 23.58 矩阵式 \(\nabla_W L=\delta h^\top\)(与前面分量式互为转置,套本课程需再转一次)。
  • 老师(叶海良)钉钉裁决(2026-06,周末):「按逐元素理解不会出问题」「少了个转置」「书上用了两类符号,那个算法和前面没有很一致,需要转置」。
  • 本课程约定 \(z=W^\top x+b\):见 [[线性变换-WTx转置与维度判别]]。

备注

  • 一句话总结全程:课件/本课程用 \(z=W^\top x\),课本算法框用 \(z=Wx\),两者互为转置;连续几天的「4 还是 5 / 梯度横还是竖」之争,根子全在这套符号不一致——老师亲口承认是书本两类符号打架,不是学生算错
  • 落笔法(考试):一律逐元素 (23.49) + 本课程 \(z=W^\top x\),权重梯度 \(x\delta^\top\);算完用「梯度形状=参数形状」反查。