大家好,我是微学AI,今天给大家介绍一下大模型常用的Normalization方法,包括BatchNorm、LayerNorm、RMSNorm等方法,并给出样例和公式,通俗易懂。在大模型搭建与训练中,Normalization是一种重要的技术,用于加速模型训练、提高模型的泛化能力和稳定性。常见的Normalization方法有多种,每种方法都有其特定的应用场景和优势。
文章目录
一、Batch Normalization (BN)
1. 定义
- Batch Normalization是在batch(一批数据)中寻找均值和方差来进行归一化操作的方法。它通过对每一批数据中的每个特征维度进行归一化,使得数据的分布更加稳定,有助于加速模型的训练过程,减少梯度消失或梯度爆炸等问题。它在深度学习中被广泛应用于卷积神经网络(CNN)等模型中。
- 对于一批数据(数据集)含有 m m m个样本输入 x 1 , x 2 , ⋯ , x m x_1,x_2,\cdots,x_m x1,x2,⋯,xm,首先计算这批数据的均值 μ B ← 1 m ∑ i = 1 m x i \mu_B\leftarrow\frac{1}{m}\sum_{i = 1}^{m}x_i μB←m1∑i=1mxi,方差 σ B 2 ← 1 m ∑ i = 1 m ( x i − μ B ) 2 \sigma^2_B\leftarrow\frac{1}{m}\sum_{i = 1}^{m}(x_i - \mu_B)^2 σB2←m1∑i=1m(xi−μB)2,然后对每个样本 x i x_i xi进行归一化 x ^ i ← x i − μ B σ B 2 + ϵ \hat{x}_i\leftarrow\frac{x_i-\mu_B}{\sqrt{\sigma^2_B+\epsilon}} x^i←σB2+ϵxi−μB,最后再进行affine transform(仿射变换) y i ← γ x ^ i + β ≡ B N γ , β ( x i ) y_i\leftarrow\gamma\hat{x}_i+\beta\equiv BN_{\gamma,\beta}(x_i) yi←γx^i+β≡BNγ,β(xi),这里的 γ \gamma γ和 β \beta β是可学习的参数, ϵ \epsilon ϵ是一个很小的数(通常为 1 e − 5 1e - 5 1e−5),用于防止分母为 0 0 0。如果 γ \gamma γ和 β \beta β分别学习为方差和均值,那么标准化操作将被逆操作回来,由此就可视为没有标准化这一步,这使得模型更加灵活。
2. BN样例与公式
- 假设我们有一个batch大小为 m = 4 m = 4 m=4,特征维度为 n = 2 n = 2 n=2的数据 X = [ x 11 x 12 x 21 x 22 x 31 x 32 x 41 x 42 ] X=\begin{bmatrix}x_{11}&x_{12}\\x_{21}&x_{22}\\x_{31}&x_{32}\\x_{41}&x_{42}\end{bmatrix} X= x11x21x31x41x12x22x32x42 。
- 计算均值 μ = [ μ 1 μ 2 ] \mu=\begin{bmatrix}\mu_1\\\mu_2\end{bmatrix} μ=[μ1μ2],其中 μ 1 = 1 4 ( x 11 + x 21 + x 31 + x 41 ) \mu_1=\frac{1}{4}(x_{11}+x_{21}+x_{31}+x_{41}) μ1=41(x11+x21+x31+x41), μ 2 = 1 4 ( x 12 + x 22 + x 32 + x 42 ) \mu_2=\frac{1}{4}(x_{12}+x_{22}+x_{32}+x_{42}) μ2=41(x12+x22+x32+x42)。
- 计算方差 σ 2 = [ σ 1 2 σ 2 2 ] \sigma^2=\begin{bmatrix}\sigma^2_1\\\sigma^2_2\end{bmatrix} σ2=[σ12σ22],其中 σ 1 2 = 1 4 ∑ i = 1 4 ( x i 1 − μ 1 ) 2 \sigma^2_1=\frac{1}{4}\sum_{i = 1}^{4}(x_{i1}-\mu_1)^2 σ12=41∑i=14(xi1−μ1)2, σ 2 2 = 1 4 ∑ i = 1 4 ( x i 2 − μ 2 ) 2 \sigma^2_2=\frac{1}{4}\sum_{i = 1}^{4}(x_{i2}-\mu_2)^2 σ22=41∑i=14(xi2−μ2)2。
- 归一化后的 X ^ = [ x 11 − μ 1 σ 1 2 + ϵ x 12 − μ 2 σ 2 2 + ϵ x 21 − μ 1 σ 1 2 + ϵ x 22 − μ 2 σ 2 2 + ϵ x 31 − μ 1 σ 1 2 + ϵ x 32 − μ 2 σ 2 2 + ϵ x 41 − μ 1 σ 1 2 + ϵ x 42 − μ 2 σ 2 2 + ϵ ] \hat{X}=\begin{bmatrix}\frac{x_{11}-\mu_1}{\sqrt{\sigma^2_1+\epsilon}}&\frac{x_{12}-\mu_2}{\sqrt{\sigma^2_2+\epsilon}}\\\frac{x_{21}-\mu_1}{\sqrt{\sigma^2_1+\epsilon}}&\frac{x_{22}-\mu_2}{\sqrt{\sigma^2_2+\epsilon}}\\\frac{x_{31}-\mu_1}{\sqrt{\sigma^2_1+\epsilon}}&\frac{x_{32}-\mu_2}{\sqrt{\sigma^2_2+\epsilon}}\\\frac{x_{41}-\mu_1}{\sqrt{\sigma^2_1+\epsilon}}&\frac{x_{42}-\mu_2}{\sqrt{\sigma^2_2+\epsilon}}\end{bmatrix} X^= σ12+ϵx11−μ1σ12+ϵx21−μ1σ12+ϵx31−μ1σ12+ϵx41−μ1σ22+ϵx12−μ2σ22+ϵx22−μ2σ22+ϵx32−μ2σ22+ϵx42−μ2 。
- 经过仿射变换后的 Y = [ γ 1 x ^ 11 + β 1 γ 2 x ^ 12 + β 2 γ 1 x ^ 21 + β 1 γ 2 x ^ 22 + β 2 γ 1 x ^ 31 + β 1 γ 2 x ^ 32 + β 2 γ 1 x ^ 41 + β 1 γ 2 x ^ 42 + β 2 ] Y=\begin{bmatrix}\gamma_1\hat{x}_{11}+\beta_1&\gamma_2\hat{x}_{12}+\beta_2\\\gamma_1\hat{x}_{21}+\beta_1&\gamma_2\hat{x}_{22}+\beta_2\\\gamma_1\hat{x}_{31}+\beta_1&\gamma_2\hat{x}_{32}+\beta_2\\\gamma_1\hat{x}_{41}+\beta_1&\gamma_2\hat{x}_{42}+\beta_2\end{bmatrix} Y= γ1x^11+β1