该小伙子文章写得不错,感兴趣的大家可以关注下:
公众号:知识交点
内容包含:BatchNormalization、LayerNormalization、InstanceNorm、GroupNorm、SwitchableNorm
1.简述
1.1 论文链接
(1)、Batch Normalization
https://arxiv.org/pdf/1502.03167.pdf
(2)、Layer Normalizaiton
https://arxiv.org/pdf/1607.06450v1.pdf
(3)、Instance Normalization
https://arxiv.org/pdf/1607.08022.pdf
https://github.com/DmitryUlyanov/texture_nets
(4)、Group Normalization
https://arxiv.org/pdf/1803.08494.pdf
(5)、Switchable Normalization
https://arxiv.org/pdf/1806.10779.pdf
https://github.com/switchablenorms/Switchable-Normalization
1.2 整体介绍
归一化层,目前主要有这几个方法,Batch Normalization(2015年)、Layer Normalization(2016年)、Instance Normalization(2017年)、Group Normalization(2018年)、Switchable Normalization(2018年);
将输入的图像shape记为[N, C, H, W],这几个方法主要的区别就是在:
batchNorm是在batch上,对NHW做归一化,对小batchsize效果不好;
layerNorm在通道方向上,对CHW归一化,主要对RNN作用明显;
instanceNorm在图像像素上,对HW做归一化,用在风格化迁移;
GroupNorm将channel分组,然后再做归一化;
SwitchableNorm是将BN、LN、IN结合,赋予权重,让网络自己去学习归一化层应该使用什么方法。
2.详细解说
2.1 Batch Normalization
算法过程:(1)、沿着通道计算每个batch的均值u(2)、沿着通道计算每个batch的方差σ^2(3)、对x做归一化,x’=(x-u)/开根号(σ^2+ε)(4)、加入缩放和平移变量γ和β ,归一化后的值,y=γx’+β加入缩放平移变量的原因是: 不一定每次都是标准正态分布,也许需要偏移或者拉伸。保证每一次数据经过归一化后还保留原有学习来的特征,同时又能完成归一化操作,加速训练。这两个参数是用来学习的参数。
整体公式: