Normalization
Batch Normaliation
批标准化处理,批:指一批数据,通常为mini-batch;标准化:0均值,1方差。
- 可以用更大学习率,加速模型收敛
- 可以不用精心设计权值初始化
- 可以不用dropout或者较小的dropout
- 可以不用L2或者较小的Weight decay
- 可以不用LRN(local response normalization)
计算式
其中,normalize步骤中 ϵ \epsilon ϵ为修正项,为了防止分母为零的情况出现。处理后 x ^ \hat{x} x^即为0均值1方差,但BN算法仍未结束,最后还需要进行一步Affine Transform,即 γ x i ^ + β \gamma\hat{x_i}+\beta γxi^+β其中 γ \gamma γ与 β \beta β称为scale与shift,这两个参数是可学习的,可通过反向传播改变。
_BatchNorm
pytorch中的Batch Normalization实现
- num_features:一个样本特征数量(最重要)
- eps:分母修正项
- momentum:指数加权平均估计当前mean/var
- affine:是否需要affine transform,默认为Tru