权重初始化

在深度学习领域中权重初始化的意义重大,当前主要采用HeKaiming博士的参数初始化方案

打破对称性、赋予模型学习能力

破除神经元对称失效

若所有权重初始化为相同值(全 0、全 1),同一层所有神经元输出完全一致,反向传播时梯度也完全相同,神经元永远无法学到差异化特征,整层等价于单个神经元,网络丧失表达能力,所以要合理随机 / 定制初始化,让神经元初始就有差异化输出,保障每层能提取不同边缘、纹理、语义等特征

激活函数有效可用

全 0 初始化会让线性输出落入激活函数饱和区(Sigmoid 两端、Tanh 两端、ReLU 负区间),神经元直接 “失活”,全程梯度几乎为 0,无法更新。优质初始化能让前置输出落在激活函数敏感线性区间,保证梯度可传导

解决训练关键痛点:梯度消失 / 梯度爆炸

深层网络堆叠多层矩阵乘法 + 激活,参数尺度稍有偏差就会逐层放大 / 缩小

权重过大:前向传播激活值爆炸、反向传播梯度逐层暴涨(梯度爆炸),参数更新震荡发散

权重过小:前向信号逐层衰减、反向梯度无限趋近 0(梯度消失),浅层网络长期不更新

合理初始化会严格约束每层输出方差稳定,保证前向传播信号不衰减、不爆炸,反向传播梯度全程有效流转,让几十 / 上百层深度网络能正常收敛

Xavier Glorot 初始化

适配:Sigmoid / Tanh / Softmax 等饱和对称激活 不适配:原生 ReLU(要用 He 初始化)

Xavier Glorot 初始化让前向传播、反向传播每一层的输入 / 输出方差保持不变,信号不衰减、不爆炸,梯度稳定流动

设一个计算层的输入维度为NI,输出维度为NO,则Xavier Glorot 初始化从如下区间采样 $$ [-\sqrt{\frac{2}{NI+NO}}, \sqrt{\frac{2}{NI+NO}}] $$ 如果是高斯分布,则均值为0,方差如下 $$ \sigma=\sqrt{\frac{2}{NI+NO}} $$ Xavier Glorot 初始化的设计逻辑在于,让每一层在激活函数前后数据的方差保持基本不变,在梯度计算时同理

Kaiming He 初始化

在后续的算法发展中,relu激活函数及其变形成为了深度学习主流的激活函数选择,而Xavier Glorot 初始化方案无法适配relu激活函数,因为relu激活函数将负数值置0,每一层的大部分参数消失,产生的后果在于网络梯度也随之消失,不再收敛

He 初始化专门用于补偿 ReLU 带来的方差衰减

设一个计算层的输入维度为NI,输出维度为NO,则Kaiming He 初始化从如下区间采样 $$ [-\sqrt{\frac{2}{NI}}, \sqrt{\frac{2}{NI}}] $$ 如果是高斯分布,则均值为0,方差如下 $$ \sigma=\sqrt{\frac{2}{NI}} $$

Lumos的方案

在后续的发展中,针对不同的激活函数,应该采用不同的缩放尺度。您可以在Lumos参数初始化代码中查看