什么是MSRA初始化
MSRA初始化简介
MSRA初始化(又称He初始化)是由微软亚洲研究院(MSRA)的Kaiming He等人提出的一种神经网络参数初始化方法,特别适用于使用ReLU激活函数的深度神经网络。
数学原理
MSRA初始化的核心思想是保持各层激活值的方差一致。对于使用ReLU激活函数的网络,其权重应按照以下分布初始化:
$$
W \sim \mathcal{N}(0, \sqrt{\frac{2}{n_{in}}})
$$
其中:
- $n_{in}$ 是该层的输入维度
- $\mathcal{N}$ 表示正态分布
为什么需要MSRA初始化
- 解决梯度消失/爆炸问题:传统的Xavier初始化假设激活函数是线性的,而ReLU是非线性的
- 保持信号强度:确保前向传播和反向传播时信号不会过度衰减或放大
- 加速收敛:使网络在训练初期就能获得较好的梯度流
实现代码(PyTorch示例)
1 | import torch.nn as nn |
与其他初始化方法的比较
初始化方法 | 适用激活函数 | 公式 |
---|---|---|
Xavier/Glorot | tanh, sigmoid | $\sqrt{\frac{1}{n_{in}}}$ |
MSRA/He | ReLU家族 | $\sqrt{\frac{2}{n_{in}}}$ |
LeCun | SELU | $\sqrt{\frac{1}{n_{in}}}$ |
实际应用建议
- 在使用ReLU及其变体(LeakyReLU, PReLU等)时优先选择MSRA初始化
- 对于卷积网络,注意区分’fan_in’和’fan_out’模式
- 配合Batch Normalization使用效果更佳
参考文献
- He, K., Zhang, X., Ren, S., & Sun, J. (2015). Delving deep into rectifiers: Surpassing human-level performance on imagenet classification. In Proceedings of the IEEE international conference on computer vision (pp. 1026-1034).
评论