引言:
参数初始化是训练深度神经网络的一个关键步骤,目的是给网络中权重(weights)和偏置(biases)赋予初始值。合适的参数初始化方法有助于提高训练速度、避免梯度消失/爆炸问题,并且加速网络的收敛。
避免梯度消失和梯度爆炸:在深度神经网络中,参数初始化对梯度流动非常重要。如果初始权重值太大或太小,可能导致梯度爆炸或梯度消失,从而增加网络的训练难度。加速收敛:良好的初始化可以帮助网络在训练过程中更快地收敛,减少训练时间。打破对称性:在神经网络中,如果所有的神经元参数都初始化为相同的值,那么在训练过程中,它们会在每一层的计算中产生相同的输出,导致神经元学习到相同的特征。因此,初始化时需要打破对称性,给每个神经元不同的初始值。概念:由Xavier Glorot 提出的初始化方法,适用于 Sigmoid 和 Tanh 等激活函数。权重初始化时从均匀分布或正态分布中抽取,值的范围与输入和输出的维度相关。
公式(均匀分布):
其中 和 分别是当前层和下一层的神经元个数。
特点:适用于 Sigmoid 和 Tanh 激活函数。通过调节初始化的方差,使得信号在网络中保持稳定,避免了梯度爆炸和梯度消失。
使用场景:对于使用 Sigmoid 或 Tanh 激活函数的神经网络层(特别是全连接层),是一个常用的初始化方法。
概念:由 Kaiming He 提出的初始化方法,特别适用于 ReLU 激活函数及其变种(如 Leaky ReLU)。
公式(正态分布):
其中 是当前层的神经元个数。
特点:适用于 ReLU 和其他 ReLU 类似的激活函数。相比于 Xavier 初始化,He 初始化增加了一个因子 2,确保 ReLU 在正数区域时有更大的方差,避免梯度消失。
使用场景:对于 ReLU 激活函数及其变种(如 Leaky ReLU)常用的初始化方法。
概念:LeCun 初始化特别适用于 Sigmoid 和 Tanh 激活函数,尤其是在卷积神经网络(CNN)中应用广泛。
公式(正态分布):
其中 是当前层的神经元个数。
特点:适用于 Sigmoid 和 Tanh 激活函数。适用于卷积神经网络,特别是在处理小型图像数据时。
使用场景:适用于卷积层的初始化,特别是用于 Tanh 和 Sigmoid 激活函数的情况。
概念:Orthogonal 初始化方法初始化权重矩阵为一个正交矩阵。这种方法在每一层之间保持信号的稳定传播,尤其在深度神经网络中效果显著。
特点:适用于深度神经网络的权重初始化。通过使用正交矩阵保持不同层之间的梯度传播稳定,避免梯度消失。
使用场景:适用于深度网络,特别是使用 ReLU 或其他激活函数的网络层。
| 初始化方法 | 适用激活函数 | 特征 | 使用场景 |
|---|---|---|---|
| 零初始化 | 不适用 | 所有权重初始化为0 | 主要用于偏置初始化,避免用作权重初始化 |
| 随机初始化 | 所有激活函数 | 随机选择权重,打破对称性 | 简单网络结构,但可能导致梯度爆炸/消失问题 |
| Xavier 初始化 | Sigmoid, Tanh | 根据输入输出神经元数调整权重方差 | 适用于深度网络,特别是使用 Sigmoid 或 Tanh 激活函数 |
| He 初始化 | ReLU, Leaky ReLU | 更大的方差,适用于 ReLU 等激活函数 | 适用于使用 ReLU 或其变种的深度神经网络 |
| LeCun 初始化 | Sigmoid, Tanh | 小的方差,适用于卷积神经网络 | 适用于卷积神经网络,特别是 Sigmoid 和 Tanh 激活函数 |
| Orthogonal 初始化 | 所有激活函数 | 初始化为正交矩阵,保持信号稳定传播 | 深度神经网络,特别是 ReLU 或其变种的网络 |