1. 引言

在本文中,我们将探讨人工神经网络中权重初始化的常见方法及其重要性。

权重初始化对网络训练过程的优化速度和质量有显著影响。一个良好的初始化策略可以显著提升模型的收敛速度,甚至影响最终模型的性能。

2. 基本概念

我们以典型的全连接前馈神经网络为例,如下图所示:

ANN feed forward

网络中的每个神经元对其输入的加权和进行非线性变换(激活函数)以生成输出:

$$ y=\mathcal{F}\left(w_{0}+\sum_{i}w_{i}x_{i}\right) $$

其中 $ x_i $ 是上一层神经元的输出,$ w_i $ 是连接权重,$ w_0 $ 是偏置项,$ \mathcal{F} $ 是激活函数。

3. 打破对称性

初始化权重时,我们通常面临两个极端选择:为所有权重设置相同值,或在一定范围内随机生成。

最佳实践是使用随机初始化,并将偏置初始化为 0。其核心目的是“打破对称性”,即确保每个神经元执行不同的计算。否则,训练过程可能受到严重影响,甚至无法进行。

3.1. 同一网络内部的对称性问题

如果所有神经元的初始参数相同,且使用确定性学习算法(如梯度下降),则这些神经元在整个训练过程中会以相同方式更新权重。

这会导致所有神经元输出相同,从而失去学习能力。这种“对称性”会限制网络的表达能力。

3.2. 不同网络之间的对称性问题

在尝试不同网络结构时,如果所有网络的初始权重都相同,它们将从相同的误差空间起点开始优化。

这会导致它们在训练过程中更新方向相似,难以探索到最优解。使用不同的初始权重有助于从不同起点探索误差空间,提高找到最优解的概率

4. 随机初始化策略

既然我们已经知道需要随机初始化权重,那问题来了:应该在什么范围内进行?

这取决于所使用的激活函数。

tanh 函数为例:

tanh

当输入值过大或过小时,函数梯度趋近于零(梯度消失问题)。因此,权重初始化应避免使输入值落入这些区域。

常见推荐范围如下:

  • [-1, 1]
  • [-0.1, 0.1]
  • 若使用 tanhsigmoid[-0.5, 0.5] 是一个合理选择

5. 高级随机初始化技术

除了均匀分布,我们也可以使用高斯分布进行初始化。以下两种方法在现代深度学习中被广泛使用:

5.1. Xavier-Bengio 初始化(Glorot 初始化)

适用于 sigmoidtanh 激活函数。

该方法的核心思想是:保持每一层输入和输出的方差一致,以避免梯度消失或爆炸问题

对于均匀分布:

$$ \mathbf{W} \in \mathcal{U}\left[-\sqrt{\frac{6}{n_{i}+n_{o}}},\sqrt{\frac{6}{n_{i}+n_{o}}}\right] $$

对于高斯分布:

$$ \mathbf{W} \sim \mathcal{N}\left(0,\sqrt{\frac{6}{n_{i}+n_{o}}}\right) $$

其中:

  • $ n_i $:当前层输入神经元数(fan_in)
  • $ n_o $:当前层输出神经元数(fan_out)

对于 tanh,也可以使用四次根:

$$ \mathbf{W} \in \mathcal{U}\left[-\sqrt[4]{\frac{6}{n_{i}+n_{o}}},\sqrt[4]{\frac{6}{n_{i}+n_{o}}}\right] $$

一些更常见的变体包括:

  • $ \mathcal{N}(0, \sqrt{1/n_i}) $
  • $ \mathcal{N}(0, \sqrt{2/(n_i + n_o)}) $

5.2. He 初始化(Kaiming 初始化)

适用于 ReLU 及其变体激活函数。

He 初始化由 Kaiming He 等人在 2015 年提出,专门针对 ReLU 的非线性特性进行优化。

对于均匀分布:

$$ \mathbf{W} \in \mathcal{U}\left[-\sqrt{2}\sqrt{\frac{6}{n_{i}+n_{o}}},\sqrt{\frac{6}{n_{i}+n_{o}}}\right] $$

对于高斯分布:

$$ \mathbf{W} \sim \mathcal{N}\left(0,\sqrt{2}\sqrt{\frac{6}{n_{i}+n_{o}}}\right) $$

更常见的形式是:

$$ \mathbf{W} \sim \mathcal{N}\left(0,\sqrt{\frac{2}{n_{i}}}\right) $$

其理论依据是避免输入信号的幅度在传播过程中呈指数级变化,从而缓解梯度消失问题。

更通用的形式:

$$ \mathbf{W} \sim \mathcal{N}\left(0,\sqrt{\frac{2}{(1+a^{2})n_{i}}}\right) $$

其中 $ a $ 是当前层后激活函数的负斜率,默认为 0(适用于 ReLU)。

6. 其他初始化方法

许多深度学习框架如 Keras 提供了多种初始化方法:

  • Zeros:全部初始化为 0
  • Ones:全部初始化为 1
  • Constant:指定常数初始化
  • RandomNormal:正态分布初始化
  • RandomUniform:均匀分布初始化
  • TruncatedNormal:截断正态分布初始化
  • VarianceScaling:根据权重形状自适应缩放
  • Orthogonal:正交矩阵初始化
  • Identity:单位矩阵初始化
  • lecun_uniformglorot_normalglorot_uniformhe_normalhe_uniform

7. 总结

虽然权重初始化看似是一个次要问题,但它对训练质量和收敛速度有深远影响。

✅ 推荐使用 Xavier 初始化(sigmoid/tanh)或 He 初始化(ReLU)等基于理论的方法,而非简单随机初始化。

这些方法背后都有坚实的数学基础,旨在解决诸如梯度消失、梯度爆炸等经典问题。



原始标题:Random Initialization of Weights in a Neural Network