文章目录
- 一、权重矩阵初始化:神经网络训练的关键起点
- (一)初始化的重要性及随机特性
- (二)不同初始化方法的探索历程
- 零初始化:简单却致命的选择(仅适用于单层网络)
- 标准初始化:适用于简单网络的初步尝试
- Xavier 初始化:解决方差问题的有效探索
- MSRA 初始化:ReLU 激活函数的理想搭档
- 小结:初始化方法的综合应用指南
- 二、参考
一、权重矩阵初始化:神经网络训练的关键起点
(一)初始化的重要性及随机特性
权重矩阵初始化在神经网络训练中犹如基石般重要,是开启高效训练之旅的第一步。正确的初始化方法能够如同找到一条通往成功的捷径,使训练事半功倍。然而,这一过程充满了不确定性,就像在未知的道路中选择下山路径,每次重新初始化就如同重新选择道路,即使使用相同的初始化算法,也会给训练结果带来显著差异。例如,在实际训练中,第一次初始化可能需要 3000 次迭代才能达到 96% 的精度,而第二次初始化仅需 2000 次迭代就能达到相同精度,这种情况屡见不鲜。这充分体现了初始化的随机性对训练过程的深远影响。
(二)不同初始化方法的探索历程
随着神经网络研究的不断深入,人们针对不同的网络结构和激活函数,探索出了多种权重矩阵初始化方法,以应对训练过程中出现的各种问题。
零初始化:简单却致命的选择(仅适用于单层网络)
零初始化是一种最为直接的初始化方式,即将所有层的权重矩阵 (W) 值初始化为 0。然而,这种看似简单的方法在多层网络中却存在严重缺陷。当多层网络采用零初始化时,由于初始值相同,梯度在反向传播过程中会均匀回传,导致所有权重 (W) 的值同步更新,毫无差别。这使得网络无法学习到合理的权重值,无论经过多少轮训练,最终结果都难以正确。从实际的权重矩阵值打印输出中可以清晰地看到,(W1)、(B1)、(W2) 内部单元的值完全一致,这就是零初始化带来的灾难性后果。因此,在多层网络中,零初始化是绝对不可取的。
W1= [[-0.82452497 -0.82452497 -0.82452497]]
B1= [[-0.01143752 -0.01143752 -0.01143752]]
W2= [[-0.68583865] [-0.68583865] [-0.68583865]]
B2= [[0.68359678]]
标准初始化:适用于简单网络的初步尝试
标准正态初始化方法,也称为 Normal 初始化,旨在保证激活函数的输入均值为 0,方差为 1。其权重矩阵 (W) 的初始化公式为
W ∼ N [ 0 , 1 ] W \sim N \begin{bmatrix} 0, 1 \end{bmatrix} W∼N[0,1]
在实际应用中,通常会根据全连接层的输入和输出数量进一步调整初始化细节
W ∼ N ( 0 , 1 n i n ) W \sim N \begin{pmatrix} 0, \frac{1}{\sqrt{n_{in}}} \end{pmatrix} W∼N(0,nin1)
W ∼ U ( − 1 n i n , 1 n i n ) W \sim U \begin{pmatrix} -\frac{1}{\sqrt{n_{in}}}, \frac{1}{\sqrt{n_{in}}} \end{pmatrix} W∼U(−nin1,nin1)
在目标问题相对简单、网络深度不大的情况下,标准初始化方法能够发挥一定作用。然而,当面对深度网络时,它也暴露出了明显的不足。
以一个 6 层深度网络为例,使用全连接层和 Sigmoid 激活函数时,各层激活函数的直方图显示,
激活值严重向两侧 [0,1] 靠近。从 Sigmoid 函数曲线可知,这些值的导数趋近于 0,这意味着反向传播时梯度会逐步消失。而中间地段的值较少,不利于参数学习,从而限制了网络的性能提升。
Xavier 初始化:解决方差问题的有效探索
为了克服标准初始化在深度网络中的困境,Xavier Glorot 等人提出了 Xavier 初始化方法。该方法基于两个重要条件:正向传播时,激活值的方差保持不变;反向传播时,关于状态值的梯度的方差保持不变。其初始化公式为
W ∼ N ( 0 , 2 n i n + n o u t ) W \sim N \begin{pmatrix} 0, \sqrt{\frac{2}{n_{in} + n_{out}}} \end{pmatrix} W∼N(0,nin+nout2)
W ∼ U ( − 6 n i n + n o u t , 6 n i n + n o u t ) W \sim U \begin{pmatrix} -\sqrt{\frac{6}{n_{in} + n_{out}}}, \sqrt{\frac{6}{n_{in} + n_{out}}} \end{pmatrix} W∼U(−nin+nout6,nin+nout6)
其中 W W W 为权重矩阵, N N N 表示正态分布, U U U 表示均匀分布。
Xavier 初始化方法主要针对全连接神经网络,适用于 tanh 和 softsign 等激活函数,假设激活函数关于 0 对称。在 6 层深度网络中的表现表明,它能够使后面几层的激活函数输出值分布基本符合正态分布,有利于神经网络的学习。
随机初始化和Xavier初始化的各层激活值与反向传播梯度比较
然而,随着深度学习的发展,ReLU 激活函数的广泛应用又带来了新的挑战。
在使用 ReLU 激活函数时,Xavier 初始化虽然在一定程度上改善了激活值分布,但仍存在问题,随着层的加深,激活值会逐步向 0 偏向,同样导致梯度消失问题。
MSRA 初始化:ReLU 激活函数的理想搭档
为了解决 ReLU 激活函数带来的方差变化问题,He Kaiming 等人提出了 MSRA 初始化方法(又称 He 初始化法)。该方法的条件是正向传播时,状态值的方差保持不变;反向传播时,关于激活值的梯度的方差保持不变。
当仅考虑输入个数时,对于 ReLU 激活函数,MSRA 初始化是一个均值为 0,方差为 2 / n 2/n 2/n 的高斯分布,公式为
W ∼ N ( 0 , 2 n ) W \sim N \begin{pmatrix} 0, \sqrt{\frac{2}{n}} \end{pmatrix} W∼N(0,n2)
W ∼ U ( − 6 n i n , 6 n o u t ) W \sim U \begin{pmatrix} -\sqrt{\frac{6}{n_{in}}}, \sqrt{\frac{6}{n_{out}}} \end{pmatrix} W∼U(−nin6,nout6)
在使用 ReLU 激活函数时,MSRA 初始化方法表现出色,各层激活值从 0 到 1 的分布非常均匀,不会因层的加深而出现梯度消失问题。
对于 Leaky ReLU 激活函数,也有相应的初始化公式
W ∼ N [ 0 , 2 ( 1 + α 2 ) n ^ i ] n ^ i = h i ⋅ w i ⋅ d i h i : 卷积核高度, w i : 卷积核宽度, d i : 卷积核个数 W \sim N \begin{bmatrix} 0, \sqrt{\frac{2}{(1+\alpha^2) \hat n_i}} \end{bmatrix} \\ \hat n_i = h_i \cdot w_i \cdot d_i \\ h_i: 卷积核高度,w_i: 卷积核宽度,d_i: 卷积核个数 W∼N[0,(1+α2)n^i2]n^i=hi⋅wi⋅dihi:卷积核高度,wi:卷积核宽度,di:卷积核个数
因此,在使用 ReLU 或 Leaky ReLU 激活函数时,推荐使用 MSRA 初始化方法。
小结:初始化方法的综合应用指南
综合上述不同初始化方法的特点和适用场景,可以总结出以下规律。
ID | 网络深度 | 初始化方法 | 激活函数 | 说明 |
---|---|---|---|---|
1 | 单层 | 零初始化 | 无 | 可以 |
2 | 双层 | 零初始化 | Sigmoid | 误,不能进行正确的反向传播 |
3 | 双层 | 随机初始化 | Sigmoid | 可以 |
4 | 多层 | 随机初始化 | Sigmoid | 激活值分布成凹形,不利于反向传播 |
5 | 多层 | Xavier初始化 | Tanh | 正确 |
6 | 多层 | Xavier初始化 | ReLU | 激活值分布偏向0,不利于反向传播 |
7 | 多层 | MSRA初始化 | ReLU | 正确 |
对于单层网络,零初始化是可行的,但在多层网络中,除了特殊情况外,应避免使用。随机初始化在双层 Sigmoid 网络中可以使用,但在多层 Sigmoid 网络中,激活值分布不利于反向传播。Xavier 初始化适用于多层 tanh 网络,但在多层 ReLU 网络中存在激活值偏向 0 的问题。而 MSRA 初始化则是多层 ReLU 网络的理想选择。随着网络深度和激活函数的不断变化,合适的初始化方法选择至关重要,它直接影响着神经网络的训练效果和性能表现。
二、参考
- Xavier Glorot 和 Yoshua Bengio 于 AISTATS 2010 发表的论文“Understanding the difficulty of training deep feedforward neural networks”,链接:http://proceedings.mlr.press/v9/glorot10a/glorot10a.pdf。
- https://blog.csdn.net/victoriaw/article/details/73000632。
- 何凯明(Microsoft Research Asia,2015)的论文,链接:https://arxiv.org/pdf/1502.01852.pdf。
通过对神经网络权重矩阵初始化方法的深入研究和理解,能够在构建和训练神经网络时,根据具体的网络结构和激活函数,选择最为合适的初始化方法,从而为神经网络的成功训练和高效性能奠定坚实基础。这不仅有助于提高模型的准确性和稳定性,还能加速训练过程。