Intialization and parameterization
神经网络权重初始化简介
在训练神经网络时,权重的初始化非常关键。如果初始化不合理,可能出现:
- 梯度消失(vanishing gradient):深层网络梯度太小,无法更新权重, 一般因数据方差太小导致
- 梯度爆炸(exploding gradient):梯度太大,训练不稳定,一般因数据方差太大导致
因此需要一些特殊的初始化来解决这些问题.
Xavier 初始化(Xavier Initialization)
Xavier 的目标是:
保持每一层输出的方差 ≈ 输入的方差
假设:
- 全连接层权重矩阵 W 的维度为
- 输入 x,输出 y = Wx
Xavier 希望:
Xavier 初始化公式
3.1 均匀分布
正态分布
其中 是输入神经元数量, 是输出神经元数量
常用 或 来控制权重方差
PyTorch 示例
1 | import torch |
参数化(parameterization)
在深度学习中,参数化是指对模型参数进行某种变换或约束,以改善训练过程和模型性能。常见的参数化方法包括:
普通参数化: 直接使用权重矩阵 W 作为参数。y=Wx
这样做的坏处是当我们将layer扩张到4倍之后,梯度会变得及其不稳定,训练效果会很差,需要重新调超参数(比如调学习率)。
muP参数化:
使用了muP,当我们扩大layer的时候,梯度仍然是稳定的,不需要重调学习率之类的超参数。这样就可以让小模型和大模型在训练初期表现一致,从而让我们可以更容易地将小模型的训练经验迁移到大模型上。
He initialization
He 初始化:适合 ReLU/Leaky ReLU
Xavier 初始化:适合 tanh/sigmoid
He 初始化(Kaiming Initialization)
为 ReLU 及其变体(如 Leaky ReLU)提出的初始化方法,由 He 等人于 2015 年提出。
公式:
或者均匀分布版本:
其中,:当前层的输入神经元数
方差的系数 2 是因为 ReLU 只激活一半的输入(负值变为 0),为了补偿未激活部分的方差损失。
优点:
保持 前向传播方差 和 反向传播方差 稳定
加速收敛
All articles on this blog are licensed under CC BY-NC-SA 4.0 unless otherwise stated.