BN(batch normalization)
BN
假设一个batch中有两张图片,则两张图片输入网络后得到两个feature,分别为feature1和feature2:
如上图,每个feature都有两个channel,分别为channel1和channel2。
BN的流程:计算所有feature的channel1上的数的均值\(\mu _1\)和标准差\(\sigma_1\),然后所有feature的channel1上的数都减去均值\(\mu_1\)并除以标准差\(\sigma_1\)。对所有feature的channel2上的数做同样的操作,即计算所有feature的channel2上的数的均值\(\mu _2\)和标准差\(\sigma_2\),然后所有feature的channel2上的数都减去均值\(\mu_2\)并除以标准差\(\sigma_2\)。
不一定均值为零方差为一就是最好的选择,所以引入了两个可学习参数\(\gamma和\sigma\)对\(\hat x_i\)进行调整,BN最终的结果为:
- batch normalization:在训练时,每一个batch中求每个特征的均值和方差,然后每个特征减去对应均值和标准差。将所有batch的均值和方差做平均后的全局均值和全局方差用于预测。当然还有\(\gamma和\sigma\)两个待训练的参数,用于调整均值和方差为适合值。
- layer normalization:在训练时,对样本上各个特征求均值和方差。对于预测来说不需要全局均值和全局方差,而是计算输入样本的均值和方差就是可以了。