Batch Normalization
本文最后更新于 2025年3月19日 上午
批量归一化层
公式
\(\mu_B=\frac{1}{ |B| } \mathop \Sigma \limits_{ i\in B }x_i\)
\(\sigma_B^2=\frac{1}{ |B| } \mathop \Sigma\limits_{i \in B}(x_i- \mu_B )^2+\epsilon\)
再做额外调整:
\(x_{ i+1 }=\gamma\frac{x_i- \mu_B } { \sigma_B }+\beta\)
- 可学习的参数为\(\gamma,\beta\)
- 作用在:
- 全连接层和卷积层输出上,激活函数前
- 全连接层和卷积层输入上
- 对全连接层,作用在特征维
- 对卷积层,作用在通道维
Code
1 |
|
作用
- 起初用来减少内部变量转移
- 后续指出可能是通过在每个小批量里加入噪音控制模型复杂度
- 不用和丢弃法混合使用
总结
- 可以加速收敛速度,一般不改变模型精度
- 使用真实数据时,第一步是标准化输入特征(使其均值为0,方差为1),这种标准化可以很好地与优化器配合使用
BatchNorm和LayerNorm的区别
以BatchNorm1d
为例:
\(y = \frac{ x - \mathrm{ E }[x] }{ \sqrt{ \mathrm{ Var }[x] + \epsilon } } * \gamma + \beta\)
1 |
|
这可以等同于以下操作:
1 |
|
LayerNorm
Batch Normalization
https://meteor041.git.io/2024/11/14/Batch Normalization/