
视频元信息
- 课程:吴恩达深度学习专项课程(Deep Learning Specialization)
- 章节:1.11 深度网络权值初始化(Weight Initialization for Deep Networks)
- 时长:约 6 分钟
- 主题:通过合理的权重初始化缓解深度神经网络中的梯度消失与梯度爆炸问题
内容摘要(TL;DR)
本视频提出用更谨慎的随机初始化来部分缓解深层网络的梯度消失/爆炸问题。核心思路是让每层权重的方差与输入单元数成反比:ReLU 激活用 2/n,tanh 激活用 1/n。初始化只是起点,方差缩放系数可作为超参数微调,但优先级通常不高。
1. 问题回顾:梯度消失与爆炸 [00:01]
上一节视频指出,非常深的神经网络会出现梯度消失(vanishing gradients)和梯度爆炸(exploding gradients)的问题。
本节的解决方案并非彻底消除该问题,而是一种部分缓解手段:为神经网络选择更好、更谨慎的随机初始化方式。
理解:初始化不能"解决"梯度问题,但能显著降低其严重程度,让网络在训练初期就处于一个数值健康的起点。
2. 单神经元示例:为什么权重不能太大 [00:18]
为便于理解,先从一个神经元的权重初始化说起,再推广到深层网络。
2.1 单神经元结构
假设一个神经元接收 4 个输入特征 x₁ 到 x₄,则:
z = w₁x₁ + w₂x₂ + w₃x₃ + w₄x₄ + b
为简化分析,令 b = 0(偏置初始化为 0)。
2.2 关键直觉
- z 是 wᵢxᵢ 的求和;
- 输入特征数 n 越大,单个 wᵢ 就应该越小,否则求和结果 z 会过大;
- 若 z 过大,激活函数(如 sigmoid/tanh)会进入饱和区,梯度趋近于 0,训练变慢。
易错点:这里讨论的是"输入单元数 n",不是层数。n 越大,权重方差应越小,才能让 z 保持在合理量级。
3. 权重初始化公式(核心考点)[01:52]
3.1 ReLU 激活函数(最常用)
对于第 l 层,其每个单元接收来自上一层的 n^(l-1) 个输入。权重矩阵初始化:
W^[l] = np.random.randn(shape) * np.sqrt(2 / n^[l-1])
- np.random.randn:生成标准正态分布(均值 0、方差 1)的随机数;
- 乘以 √(2/n^[l-1]):将随机变量的方差缩放到 2/n^(l-1);
- 这被称为 He 初始化(何恺明初始化,论文作者 He et al.)。
考点:ReLU 用 2/n,这是最常用的版本,因为 ReLU 是实践中最常见的激活函数。
3.2 tanh 激活函数
若使用 tanh 激活函数,则常数 2 换成 1:
W^[l] = np.random.randn(shape) * np.sqrt(1 / n^[l-1])
- 这被称为 Xavier 初始化(Glorot 初始化)。
3.3 其他变体
视频还提到 Yoshua Bengio 及其同事提出的另一种公式,部分论文中也会使用,但吴恩达建议:
- 用 ReLU → 用 2/n 版本;
- 用 tanh → 可用 1/n 版本。
理解:不同激活函数对输入分布的敏感度不同。ReLU 会"砍掉"一半负值,所以需要更大的方差(2/n)来补偿,使信号在前向传播中保持量级稳定。
4. 为什么这样设置有效 [03:12]
4.1 方差匹配的直觉
- 假设输入特征和激活值大致服从均值 0、方差 1 的分布;
- 通过设置权重方差为 2/n 或 1/n,可以让 z 也保持类似的量级(不会过大或过小);
- 这样每一层的权重矩阵 W 都不会远大于 1 或远小于 1。
4.2 对梯度问题的缓解
- 权重不会太快爆炸(变得极大);
- 权重不会太快衰减到 0;
- 因此可以训练较深的网络,而梯度不会过快消失或爆炸。
重点:这不能完全解决梯度问题,但能显著减少其影响,是训练深度网络的重要技巧之一。
5. 方差系数作为超参数 [05:04]
5.1 可调性
公式中的方差参数(如 2/n 中的 2)可以视为一个可调超参数:
W^[l] = np.random.randn(shape) * np.sqrt(α / n^[l-1])
其中 α 是乘入公式的系数,可通过超参数搜索来调整。
5.2 优先级建议
- 调节该超参数通常只有适度的效果;
- 吴恩达表示这不是他首先尝试调节的超参数;
- 相对于其他超参数(如学习率、层数、隐藏单元数),它的重要性通常较低。
思考:这说明初始化公式提供的是一个"默认起点",而不是必须精确调优的目标。实践中先用标准公式,再考虑是否微调。
6. 总结与要点 [05:43]
- 合理的权重初始化缩放能帮助网络训练得更快;
- 核心公式:
- ReLU:√(2/n^[l-1])
- tanh:√(1/n^[l-1])
- 初始化不能完全消除梯度消失/爆炸,但能大幅缓解;
- 方差系数可作为超参数微调,但优先级不高;
- 这是训练深度网络时值得采用的另一个实用技巧。
关键标签 / 关键词
深度学习 #吴恩达 #权重初始化 #梯度消失 #梯度爆炸 #He初始化 #Xavier初始化 #ReLU #tanh #超参数调优 #深度神经网络 #DeepLearning #WeightInitialization #VanishingGradients #ExplodingGradients
拓展补充【拓展】
为什么是 2/n 而不是 1/n?(ReLU 的方差推导)
理解:ReLU 会将约一半的输入置零,因此输出方差约为输入方差的一半。为了保持前向传播中激活值的方差稳定,需要将权重方差放大一倍,即从 1/n 变为 2/n。这是 He 初始化论文的核心推导结论。
与 Xavier 初始化的区别
- Xavier(Glorot)初始化:假设激活函数关于 0 对称(如 tanh、sigmoid),权重方差为 1/n;
- He 初始化:针对 ReLU 及其变体,权重方差为 2/n;
- 若在 ReLU 网络上误用 Xavier 初始化,信号会逐层衰减,训练更慢。
易错点:不要对 ReLU 网络使用 1/n 的 Xavier 初始化,也不要对 tanh 网络盲目使用 2/n。激活函数与初始化公式要匹配。
实践中的其他初始化方法
- LeCun 初始化:适用于 SELU 激活函数;
- 正交初始化:在 RNN 中常用,缓解梯度问题;
- Batch Normalization:从另一角度稳定每层输入分布,可降低对初始化的敏感度。
常见踩坑
- 忘记乘以缩放系数,直接用
np.random.randn→ 深层网络梯度爆炸; - 把 n^(l-1) 误写成 n^(l)(当前层单元数)→ 缩放错误;
- 偏置 b 通常初始化为 0,不需要特殊缩放;
- 初始化只是训练稳定的第一步,学习率过大仍会导致梯度爆炸。
生成时间:2026-10-10 22:06:37 生成平台:VideoNote www.xygy.top