Why Normalization
Internal Covariate Shift (ICS):数据尺度 分布异常,导致训练困难
Batch Normalization
Batch Normalization :批标准化
批:一批数据,通常为 mini batch
《Batch Normalization: Accelerating Deep Network Training by Reducing Internal Covariate Shift 》
优点:
可以 用 更大学习率,加速模型收敛
可以 不用 精心设计权值初始化
可以 不用 dropout 或较小的 dropout
可以 不用 L2 或者较小的 weight decay
可以 不用 LRN(local response normalization)
_
BatchNorm
nn.BatchNorm1d
nn.BatchNorm2d
nn.BatchNorm3d
参数:
num_features :一个样本特征数量(最重要
e p s :分母修正项
momentum :指数加权平均估计当前 mean/ var
affine :是否需要 affine transform
track_running_stats :是训练状态,还是测试状态
Layer Normalization
起因:
BN 不适用于变长的网络,如 RNN
思路:
逐层 计算均值和方差
注意事项:
不再有 running_mean 和 running_var
gamma 和 beta 为逐元素的
主要参数:
normalized_shape :该层特征形状
eps :分母修正项
elementwise_affine :是否需要 affine
transform
Instance Normalization
起因:
BN 在图像生成( Image Generation )中不适用
思路:
逐 Instance channel 计算均值和方差
主要参数:
num_features :一个样本特征数量(最重要
eps :分母修正项
momentum :指数加权平均估计当前 mean/ var
affine :是否需要 affine transform
track_running_stats :是训练状态,还是测试状态
Group Normalization
起因:小batch 样本中, BN 估计的值不准
思路:数据不够,通道来凑
注意事项:
不再有 running_mean 和 running_var
gamma 和 beta 为逐通道( channel )的
应用场景:大模型(小batch size )任务
小结
BN 、 LN 、 IN 和 GN 都是为了克服 Internal Covariate Shift (ICS)