BN
整体结构
特点
BN在第一步和第二步中对输入的特征进行求均值和求标准差,后将其标准化,具体公式参考上图2-3部分。[2]
批次标准化最重要的内容是第三步是引入了两个可学习的参数,分别是\beta和\gamma,\beta用于控制偏移量,而\gamma[\latex]用于控制标量。这一举措使Batch Norm层具备了学习出最佳标准值的能力。
据原论文说明[2],该举措可以解决“内部协变量偏移(nternal Covariate Shift)”问题。
另内部协变量偏移,参考的解释说明是:“在神经网络中,第一层的输出馈入第二层,第二层的输出馈入第三层,依此类推。当某一层的参数发生变化时,后续层的输入分布也会发生变化。[3]”
而对于更详尽的协变量说明,以及BN是如何实现的,在D2L书籍中表示其尚无定论。[1]
效果
在第一及第二步时,其算得均值标准差,利用其进行归一化(normalize)
在归一化后,于第三步对标准化后的值进行尺度和偏置的变化,值在反向传播时学习得到。
此外BN层对激活函数亦有优化,使激活函数梯度更加平缓
LN
Layer Norm层与BN层相当类似,但是解决了BN需要依照批次进行标准化的问题,不再依赖批次大小。
前者是依照批次长度,后者依照特征维长度。
LN脱离批次的特点,在RNN网络与transformer模型中效果显著。
IN
Instance Normalization只关注单一维,而不是如LN一样沿整个特征维度向量
GN
Group Norm如其名一样,利用分组的方式进行归一化。GN看起来是一种类似LN的变体,将channel分组,也无需依赖于批次,因通道学习到的分布更加不同[7],所以最终的效果要比LN更好。
在批次小的情况下,GN有良好表现,而在大批次的情况下,GN与BN差距不明显,甚至BN更佳。[7]
Ref
- https://zh.d2l.ai/chapter_convolutional-modern/batch-norm.html
- https://towardsdatascience.com/batch-norm-explained-visually-how-it-works-and-why-neural-networks-need-it-b18919692739
- https://machinelearning.wtf/terms/internal-covariate-shift
- https://www.jianshu.com/p/a78470f521dd
- https://www.pinecone.io/learn/batch-layer-normalization/
- https://medium.com/syncedreview/facebook-ai-proposes-group-normalization-alternative-to-batch-normalization-fb0699bffae7
- https://www.baeldung.com/cs/group-normalization