视频封面

视频元信息

  • 课程来源:吴恩达深度学习专项课程(Deep Learning Specialization)
  • 章节:3.10 反向传播的直觉(选修)
  • 性质:选修课(Optional),不看也能完成后续内容
  • 主题:用计算图(Computation Graph)直观推导神经网络反向传播的六个核心公式

内容摘要(TL;DR)

本节为选修课,通过逻辑回归的单个样本反向传播推导入手,逐步扩展到两层神经网络的反向传播。核心是推导出六个关键公式(dZ2、dW2、db2、dZ1、dW1、db1),并进一步向量化到 m 个样本的批量计算。最后强调维度匹配是调试反向传播 bug 的重要技巧,并预告下一节将讲解权重初始化。


一、课程定位与回顾 [00:00]

本节是选修内容

  • 本节视频完全可选,看或不看都不影响后续课程的学习。
  • 目标是帮助理解反向传播公式是如何从计算图中推导出来的,而非死记硬背。

逻辑回归的前向与反向传播回顾 [00:16]

前向传播(Forward Pass)流程:

  1. 计算 z
  2. 计算 a(激活值)
  3. 计算损失 loss

反向传播(Backward Pass)流程:

  1. 先计算 dA
  2. 再计算 dz
  3. 最后计算 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]

网络结构:输入层 → 隐藏层 → 输出层

  1. 计算 z1 = W1·x + b1
  2. 计算 a1 = g1(z1)
  3. 计算 z2 = W2·a1 + b2(注意 z2 依赖 W2 和 b2)
  4. 计算 a2 = g2(z2)
  5. 得到损失 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 才是关键能力。

本节核心收获

  1. 反向传播是链式法则在计算图上的系统应用。
  2. 两层网络的六个核心公式。
  3. 维度匹配是检查和调试反向传播的利器。
  4. 向量化让反向传播能高效处理批量数据。

下节预告 [14:23]

  • 下一节将讲解权重初始化。
  • 关键点:参数不能初始化为零,必须随机初始化,这对神经网络非常重要。

易错点提醒:参数初始化为零会导致所有隐藏单元对称,网络无法学习不同特征。这是初学者常踩的坑,下一节会详细解释原因。


关键标签 / 关键词

反向传播 #Backpropagation #计算图 #链式法则 #逻辑回归 #神经网络 #梯度下降 #向量化 #维度匹配 #权重初始化 #深度学习 #吴恩达 #dZ #dW #db #矩阵求导 #sigmoid #交叉熵


生成时间:2026-10-10 21:47:17 生成平台:VideoNote www.xygy.top