目录
Batch Normalization: Accelerating Deep Network Training by Reducing Internal Covariate Shift
参考http://blog.csdn.net/hjimce/article/details/50866313
主要有四个好处:
一般地,在神经网络训练开始前,都要对输入数据做一个归一化处理,原因如下:
参考https://blog.csdn.net/qq_25737169/article/details/79048516
参考知乎的讨论:
https://www.zhihu.com/question/59728870
https://www.zhihu.com/question/48820040
参考:
https://skyhigh233.com/blog/2017/07/21/norm/
直观区别:
好处:
\(\mu\)
和\(\sigma\)
分别是该layer的隐层维度的均值和方差LayerNorm是Batch Normalization的一个变体,BN针对一个minibatch的输入样本,计算均值和方差,基于计算的均值和方差来对某一层神经网络的输入X中每一个case进行归一化操作。但BN有两个明显不足:1、高度依赖于mini-batch的大小,实际使用中会对mini-Batch大小进行约束,不适合类似在线学习(mini-batch为1)情况;2、不适用于RNN网络中normalize操作:BN实际使用时需要计算并且保存某一层神经网络mini-batch的均值和方差等统计信息,对于对一个固定深度的前向神经网络(DNN,CNN)使用BN,很方便;但对于RNN来说,sequence的长度是不一致的,换句话说RNN的深度不是固定的,不同的time-step需要保存不同的statics特征,可能存在一个特殊sequence比其的sequence长很多,这样training时,计算很麻烦。但LN可以有效解决上面这两个问题。LN中同层神经元输入拥有相同的均值和方差,不同的输入样本有不同的均值和方差;而BN中则针对不同神经元输入计算均值和方差,同一个minibatch中的输入拥有相同的均值和方差。因此,LN不依赖于mini-batch的大小和输入sequence的深度,因此可以用于bath-size为1和RNN中对边长的输入sequence的normalize操作。参考深度学习加速器Layer Normalization-LN