对batch normalization 一直属于一知半解状态,二面被问的一脸懵逼,所以决定好好理一理这个问题。
1、What is batch normalization?
batch normalization 其实就是对数据做一个批量的规范化操作,使得在深度神经网络训练过程中使得每一层神经网络的输入保持相同分布的。
具体实现过程如下:
A、对于一个mini-batch,求数据的均值,方差。这里其实是
B、得到归一化之后的数据x,使得结果(输出信号各个维度)的均值为0,方差为1.
C、“scale and shift”操作则是为了让因训练所需而“刻意”加入的BN能够有可能还原最初的输入。