卷积神经网络中的权重初始化方法详解
字数 1555 2025-11-18 12:19:13
卷积神经网络中的权重初始化方法详解
1. 问题背景
在训练深度神经网络时,权重初始值的选择对模型收敛速度和最终性能至关重要。不恰当的初始化可能导致梯度消失或梯度爆炸问题,尤其是深层网络中,梯度在反向传播时可能指数级放大或衰减。卷积神经网络(CNN)作为深度网络的一种,其权重初始化方法同样需要精心设计。
2. 权重初始化的核心目标
- 保持信号稳定:前向传播中,每层输出的方差应尽量保持一致,避免信号过大或过小。
- 梯度稳定:反向传播时,梯度的方差也应保持稳定,确保参数有效更新。
- 打破对称性:若所有权重初始化为相同值,同一层内神经元的梯度会完全一致,导致神经元学习不到差异化特征。
3. 常见初始化方法及其原理
3.1 随机初始化(Naive Initialization)
- 方法:从均匀分布或正态分布中随机采样初始权重(如均匀分布 \(U(-0.05, 0.05)\))。
- 问题:若方差设置不当,深层网络可能因连乘效应导致激活值方差爆炸或消失。
3.2 Xavier/Glorot 初始化
- 适用场景:激活函数为 Sigmoid 或 Tanh 等对称线性函数。
- 原理:根据每层输入和输出的维度调整权重方差,使前向传播中输出的方差保持一致。
- 公式:权重从均匀分布 \(U(-\sqrt{\frac{6}{n_{in} + n_{out}}}, \sqrt{\frac{6}{n_{in} + n_{out}}})\) 或正态分布 \(N(0, \sqrt{\frac{2}{n_{in} + n_{out}}})\) 中采样,其中 \(n_{in}\) 和 \(n_{out}\) 分别为输入和输出的神经元数量。
- 局限性:对 ReLU 激活函数效果不佳,因 ReLU 将负值置零,导致实际激活方差减半。
3.3 He 初始化
- 适用场景:激活函数为 ReLU 或其变体(如 Leaky ReLU)。
- 原理:修正 Xavier 初始化中对 ReLU 的假设,将方差调整为 \(\text{Var}(W) = \frac{2}{n_{in}}\)。
- 公式:权重从正态分布 \(N(0, \sqrt{\frac{2}{n_{in}}})\) 或均匀分布 \(U(-\sqrt{\frac{6}{n_{in}}}, \sqrt{\frac{6}{n_{in}}})\) 中采样。
- 优势:在深层 CNN 中能更好地保持激活值的方差稳定。
3.4 卷积层的特殊处理
- 卷积层的 \(n_{in}\) 需考虑感受野大小:若输入通道数为 \(C_{in}\)、卷积核大小为 \(k \times k\),则 \(n_{in} = C_{in} \times k \times k\)。
- 示例:对于 3×3 卷积、输入通道 64,He 初始化采用 \(N(0, \sqrt{\frac{2}{64 \times 3 \times 3}})\)。
4. 初始化方法的实验验证
- 激活值分布可视化:通过统计每层激活值的均值和方差,验证是否接近预期(如均值 0、方差 1)。
- 梯度检查:反向传播时观察梯度幅值,若梯度过小可能是梯度消失,过大可能是梯度爆炸。
5. 实际应用建议
- ReLU 系列激活函数:优先使用 He 初始化。
- Sigmoid/Tanh:使用 Xavier 初始化。
- 残差网络:因残差连接可缓解梯度问题,初始化要求相对宽松,但仍推荐 He 初始化。
- 预训练模型微调:若使用预训练权重,无需重新初始化。
通过合理的权重初始化,CNN 的训练过程会更稳定,收敛速度更快,同时降低对梯度裁剪或归一化技术的依赖。