视频封面

视频元信息

  • 课程来源:吴恩达深度学习专项课程(Deep Learning Specialization)
  • 所属模块:改善深层神经网络(Improving Deep Neural Networks)
  • 本节主题:正则化(Regularization)

本视频前约 2 分钟的转录内容为明显的语音识别错误(乱码),无法还原有效信息。笔记主体依据 [01:56] 之后清晰可辨的英文讲解内容整理。


内容摘要(TL;DR)

本节讲解神经网络中的正则化技术,重点介绍 L2 正则化(权重衰减)的原理与实现:在代价函数中加入参数平方和惩罚项,通过修改反向传播中的梯度更新公式,使权重矩阵每次更新时被略微缩小,从而抑制过拟合。同时对比了 L1 正则化的稀疏性特点,并说明了正则化参数 λ 的调参方法与 Python 命名注意事项。


一、为什么正则化项通常只惩罚 W 而不惩罚 B [01:56]

要点总结

  • 正则化项一般只对权重矩阵 W 求和,而忽略偏置项 b。
  • 原因是 W 通常包含大量参数,而 b 只是单个数字。
  • 实践中不包含 b 的惩罚项几乎不会造成差别。

详细说明

在添加正则化项时,常见的写法是只对参数 W 求平方和,而不把 b 纳入。吴恩达给出的解释是:

  • 大多数参数集中在 W 中,b 只是一个标量(single number)。
  • 因此即便加入 b 的惩罚项,对结果的影响也微乎其微。
  • 吴恩达本人表示:实践中通常懒得包含 b,但如果你愿意也可以加上。

易错点:虽然理论上惩罚 b 也无妨,但标准做法是只惩罚 W。这是面试与作业中的常见细节。

理解:从维度上看,若某层有 1000 个神经元,W 可能有上百万个元素,而 b 只有 1000 个。惩罚 b 对整体正则化效果的贡献可以忽略不计,所以简化处理。


二、L2 正则化与 L1 正则化的对比 [02:22]

要点总结

  • L2 正则化:加入 λ/(2m) × ‖W‖² 项,是最常用的正则化方式。
  • L1 正则化:加入 λ/m × ‖W‖₁ 项,会使 W 变得稀疏(很多元素为 0)。
  • L1 的稀疏性理论上可压缩模型,但实践中稀疏程度有限,因此使用较少。

详细说明

L2 正则化(最常见):

  • 在代价函数中加入 λ/(2m) 乘以 W 的平方和。
  • 这是吴恩达强调的"最常用"的正则化类型。

L1 正则化:

  • 加入 λ/m 乘以 W 各元素绝对值之和(即 W 的 L1 范数)。
  • 使用 L1 后,W 向量会变得稀疏(sparse),即包含大量 0 元素。
  • 有人认为稀疏性有助于压缩模型(因为参数和为 0,存储模型所需内存更少)。
  • 但吴恩达指出:实践中 L1 带来的稀疏程度其实很有限,所以他认为 L1 用得并不多,也不是为了压缩模型而用。

考点对比:

  • L2 → 权重变小但不为 0,最常用。
  • L1 → 权重稀疏(很多为 0),用得少。
  • 分母写 m 还是 2m 只是缩放常数,不影响本质。

思考:L1 会让权重趋向 0 是因为其梯度为常数(绝对值函数的次梯度),而 L2 的梯度与权重本身成正比,权重越小梯度越小,因此不会精确压到 0。这是 L1 稀疏性的数学根源。


三、正则化参数 λ 的设定与命名注意事项 [03:34]

要点总结

  • λ 称为正则化参数(regularization parameter),是一个超参数。
  • 通常使用开发集(dev set)或留出交叉验证(hold-out cross validation)来调参。
  • 尝试多个 λ 值,在"训练集表现好"与"参数范数小(防过拟合)"之间做权衡。
  • Python 中 lambda 是保留关键字,因此编程作业中用 lambd(去掉 a)表示。

详细说明

  • λ 需要通过尝试不同取值,选择在验证集上表现最好的那个。
  • 这是一个在"拟合训练集"与"保持参数范数小以防过拟合"之间的权衡(trade-off)。
  • 在吴恩达的编程作业中,用 lambd 表示 λ,以避免与 Python 保留字 lambda 冲突。

