神经网络之参数初始化

引言:参数初始化 是训练深度神经网络的一个关键步骤,目的是给网络中权重(weights)和偏置(biases)赋予初始值。合适的参数初始化方法有助于提高训练速度、避免梯度消失/爆炸问题,并且加速网络的收敛。

一、参数初始化目的

  • 避免梯度消失和梯度爆炸:在深度神经网络中,参数初始化对梯度流动非常重要。如果初始权重值太大或太小,可能导致梯度爆炸或梯度消失,从而增加网络的训练难度。
  • 加速收敛:良好的初始化可以帮助网络在训练过程中更快地收敛,减少训练时间。
  • 打破对称性:在神经网络中,如果所有的神经元参数都初始化为相同的值,那么在训练过程中,它们会在每一层的计算中产生相同的输出,导致神经元学习到相同的特征。因此,初始化时需要打破对称性,给每个神经元不同的初始值。

二、 常见参数初始化方法

1. 零初始化 (Zero Initialization)
  • 特点:所有的权重都被初始化为 0。
  • 缺点:会导致网络中的每个神经元学到相同的特征,因为它们的输出相同。这违反了网络中神经元之间的多样性,因此不可用于权重初始化。
  • 使用场景:一般情况下不推荐使用,除非用于偏置的初始化。
2. 随机初始化 (Random Initialization)
  • 特点:权重是从一个均匀分布或正态分布中随机抽取的,避免了对称性的问题。
  • 缺点:若初始化的随机值过大或过小时,可能会导致梯度爆炸或梯度消失的问题。
  • 使用场景:适合较简单的网络结构,通常会在后续优化方法中进行改进。
3. Xavier 初始化(Glorot 初始化)
  • 概念:由Xavier Glorot 提出的初始化方法,适用于 Sigmoid 和 Tanh 等激活函数。权重初始化时从均匀分布或正态分布中抽取,值的范围与输入和输出的维度相关。

  • 公式(均匀分布):
    W ∼ U ( − 6 n in + n out , 6 n in + n out ) W \sim U\left( -\sqrt{\frac{6}{n_{\text{in}} + n_{\text{out}}}}, \sqrt{\frac{6}{n_{\text{in}} + n_{\text{out}}}} \right) WU(nin+nout6 ,nin+nout6 )
    其中 n in n_{\text{in}} nin n out n_{\text{out}} nout分别是当前层和下一层的神经元个数。

  • 特点:适用于 SigmoidTanh 激活函数。通过调节初始化的方差,使得信号在网络中保持稳定,避免了梯度爆炸和梯度消失。

  • 使用场景:对于使用 SigmoidTanh 激活函数的神经网络层(特别是全连接层),是一个常用的初始化方法。

4. He 初始化(Kaiming 初始化)
  • 概念:由 Kaiming He 提出的初始化方法,特别适用于 ReLU 激活函数及其变种(如 Leaky ReLU)。

  • 公式(正态分布):
    W ∼ N ( 0 , 2 n in ) W \sim \mathcal{N}\left( 0, \frac{2}{n_{\text{in}}} \right) WN(0,nin2)
    其中 n in n_{\text{in}} nin 是当前层的神经元个数。

  • 特点:适用于 ReLU 和其他 ReLU 类似的激活函数。相比于 Xavier 初始化,He 初始化增加了一个因子 2,确保 ReLU 在正数区域时有更大的方差,避免梯度消失。

  • 使用场景:对于 ReLU 激活函数及其变种(如 Leaky ReLU)常用的初始化方法。

5. LeCun 初始化
  • 概念:LeCun 初始化特别适用于 SigmoidTanh 激活函数,尤其是在卷积神经网络(CNN)中应用广泛。

  • 公式(正态分布):
    W ∼ N ( 0 , 1 n in ) W \sim \mathcal{N}(0, \frac{1}{n_{\text{in}}}) WN(0,nin1)
    其中 n in n_{\text{in}} nin 是当前层的神经元个数。

  • 特点:适用于 SigmoidTanh 激活函数。适用于卷积神经网络,特别是在处理小型图像数据时。

  • 使用场景:适用于卷积层的初始化,特别是用于 TanhSigmoid 激活函数的情况。

6. Orthogonal 初始化
  • 概念:Orthogonal 初始化方法初始化权重矩阵为一个正交矩阵。这种方法在每一层之间保持信号的稳定传播,尤其在深度神经网络中效果显著。

  • 特点:适用于深度神经网络的权重初始化。通过使用正交矩阵保持不同层之间的梯度传播稳定,避免梯度消失。

  • 使用场景:适用于深度网络,特别是使用 ReLU 或其他激活函数的网络层。

三、总结

初始化方法适用激活函数特征使用场景
零初始化不适用所有权重初始化为0主要用于偏置初始化,避免用作权重初始化
随机初始化所有激活函数随机选择权重,打破对称性简单网络结构,但可能导致梯度爆炸/消失问题
Xavier 初始化Sigmoid, Tanh根据输入输出神经元数调整权重方差适用于深度网络,特别是使用 Sigmoid 或 Tanh 激活函数
He 初始化ReLU, Leaky ReLU更大的方差,适用于 ReLU 等激活函数适用于使用 ReLU 或其变种的深度神经网络
LeCun 初始化Sigmoid, Tanh小的方差,适用于卷积神经网络适用于卷积神经网络,特别是 Sigmoid 和 Tanh 激活函数
Orthogonal 初始化所有激活函数初始化为正交矩阵,保持信号稳定传播深度神经网络,特别是 ReLU 或其变种的网络
  • Xavier 和 LeCun 初始化:适用于使用 SigmoidTanh 激活函数的网络,帮助防止梯度消失问题。
  • He 初始化:适用于 ReLU 激活函数,特别是在深度神经网络中,能有效防止梯度消失。
  • LeCun 初始化:适用于卷积神经网络,尤其是在图像处理中。
  • Orthogonal 初始化:适用于深层网络,保持信号的稳定传播,适用于 ReLU 激活函数。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值