Zubnet AI学习Wiki › 权重初始化
训练

权重初始化

别名:Xavier初始化、Kaiming初始化、He初始化
在训练开始前如何设置神经网络权重。糟糕的初始化可以让训练还没开始就失败(激活值消失或爆炸)。好的初始化确保激活值和梯度在各层之间保持合理的幅度。Xavier初始化(用于tanh/sigmoid)和Kaiming/He初始化(用于ReLU)是标准方法,每种都针对激活函数进行了校准。

为什么重要

初始化看起来是个小细节,但对训练深层网络至关重要。初始权重过大(随机)的网络会产出爆炸的激活值。权重过小的网络会产出消失的激活值。适当的初始化将网络置于“金凤花区间”,信号在其中传播时既不爆炸也不消失——这是梯度下降工作的前提条件。

深度解析

核心原则:初始化权重使激活值的方差在各层之间近似恒定。如果每一层放大信号(方差增长),激活值爆炸。如果每一层减弱信号(方差缩小),激活值消失。Xavier初始化将权重设为方差2/(fan_in + fan_out)。Kaiming初始化将方差设为2/fan_in,考虑到ReLU将一半的值置零。

在Transformer中

现代Transformer通常使用缩放初始化:注意力和FFN层中的输出投影权重的标准差按1/√(2×num_layers)缩放。这防止了残差流因多层贡献的累积而增长过大。GPT-2和许多后续模型使用这种“缩放初始化”方法。一些架构(如muP/最大更新参数化)通过数学推导的缩放规则更进一步。

预训练权重

对于大多数实际用途,从头初始化很少见——你从预训练权重开始并微调。但初始化对新组件仍然重要:LoRA适配器、新的分类头或扩展的词汇嵌入。LoRA的B矩阵零初始化(使适配器一开始是恒等映射)和新token嵌入的适当初始化(通常复制现有嵌入的均值)是常见的模式,防止新组件在微调开始时破坏预训练模型。

← 所有术语