
视频元信息
- 课程来源:吴恩达深度学习专项课程(Deep Learning Specialization)
- 章节:3.10 反向传播的直觉(选修)
- 性质:选修课(Optional),不看也能完成后续内容
- 主题:用计算图(Computation Graph)直观推导神经网络反向传播的六个核心公式
内容摘要(TL;DR)
本节为选修课,通过逻辑回归的单个样本反向传播推导入手,逐步扩展到两层神经网络的反向传播。核心是推导出六个关键公式(dZ2、dW2、db2、dZ1、dW1、db1),并进一步向量化到 m 个样本的批量计算。最后强调维度匹配是调试反向传播 bug 的重要技巧,并预告下一节将讲解权重初始化。
一、课程定位与回顾 [00:00]
本节是选修内容
- 本节视频完全可选,看或不看都不影响后续课程的学习。
- 目标是帮助理解反向传播公式是如何从计算图中推导出来的,而非死记硬背。
逻辑回归的前向与反向传播回顾 [00:16]
前向传播(Forward Pass)流程:
- 计算 z
- 计算 a(激活值)
- 计算损失 loss
反向传播(Backward Pass)流程:
- 先计算 dA
- 再计算 dz
- 最后计算 dW 和 dB
理解:这就是计算图的核心思想——前向计算数值,反向计算梯度。反向传播本质上就是链式法则在计算图上的系统化应用。
二、逻辑回归的梯度推导(复习) [00:41]
损失函数定义 [00:41]
逻辑回归的损失函数为:
L(a, y) = -y·log(a) - (1-y)·log(1-a)
dA 的推导 [00:57]
对损失函数关于 a 求导,得到:
dA = -y/a + (1-y)/(1-a)
- 这是纯微积分推导结果,熟悉求导的同学可以自行验证。
dZ 的推导 [01:23]
关键公式:dZ = dA · g'(z)
- 其中 g(z) = sigmoid(z),是本例输出单元的激活函数。
推导(链式法则):
- 因为 a = σ(z)
- 所以 ∂L/∂z = (∂L/∂a) · (da/dz)
- 而 da/dz = d/dz·g(z) = g'(z)
易错点:dZ = dA · g'(z) 这个公式依赖链式法则。如果不熟悉微积分,只需记住结论即可,吴恩达强调不影响后续实践。
dZ 的最终简化结果 [01:23]
对于逻辑回归(sigmoid 输出 + 交叉熵损失),推导可得:
dZ = a - y
- 这是一个非常简洁优雅的结果,也是为什么逻辑回归配合 sigmoid + 交叉熵如此常用的原因之一。
dW 和 db 的计算 [03:19]
- dW = dZ · x
- db = dZ(单个训练样本时)
思考:这里 x 是输入特征向量,dW 的维度与 W 一致。单个样本时 db 就等于 dZ,因为 b 是标量。
三、从逻辑回归到两层神经网络 [03:33]
核心差异:从一步变两步
- 逻辑回归:x → 输出单元(一步)
- 两层神经网络:x → 隐藏层 → 输出单元(两步)
因此反向传播也要做两次(对应两层)。
两层神经网络的前向计算步骤 [04:04]
网络结构:输入层 → 隐藏层 → 输出层
- 计算 z1 = W1·x + b1
- 计算 a1 = g1(z1)
- 计算 z2 = W2·a1 + b2(注意 z2 依赖 W2 和 b2)
- 计算 a2 = g2(z2)
- 得到损失 loss
反向传播的流程 [04:33]
从后往前依次计算:
- dA2 → dz2 → dW2、db2
- dA1 → dz1 → dW1、db1
重点:不需要对输入 x 求导,因为监督学习中 x 是固定的,我们优化的目标是 W 和 b,不是 x。
四、六个核心公式的推导 [05:11]
输出层(第2层)的梯度
dZ2 的计算:
- 可以显式计算 dA2,但实践中通常将 dA2 和 dZ2 两步合并为一步。
- dZ2 = a2 - y(与逻辑回归形式相同)
dW2 和 db2 的计算:
- dW2 = dZ2 · a1ᵀ
- db2 = dZ2
理解:这一步与逻辑回归的 dW = dZ·x 非常相似,只是现在 a1 扮演了 x 的角色。多出的转置是因为 W 是矩阵(行向量形式),而逻辑回归中 w 是列向量。
易错点:dW2 = dZ2 · a1ᵀ 中的转置容易遗漏。原因是 W 的矩阵表示与单个参数的向量表示之间存在转置关系。
隐藏层(第1层)的梯度 [06:40]
同样地,dA1 和 dZ1 的计算通常合并为一步:
dZ1 = W2ᵀ · dZ2 ⊙ g1'(z1)
- 其中 ⊙ 表示逐元素乘积(element-wise product)
理解:W2ᵀ·dZ2 这一步是把输出层的误差"反向传播"回隐藏层,然后乘以隐藏层激活函数的导数 g1'(z1),这与逻辑回归中 dZ = dA·g'(z) 的思路完全一致。
维度检查(重要技巧) [07:07]
假设网络结构:
- n0 = 输入特征数
- n1 = 隐藏单元数
- n2 = 输出单元数(二分类时为 1)
各变量维度:
- W2 是 n2 × n1 维
- z2 和 dZ2 是 n2 × 1 维(二分类时为 1×1)
- z1 和 dZ1 是 n1 × 1 维
维度验证 dZ1 公式:
- dZ1(n1×1)= W2ᵀ(n1×n2)· dZ2(n2×1)→ 得到 n1×1
- 再与 g1'(z1)(n1×1)做逐元素乘积 → 仍是 n1×1 ✓
核心原则:对于任何变量及其导数,维度始终相同。即 W 和 dW 同维度,b 和 db 同维度,z 和 dZ 同维度。
实用技巧:实现反向传播时,只要确保矩阵维度匹配,就能消除大量 bug。
输入层(第1层)参数的梯度 [10:17]
dW1 = dZ1 · xᵀ db1 = dZ1
理解:这与 dW2 = dZ2·a1ᵀ 形式完全一致,因为 x 扮演了 a0 的角色,xᵀ 就是 a0ᵀ。整个反向传播呈现出统一的模式。
五、六个关键公式汇总 [10:50]
| 公式 | 表达式 |
|---|---|
| dZ2 | a2 - y |
| dW2 | dZ2 · a1ᵀ |
| db2 | dZ2 |
| dZ1 | W2ᵀ · dZ2 ⊙ g1'(z1) |
| dW1 | dZ1 · xᵀ |
| db1 | dZ1 |
考点:这六个公式是神经网络反向传播的核心,务必牢记。它们构成了两层神经网络完整的一次反向传播过程。
六、向量化:从单样本到 m 个样本 [11:06]
为什么要向量化
- 逐个样本训练效率太低。
- 将 m 个样本的 z 按列堆叠成矩阵 Z,即可一次性处理所有样本。
前向传播的向量化回顾 [11:28]
- 将各样本的 z 堆叠成列:Z = [z(1), z(2), ..., z(m)]
- 得到:Z1 = W1·X + b1,A1 = g1(Z1)
反向传播的向量化 [12:43]
关键变化:
- dZ、dA 等也按列堆叠成矩阵,每个样本一列。
dW2 的向量化:
- dW2 = (1/m) · dZ2 · A1ᵀ
- 多出的 1/m 是因为成本函数 J 是 m 个样本损失的平均值。
db2 的向量化:
- db2 = (1/m) · sum(dZ2)(对 m 个样本的 dZ 求和后取平均)
dZ1 的向量化:
- dZ1 = W2ᵀ · dZ2 ⊙ g1'(Z1)
- 此时 dZ1 是 n1 × m 维矩阵(而非单样本时的 n1 × 1 向量)
- 逐元素乘积的两个操作数都是 n1 × m 维
理解:向量化的本质是把"对每个样本循环"变成"矩阵运算",利用线性代数一次性计算所有样本的梯度。这也是深度学习框架高效的核心原因之一。
七、学习建议与总结 [14:23]
吴恩达的经验分享
- 反向传播的推导是机器学习中最复杂的数学推导之一。
- 需要同时掌握线性代数和矩阵求导才能从零推导。
- 但不需要成为推导专家也能有效实现和调优神经网络。
- 大多数深度学习实践者只需理解到本视频的深度即可。
思考:这体现了一种工程实用主义——理解原理的直觉比掌握完整推导更重要。能实现、能调参、能 debug 才是关键能力。
本节核心收获
- 反向传播是链式法则在计算图上的系统应用。
- 两层网络的六个核心公式。
- 维度匹配是检查和调试反向传播的利器。
- 向量化让反向传播能高效处理批量数据。
下节预告 [14:23]
- 下一节将讲解权重初始化。
- 关键点:参数不能初始化为零,必须随机初始化,这对神经网络非常重要。
易错点提醒:参数初始化为零会导致所有隐藏单元对称,网络无法学习不同特征。这是初学者常踩的坑,下一节会详细解释原因。
关键标签 / 关键词
反向传播 #Backpropagation #计算图 #链式法则 #逻辑回归 #神经网络 #梯度下降 #向量化 #维度匹配 #权重初始化 #深度学习 #吴恩达 #dZ #dW #db #矩阵求导 #sigmoid #交叉熵
生成时间:2026-10-10 21:47:17 生成平台:VideoNote www.xygy.top