反向传播完整算例:作业二·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): - 「按逐元素理解不会出问题」 - 「少了个转置」(承认黑板上的权重梯度漏了转置) - 「你按照逐元素去理解,书上用了两类符号,那个算法和前面没有很一致,需要转置」
翻译成可操作的三条:
- 逐元素式 (23.49) 是免疫层:\(\dfrac{\partial L}{\partial w_{ji}}=\delta_j\,h_i\),对每个标量权重单独算,没有任何转置,不会错。
- 课本内部两套符号打架:前面的逐元素式(23.43/23.49)与后面的矩阵算法式 23.58 \(\nabla_W L=\delta\,h^\top\) 不一致;要套到本课程的 \(z=W^\top x\) 约定上,矩阵式必须再转一次 → \(\nabla_W L=x\,\delta^\top\)。
- 形状是铁律:\(\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,分量式无转置)¶
② 前向 · ReLU 激活(式 23.42)¶
③ 前向 · 输出层 + 损失¶
④ 反向 · 输出层误差(式 23.48 / 23.56)¶
⑤ 反向 · \(W_2\) 的梯度(式 23.49)¶
⑥ 反向 · 误差传回第一层(式 23.52)¶
其中 \(\mathrm{ReLU}'(-1)=0,\ \mathrm{ReLU}'(2)=1\):
⑦ 反向 · \(W_1\) 的梯度(式 23.49)¶
| 元素 | \(=\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 |
最终答案¶
两个自检:① 形状——两个梯度分别与 \(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\);算完用「梯度形状=参数形状」反查。