反向传播:通用激活梯度、δ 的角色、内积 vs 外积¶
- 章节:第23章 · 前馈神经网络(反向传播 / 计算题·解答题)
- 载体题目:作业二·5(两层网络,ReLU,约定 \(z=W^\top x+b\);定稿数值 \(\hat y=5,\ L=8\))
- 出处:课本 p.402 式 23.57 / 23.58(反向传播公式)、p.403–404 课程约定 \(z=W^\top x+b\)、p.402 梯度消失。框架性比喻(接力棒/采收)为助记,非课本原文。
我问的问题(疑问)¶
- 激活函数换成 sigmoid / tanh 这类,\(\delta=\dfrac{\partial L}{\partial h}\odot a'(z)\) 的公式还成立吗?
- 反向传播里的 \(\delta\)、各种偏导,到底谁是「层与层之间传递」的、谁是「层内临时」的?第一层的 \(\delta_1\) 和最开始的 \(\delta\) 是什么关系?
- 为什么 \(\dfrac{\partial L}{\partial W_1}=x\,\delta_1^\top\) 是 \(x\) 在左、\(\delta_1^\top\) 在右、而且是「真正的矩阵乘法(外积)」?顺序能不能反?
正确答案¶
① 任意逐元素激活函数都成立¶
对任何逐元素激活 \(h=a(z)\),恒有
「流回来的梯度 \(\odot\) 激活在 \(z\) 处的导数」。对应课本式 23.57 的 \(\operatorname{diag}\!\big(\frac{\partial a}{\partial z}\big)\) 那一项。只是各函数 \(a'\) 不同:
| 激活 | \(a'(z)\) | 反向时效果 |
|---|---|---|
| ReLU | \(1\,(z>0)\) / \(0\,(z\le0)\) | 纯开关:放行或掐断 |
| Sigmoid | \(a(z)\big(1-a(z)\big)\in(0,\,0.25]\) | 缩小梯度(永远 ≤0.25) |
| Tanh | \(1-\tanh^2(z)\in(0,\,1]\) | 也缩小,但比 sigmoid 温和 |
🎯 高频考点·为什么 ReLU 缓解梯度消失:sigmoid 导数最大才 0.25,网络一深,反向连乘 \(0.25\times0.25\times\cdots\to0\) → 梯度消失(课本 p.402);ReLU 正区间导数恒为 1,连乘不衰减,故能缓解。
② 三类角色:接力棒 / 采收 / 层内临时(助记框架)¶
- 接力棒(层间传递):\(\dfrac{\partial L}{\partial h}\) 与 \(\delta=\dfrac{\partial L}{\partial z}\)。不是要更新的量,是从右往左一站站传的梯度信号,每过一个运算被改写一次。
- 参数梯度(每层就地采收):\(\dfrac{\partial L}{\partial W},\dfrac{\partial L}{\partial b}\)。接力棒路过每层时当场算出,这才是反向传播真正的产物(拿去更新 \(W,b\))。对应课本式 23.58。
- 层内临时量:前向算出暂存的 \(z,h\) 的数值,反向被借用(\(h_1\) 算 \(\partial L/\partial W_2\),\(z_1\) 定 ReLU 开关),用完即弃、不更新。
\(\delta_1\) 与最初 \(\delta\) 的关系:是同一根接力棒在不同站点的样子。约定每层都有自己的 \(\delta^{(层)}=\partial L/\partial z^{(层)}\)(钉在该层净输入 \(z\) 上,因为有了它再算 \(\partial L/\partial W,\partial L/\partial b\) 只差一步)。本题:最初 \(\delta=4\) 是输出层的 \(\delta\)(输出层无激活,\(\partial L/\partial\hat y=\partial L/\partial z_2\));\(\delta_1=[4,0]^\top\) 是第一层的 \(\delta\)。 一句话:\(h\) 是层与层的「接口/边界」,\(z\) 是层内部中转;接力棒在接口上叫 \(\partial L/\partial h\),钻进层内钉到 \(z\) 上就叫 \(\delta\)。
③ 为什么是外积、顺序不能反¶
铁律:梯度形状必须和参数一致。\(W_1\) 是 \(2\times2\),故 \(\partial L/\partial W_1\) 也必须 \(2\times2\)。两个长度 2 的向量 \(x,\delta_1\) 有两种乘法:
| 写法 | 维度 | 结果 |
|---|---|---|
| \(\delta_1^\top x\)(行×列,内积) | \((1\times2)(2\times1)\) | 一个数 |
| \(x\,\delta_1^\top\)(列×行,外积) | \((2\times1)(1\times2)\) | 一个 \(2\times2\) 矩阵 ✅ |
要 \(2\times2\),只能取外积 \(x\,\delta_1^\top\)——顺序是被「要得出 \(2\times2\)」逼出来的,反过来写成内积就塌成一个数、形状全错。
外积直觉(记住考场不搞反):
「每个输入 × 每个神经元的敏感度」铺成一张表,就是外积。
💡 同样两个向量:算 \(\hat y=W_2^\top h_1\) 用内积(→ 数);算 \(\partial L/\partial W_1\) 用外积(→ 矩阵)。摆放顺序决定收缩成数还是铺开成矩阵。
易错点 / 为什么错¶
- 左上角 \(=x_1(\delta_1)_1=1\times4=4\),不是 1(曾口误)。完整 \(\dfrac{\partial L}{\partial W_1}=\begin{bmatrix}1\\2\end{bmatrix}\begin{bmatrix}4&0\end{bmatrix}=\begin{bmatrix}4&0\\8&0\end{bmatrix}\)。
- \(\delta\) 钉在净输入 \(z\) 上,不是 \(h\) 上;输出层无激活时 \(\partial L/\partial\hat y=\partial L/\partial z\)。
- 参数梯度(\(\partial L/\partial W,\partial L/\partial b\))才更新;\(\partial L/\partial h,\delta\) 只是往前传,不更新;\(z,h\) 数值只是被借用。
- 内积/外积顺序不可乱:以「梯度形状=参数形状」反推顺序。
整题速查(作业二·5,可默写复盘)¶
| 阶段 | 量 | 结果 |
|---|---|---|
| 前向 | \(z_1=W_1^\top x+b_1\) | \([5,-1]^\top\) |
| 前向 | \(h_1=\mathrm{ReLU}(z_1)\) | \([5,0]^\top\) |
| 前向 | \(\hat y=W_2^\top h_1+b_2\) | \(5\) |
| 前向 | \(L=\tfrac12(\hat y-y)^2\) | \(8\) |
| 反向 | \(\delta=\hat y-y\) | \(4\) |
| 反向 | \(\partial L/\partial W_2=\delta h_1\) | \([20,0]^\top\) |
| 反向 | \(\partial L/\partial b_2=\delta\) | \(4\) |
| 反向 | \(\partial L/\partial h_1=\delta W_2\) | \([4,8]^\top\) |
| 反向 | \(\delta_1=\partial L/\partial z_1=\partial L/\partial h_1\odot\mathrm{ReLU}'(z_1)\) | \([4,0]^\top\) |
| 反向 | \(\partial L/\partial W_1=x\,\delta_1^\top\) | \(\begin{bmatrix}4&0\\8&0\end{bmatrix}\) |
| 反向 | \(\partial L/\partial b_1=\delta_1\) | \([4,0]^\top\) |
备注¶
「接力棒 / 采收 / 层内临时」是助记比喻,非课本术语;课本以「误差向量 \(\delta\)」「梯度 \(\nabla_W L,\nabla_b L\)」表述(式 23.57/23.58)。激活导数表中 sigmoid/tanh 的导数范围为标准微积分结论,课本未必逐条列出。权重梯度写成 \(x\,\delta^\top\) 是课程约定 \(z=W^\top x+b\) 下的形式,与课本式 23.58(\(\delta h^\top\) 记法)等价、仅 \(W\) 取向不同。