易错点(编程):Python 中 lambda 是保留关键字,写代码时若直接用会报错。作业里统一用 lambd。


四、神经网络中的 L2 正则化代价函数 [04:33]

要点总结

  • 神经网络代价函数 = 各样本损失之和 + 正则化项。
  • 正则化项为 λ/(2m) × 所有层权重矩阵的平方和。
  • 矩阵的"平方范数"定义为所有元素平方之和,称为 Frobenius 范数(弗罗贝尼乌斯范数)。

详细说明

神经网络中有参数 W¹, b¹, ..., W^L, b^L(L 为层数),代价函数为:

J = (1/m) Σ 各样本损失 + λ/(2m) × Σ_l ‖W^l‖²_F

其中矩阵范数展开为:

‖W^l‖²_F = Σ_i Σ_j (W^l_ij)²

求和范围为 i 从 1 到 n^(l-1),j 从 1 到 n^(l)(因为 W^l 是 n^(l) × n^(l-1) 维矩阵)。

关于 Frobenius 范数:

  • 矩阵的平方范数在数学上不叫 L2 范数,而叫 Frobenius 范数,下标记为 F。
  • 吴恩达坦言:听起来更自然应该叫矩阵的 L2 范数,但由于一些"晦涩的线性代数技术原因",按惯例称为 Frobenius 范数。
  • 其含义就是:矩阵所有元素的平方和。

考点:矩阵的正则化项用的是 Frobenius 范数,不是 L2 范数。这是术语上的易混淆点。

理解:向量有 L2 范数,矩阵对应的平方和范数叫 Frobenius 范数。二者形式相同(都是元素平方和开根号),只是矩阵场合有专门名称。


五、带正则化的梯度下降实现(权重衰减) [06:26]

要点总结

  • 反向传播得到的 dW 需要额外加上 λ/m × W。
  • 更新公式变为:W := W − α × (dW_backprop + λ/m × W)。
  • 可改写为:W := W × (1 − αλ/m) − α × dW_backprop。
  • 因为每次更新时 W 被乘以一个略小于 1 的数,所以 L2 正则化又叫权重衰减(weight decay)。

详细说明

原始(无正则化)更新:

  • 用反向传播计算 dW,然后 W := W − α × dW。

加入正则化后:

  • 新的 dW := dW_backprop + λ/m × W。
  • 这个新定义仍然是代价函数(含正则化项)对参数的正确偏导数。
  • 更新:W := W − α × (dW_backprop + λ/m × W)。

推导权重衰减形式:

W := W − α × dW_backprop − α × λ/m × W = W × (1 − αλ/m) − α × dW_backprop

由于 α、λ、m 都是正数,1 − αλ/m 是一个略小于 1 的数。

重点:L2 正则化 = 权重衰减(weight decay)。原因是每次更新相当于先把权重矩阵乘以一个略小于 1 的系数,让权重"衰减"一点点,再减去正常的梯度项。

推导:把新 dW 代入更新式,提取公因子 W,得到 W × (1 − αλ/m) 减去梯度项。这就是"衰减"名称的由来——不是梯度把权重压小,而是更新公式本身就带了一个缩小因子。

思考:吴恩达提到他本人并不常用"weight decay"这个名字,但理解这个直觉很重要,因为很多框架(如 PyTorch 的优化器)里就有 weight_decay 参数,其实质就是 L2 正则化。


六、正则化为什么能防止过拟合 [09:29]

要点总结

  • 本节末尾吴恩达提出核心问题:"为什么正则化能防止过拟合?"
  • 答案留到下一节视频讲解。

详细说明

  • 吴恩达在视频结尾说:经常有学生问"为什么正则化能防止过拟合",将在下一个视频中通过直觉讲解来回答。

衔接提示:下一节(1.5 为什么正则化能减少方差 / 防止过拟合)会给出直觉解释,建议连续观看。


关键标签 / 关键词

#深度学习 #吴恩达 #正则化 #L2正则化 #L1正则化 #权重衰减 #weight_decay #Frobenius范数 #过拟合 #超参数λ #梯度下降 #反向传播 #神经网络 #Python保留字


生成时间:2026-10-10 22:01:30 生成平台:VideoNote www.xygy.top