
视频元信息
- 视频标题:(官方中英!) 2026公认最好的【吴恩达深度学习】教程!附课件、代码及实战项目 Professionalization of Deep Learning p16 16 - 2.9逻辑回归梯度下降
- 所属课程:吴恩达深度学习专项课程(Deep Learning Specialization)
- 课程模块:神经网络与深度学习(Neural Networks and Deep Learning)
- 视频序号:第 2 周 第 9 节(2.9)
- 时长:约 6 分 40 秒(约 400 秒)
内容摘要(TL;DR)
本节讲解如何用计算图(Computation Graph)对逻辑回归进行反向传播推导,逐步求出 da、dz、dw1、dw2、db 等关键梯度,并给出单样本梯度下降的参数更新公式。核心结论是:dz = a - y,dw = x · dz,db = dz。本节仅针对单个训练样本,为下一节在全部 m 个样本上应用打下基础。
章节笔记
一、本节目标与引入 [00:00]
本节的核心目标是:推导逻辑回归中实现梯度下降所需的关键导数公式。
- 本节要回答的问题是:如何计算导数,从而对逻辑回归实现梯度下降。
- 关键产出是:实现逻辑回归梯度下降所需的核心方程(key equations)。
- 吴恩达特别说明:用计算图来推导逻辑回归的梯度其实有点"杀鸡用牛刀"(overkill),但之所以采用这种方式,是为了让学习者提前熟悉计算图这套思维工具,等到后面讲完整的神经网络时,会更容易理解。
理解:这里的教学策略是"先慢后快"。逻辑回归是神经网络的一个最简单的特例(单层、单神经元、Sigmoid 激活),把它的反向传播用计算图完整推一遍,后面推广到多层网络时,学生只需要"重复同样的模式"即可。
二、逻辑回归的计算图回顾 [00:44]
先回顾逻辑回归的前向传播(forward propagation)过程。
前向传播公式:
- 预测值:ŷ = σ(z)
- 其中 z = w₁x₁ + w₂x₂ + b(本节以两个特征 x₁、x₂ 为例)
- 损失函数(单个样本):L(a, y),其中 a = ŷ 是回归输出,y 是真实标签(ground truth label)
计算图的结构(从左到右):
- 输入:w₁、w₂、b 以及特征值 x₁、x₂
- 计算 z:z = w₁x₁ + w₂x₂ + b
- 计算 a(即 ŷ):a = σ(z)
- 计算损失:L(a, y)
逻辑回归的目标: 修改参数 w 和 b,使损失 L 减小。
基础事实:逻辑回归的损失函数(交叉熵损失)为: L(a, y) = −[y·log(a) + (1−y)·log(1−a)] 这是后续求导的基础公式。
三、反向传播第一步:计算 da [02:28]
从计算图的最右端(损失 L)开始向左反向计算导数。
- 第一个要求的是:损失 L 关于变量 a 的导数,代码中用
da表示。 - 推导结果:da = −y/a + (1−y)/(1−a)
说明与提醒:
- 这个结果可以通过对损失函数关于 a 求导得到(会用微积分的话可以自己推)。
- 易错点:吴恩达明确说,如果不会微积分也不用担心,课程会直接提供所需的导数公式。
- 对于会微积分的同学,他鼓励自己动手,从上一页的损失公式出发,用微积分求出对 a 的导数。
推导(拓展): 设 L(a, y) = −[y·log(a) + (1−y)·log(1−a)] 对 a 求导: dL/da = −[y·(1/a) + (1−y)·(−1/(1−a))] = −y/a + (1−y)/(1−a) 这正是视频中给出的 da 表达式。
四、反向传播第二步:计算 dz [03:41]
- 代码中变量名为
dz,表示损失关于 z 的导数(即 dL/dz)。 - 核心结论:dz = a − y
推导过程(链式法则):
- dz = (dL/da) · (da/dz)
- 其中 dL/da 就是上一步求出的 da = −y/a + (1−y)/(1−a)
- 而 da/dz = a·(1−a),这是 Sigmoid 函数导数的经典结论
推导(拓展):Sigmoid 函数 σ(z) = 1/(1+e^(−z)),其导数为 σ'(z) = σ(z)·(1−σ(z)),即 a·(1−a)。这是 Sigmoid 最重要的性质之一,也是深度学习中最常被引用的导数结论。
将两部分相乘并化简:
- dz = [−y/a + (1−y)/(1−a)] · a·(1−a)
- 展开化简后得到:dz = a − y
重要提醒:这个化简结果 dz = a − y 极其简洁漂亮,是逻辑回归梯度下降的核心。它也是后面所有神经网络反向传播中输出层梯度的基础形式。
考点:dz = a − y 这个结论必须牢记,它会在后续所有涉及逻辑回归和神经网络输出层的推导中反复出现。
五、反向传播第三步:计算 dw 和 db [05:13]
最后一步是回推到 w 和 b,计算需要改变多少。
关键公式:
- dw₁ = x₁ · dz
- dw₂ = x₂ · dz
- db = dz
说明:
- 因为 z = w₁x₁ + w₂x₂ + b,所以 z 对 w₁ 的偏导就是 x₁,对 w₂ 的偏导就是 x₂,对 b 的偏导就是 1。
- 因此根据链式法则,dw₁ = x₁·dz,dw₂ = x₂·dz,db = 1·dz = dz。
理解:这一步的规律可以总结为"梯度 = 输入 × 上游梯度"。对于权重 w,它的梯度是它的输入 x 乘以上游梯度 dz;对于偏置 b,它的输入恒为 1,所以梯度就是 dz 本身。这个规律在多层神经网络中会以"dz 乘以该层输入"的形式反复出现。
六、单样本梯度下降的参数更新 [05:43]
对于单个训练样本,一次梯度下降的完整流程如下:
- 用公式计算 dz = a − y
- 用公式计算 dw₁ = x₁·dz,dw₂ = x₂·dz,db = dz
- 执行参数更新:
- w₁ := w₁ − α · dw₁
- w₂ := w₂ − α · dw₂
- b := b − α · db
其中 α 是学习率(learning rate)。
- 以上就是对单个样本执行一步梯度下降的完整过程。
易错点:注意更新时用的是减号(w − α·dw),因为梯度指向损失增大的方向,我们要沿梯度反方向下降。写成加号是最常见的低级错误。
重要提醒:本节讲的都是"对单个训练样本"的梯度。但实际训练逻辑回归时,训练集有 m 个样本,不能只用一个样本更新一次。如何把这些思路应用到整个训练集,是下一节的内容。
七、本节小结与下节预告 [06:22]
- 本节完整演示了:如何计算导数,并对单个训练样本实现逻辑回归的梯度下降。
- 下一节将把这里的结论推广:不是从单个样本学习,而是从整个训练集(m 个样本)学习。
思考:从单样本到 m 个样本,核心变化是把每个样本的 dw 求出来再求和/求平均,得到全局梯度后再更新一次参数。这正是下一节要讲的"梯度下降在 m 个样本上的应用"。
关键公式速查表
| 步骤 | 公式 | 代码变量名 |
|---|---|---|
| 前向:线性部分 | z = w₁x₁ + w₂x₂ + b | z |
| 前向:激活 | a = σ(z) | a |
| 反向:损失对 a | da = −y/a + (1−y)/(1−a) | da |
| 反向:损失对 z | dz = a − y | dz |
| 反向:损失对 w₁ | dw₁ = x₁ · dz | dw1 |
| 反向:损失对 w₂ | dw₂ = x₂ · dz | dw2 |
| 反向:损失对 b | db = dz | db |
| 更新 w₁ | w₁ := w₁ − α·dw₁ | — |
| 更新 w₂ | w₂ := w₂ − α·dw₂ | — |
| 更新 b | b := b − α·db | — |
容易踩坑的点汇总
- Sigmoid 导数:da/dz = a·(1−a),这是化简 dz 的关键,必须记牢。
- dz = a − y:这个极简结果是逻辑回归反向传播的核心,务必牢记。
- 更新方向:参数更新用减号(w − α·dw),不要写成加号。
- 单样本 vs 全样本:本节只处理一个样本,实际训练要用 m 个样本,别混淆。
- 学习率 α:更新公式中的 α 是学习率,控制每步更新的幅度。
拓展补充【拓展】
- 计算图的意义:计算图把复杂函数的求导拆解为一系列简单节点的局部求导,再通过链式法则组合。这正是现代深度学习框架(如 PyTorch、TensorFlow)自动微分(autograd)的底层原理。
- 为什么用计算图讲逻辑回归是"overkill":逻辑回归只有一层,直接手推公式也很简单。但计算图的价值在于可扩展性——当网络变成几十层、每层有成千上万个参数时,只有计算图 + 链式法则的框架才能系统化地处理。
- dz = a − y 的直观解释:当预测 a 大于真实 y 时,dz 为正,梯度下降会把 z 往小的方向推,从而让预测降低;反之亦然。这符合直觉。
- 与后续内容的衔接:本节是理解神经网络反向传播(backpropagation)的"最小可运行案例",掌握后,多层网络的反向传播只是把同样的链式法则重复更多次而已。
关键标签 / 关键词
逻辑回归、梯度下降、反向传播、计算图、链式法则、Sigmoid 函数、交叉熵损失、参数更新、学习率、dz = a − y、dw = x·dz、db = dz、吴恩达深度学习、神经网络与深度学习、单样本梯度
生成时间:2026-10-10 21:31:34 生成平台:VideoNote www.xygy.top