视频封面

视频元信息

  • 课程:吴恩达深度学习专项课程(Deep Learning Specialization)
  • 章节:p43 - 4.5 为深层神经网络构建模块(Building Blocks of Deep Neural Networks)
  • 时长:约 8 分 30 秒

内容摘要(TL;DR)

本节讲解深层神经网络的基本构建模块:每一层由前向传播函数(输入 A^[L-1],输出 A^[L])与反向传播函数(输入 dA^[L],输出 dA^[L-1] 及 dW^[L]、dB^[L])组成,二者通过缓存(Cache)传递信息。把各层模块串联起来,即可完成一次完整的前向传播与反向传播,进而用梯度下降更新参数。


一、回顾与引入:为什么需要"构建模块" [00:00]

  • 在前面几周的视频中,已经分别学过了前向传播(Forward Propagation)和反向传播(Back Propagation)的基本组件。
  • 本节目标:把这些组件拼装起来,构建一个完整的深层神经网络。
  • 讲解方法:先聚焦于单独一层 L,看它的计算流程,再推广到整个网络。

理解:这一节是"从零件到整机"的过渡。前面章节分别讲了单个公式(如 Z=WA+B、激活函数、各类求导),本节把它们封装成可复用的函数模块。


二、单层的前向传播函数(Forward Function) [00:27]

2.1 输入与参数

  • 第 L 层的参数:W^[L] 和 B^[L](权重矩阵与偏置向量)。
  • 输入:来自上一层的激活值 A^[L-1]。
  • 输出:本层激活值 A^[L]。

2.2 计算过程

计算分两步:

  1. 线性部分:Z^[L] = W^[L] · A^[L-1] + B^[L]
  2. 非线性部分:A^[L] = g^[L](Z^[L]),其中 g 为该层激活函数

即:由 A^[L-1] 得到 A^[L]。

2.3 缓存 Z^[L](关键设计)

  • 除了输出 A^[L],前向函数还要缓存(Cache)Z^[L]。
  • 原因:反向传播计算 dW、dB 时需要用 Z^[L](例如 sigmoid/ReLU 的导数依赖 Z 值)。

易错点:忘记缓存 Z^[L]。反向传播中计算 dZ^[L] = dA^[L] * g'^[L](Z^[L]),若没有保存 Z^[L],就必须重新前向计算一遍,浪费算力。这也是为什么要把 Z 存进 cache。

拓展:在框架(如 TensorFlow / PyTorch)中,这一机制由自动微分和计算图自动完成——前向时框架记录中间张量,反向时直接复用,无需手动 cache。但理解手写 cache 的流程,有助于理解框架内部原理。


三、单层的反向传播函数(Backward Function) [01:34]

3.1 输入与输出

  • 输入:dA^[L](损失函数对本层激活的导数),以及前向阶段保存的 cache(含 Z^[L])。
  • 输出:
    • dA^[L-1]:对上一层激活的导数,用于继续向前一层反向传播;
    • dW^[L]、dB^[L]:本层参数的梯度,用于梯度下降更新。

3.2 内部计算链条

反向函数内部会依次计算:

  1. dZ^[L] = dA^[L] * g'^[L](Z^[L])(用到缓存的 Z^[L])
  2. dW^[L] = dZ^[L] · (A^[L-1])ᵀ / m(m 为样本数)
  3. dB^[L] = (1/m) · Σ dZ^[L]
  4. dA^[L-1] = (W^[L])ᵀ · dZ^[L]

3.3 关于箭头颜色的约定

  • 视频中提到:反向传播的箭头习惯用红色标注,以区别于前向传播,便于在示意图上区分数据流向。

理解:反向传播本质是链式法则的逐层应用。dA^[L] 是"上游传下来的误差信号",本层负责把它"翻译"成对参数 W、B 的梯度,并继续把信号传给上一层。


四、把各层串起来:完整的前向与反向流程 [03:54]

4.1 前向传播序列

从输入 X 出发:

  • 令 A^[0] = X;
  • 第 1 层:用 W^[1]、B^[1] 计算得到 A^[1],并缓存 Z^[1];
  • 第 2 层:用 W^[2]、B^[2] 计算得到 A^[2],并缓存 Z^[2];
  • ……依次类推;
  • 最终输出 A^[L] = ŷ(预测值);
  • 沿途缓存所有 Z 值。

4.2 反向传播序列

从 dA^[L] 出发,逐层回退:

  • 输入 dA^[L] → 输出 dA^[L-1],同时输出 dW^[L]、dB^[L];
  • 继续 → dA^[L-2],输出 dW^[L-1]、dB^[L-1];
  • ……一直回退到 dA^[1],输出 dW^[1]、dB^[1]。

关于 dA^[0] 的处理:理论上还能再算一步得到 dA^[0](即对输入特征 X 的导数),但对训练监督神经网络的权重没有用处,所以通常到此为止。

4.3 参数更新(一次梯度下降迭代)

  • 拿到所有梯度后,按梯度下降更新:
    • W^[L] := W^[L] - α · dW^[L]
    • B^[L] := B^[L] - α · dB^[L]
    • 其中 α 为学习率。
  • 至此完成神经网络一次完整的训练迭代(前向 + 反向 + 更新)。

思考:整个网络的训练循环可以概括为:A^[0]=X → 前向算出 ŷ → 反向算出所有梯度 → 更新所有 W、B → 重复。这正是深度学习训练的本质骨架。


五、实现细节:Cache 到底存什么 [07:22]

  • 概念层面:cache 的作用是保存 Z 值,供反向函数使用。
  • 实现层面(编程作业中的做法):cache 里通常还会一并存入 W、B(如 cache = (Z^[L], W^[L], B^[L]))。
  • 原因:反向传播函数需要用到本层的 W 和 B 参数,把它们打包进 cache,是一种方便地把参数传递到反向函数的实现技巧。

易错点:混淆"概念上的 cache"与"实现上的 cache"。概念上 cache 只需 Z;但工程实现中把 W、B 也塞进 cache 是常见做法,不要因此困惑。编程作业里会看到这种写法。

拓展:在真实框架中,这种"打包传递"由计算图和反向传播引擎自动管理,用户无需手动组织 cache。但手动实现一次(如 NumPy 版作业)能深刻理解数据依赖关系。


六、本节总结 [08:16]

  • 深层神经网络每一层包含两个基本模块:
    1. 前向传播步骤(Forward Function)
    2. 反向传播步骤(Backward Function)
  • 两者之间通过 Cache 传递信息(至少包含 Z,实现上常含 W、B)。
  • 把各层模块串联,即构成完整的深层网络训练流程。
  • 下一节将讲解如何真正实现这些构建模块。

理解:这一节建立了"模块化"的思维模型——每一层都是可复用的 forward/backward 单元,这正是深度学习框架设计的基础思想。


关键标签 / 关键词

深层神经网络、前向传播、反向传播、构建模块、Forward Function、Backward Function、Cache、Z^[L]、A^[L]、dA^[L]、dW、dB、梯度下降、链式法则、参数更新、学习率、吴恩达、深度学习专项课程


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