目的,起源
在输出的阶段,解决不同维度特征尺度不同的问题(??)
和标准化对比:
为何需要 normaliztion
特征之间的 尺度不同
比如 car 的 里程特征 : 1000 to 100,000
司机的年龄:0 到 100;
这样的话,里程这个特征,就会导致梯度爆炸
所以我们需要 normalization
这样的话,尺度就想通了
batch normalization 让层与层之间更稳定
另外一个问题
在某一层,某一个权重特别大的时候,还是 会导致 我们模型的不稳定。
这时候,就需要 batch normalization
其中, m 是 这一批的 数据 的 min, s 是 std 均方差;
g ,b 是任意的, 可以训练的,超参数的。
在 keras 里面 实现 batch normalization
keras 有自己的 初始化 for 上述 的 g, b: 似乎是 g = 1 和 b=0;
参考
https://www.youtube.com/watch?v=dXB-KQYkzNU&list=PLZbbT5o_s2xq7LwI2y8_QtvuXZedL6tQU&index=38