一、BatchNorm
1. 概念
对一个batch内的数据在通道尺度上计算均值和方差,将同批次同通道的数据归一化为均值为0、方差为1的正态分布,最后用对归一化后的数据进行缩放和平移来还原数据本身的分布。
上图展示了大小为[3,4,2,2]的tensor(批次大小为3,通道数为4,高为2,宽为2)的BatchNorm过程,该过程是针对训练数据的且无缩放和平移。可以看出,BatchNorm是对同一批次内同一通道的所有数据进行归一化。
在训练过程中,其计算过程如下:
其中, μ B \mu_{\mathcal{B}} μB和 σ B 2 \sigma^2_{\mathcal{B}} σB2分别为当前批次下同一通道所有数据的均值和有偏方差, ϵ \epsilon ϵ用来防止分母为0, γ \gamma γ和 β \beta β是可学习的参数(通道数为 C C C时,两个参数在当前特征层的总量为 2 × C 2\times C 2×C),用来进行仿射变换,即通过缩放和平移使数据处于更好的分布上。
由于测试过程需要稳定的输出,所以并不是按照批次计算均值和方差,而是使用整个训练样本的均值和方差(通常由滑动平均法计算),如下:
其中, V a r [ x ] Var[x] Var[x]指的是无偏方差,根据下式可以看出,将之前的有偏方差转为无偏方差乘上 m m − 1 \frac{m}{m-1} <

本文详细介绍了BatchNorm和LayerNorm两种归一化技术的概念、作用、计算过程以及在深度学习特别是NLP中的应用。BatchNorm主要针对通道维度归一化,适用于大batch_size和CV场景,而LayerNorm则针对样本或词向量尺度归一化,更适合NLP任务,如RNN和Transformer。
最低0.47元/天 解锁文章
989





