深度学习的数学原理(十七)—— 归一化:BN与LN

在深度学习模型的训练中,归一化技术是解决内部协变量偏移(ICS)、稳定梯度传递、加速收敛的关键手段。Batch Normalization(BN)和Layer Normalization(LN)作为最常用的两种归一化方法,分别适配CNN的图像任务和Transformer的序列任务,其数学设计与应用场景的差异直接决定了模型的训练效果。

本文将从数学本质上拆解BN与LN的计算公式、梯度传播、适用场景,通过代码验证两者的效果差异,为后续复杂模型的理解提供理论支撑。

一、归一化的核心目标:解决内部协变量偏移

1.1 内部协变量偏移(ICS)的数学定义

要理解ICS,先明确三个关键概念:

  • 协变量(Covariate) :在机器学习中,"协变量"本质是模型的输入特征(比如CNN的特征图、全连接层的输入向量);
  • 分布偏移(Distribution Shift):输入特征的概率分布随训练过程发生变化;
  • 内部(Internal) :区别于"外部分布偏移"(训练集与测试集的分布差异),ICS是模型内部层与层之间的分布偏移。

在深层神经网络训练中,每一层的输入特征分布会随前层参数更新而变化,这种现象称为内部协变量偏移(Internal Covariate Shift, ICS)。其数学表现为:

设第lll层的输入为XlX_lXl,输出为Yl=f(WlXl+bl)Y_l = f(W_l X_l + b_l)Yl=f(WlXl+bl)(fff为激活函数),则XlX_lXl的分布P(Xl)P(X_l)P(Xl)会随Wl−1,bl−1W_{l-1}, b_{l-1}Wl−1,bl−1的更新而改变。

数学表达

设深层神经网络有 LLL 层,第 lll 层的输入为 XlX_lXl(特征向量/张量),输出为 Yl=fl(WlXl+bl)Y_l = f_l(W_l X_l + b_l)Yl=fl(WlXl+bl)(flf_lfl 为激活函数,Wl,blW_l, b_lWl,bl 为可学习参数)。

若满足以下条件,则存在内部协变量偏移
P(Xl(t))≠P(Xl(t+1))P(X_l^{(t)}) \neq P(X_l^{(t+1)})P(Xl(t))=P(Xl(t+1))

其中:

  • Xl(t)X_l^{(t)}Xl(t):第 ttt 次参数更新后,第 lll 层的输入特征;
  • P(Xl)P(X_l)P(Xl):第 lll 层输入特征的概率分布;
  • 核心含义:随着前层参数(Wl−1,bl−1W_{l-1}, b_{l-1}Wl−1,bl−1)的更新,当前层的输入分布持续变化。

通俗类比

把神经网络的每一层想象成"工厂的加工车间":

  • 前一层的输出是当前层的"原材料"(输入特征);
  • 正常生产中,原材料的规格(分布)应保持稳定,车间才能高效加工;
  • ICS就像"原材料规格频繁变来变去"------前一层参数一更新,原材料的均值、方差、范围全变了,当前层刚适应一种规格,下一轮又要重新调整,导致训练效率低下。

1.2 ICS产生的根本原因

ICS的核心诱因是神经网络的"链式参数依赖",具体可拆解为两点:

  1. 参数更新的连锁反应 :深层网络中,第 lll 层的输入 XlX_lXl 是前一层输出 Yl−1Y_{l-1}Yl−1 的函数,而 Yl−1Y_{l-1}Yl−1 依赖于 Wl−1,bl−1W_{l-1}, b_{l-1}Wl−1,bl−1。当 Wl−1,bl−1W_{l-1}, b_{l-1}Wl−1,bl−1 更新时,Yl−1Y_{l-1}Yl−1 的分布会变化,进而导致 XlX_lXl 的分布变化;
  2. 激活函数的放大效应:ReLU、Sigmoid等激活函数对输入分布敏感------比如Sigmoid在输入绝对值较大时会进入饱和区(梯度趋近于0),前层输入的微小分布偏移,经过激活函数后会被放大,导致后层输入分布的剧烈波动。

1.3 例子

假设第 l−1l-1l−1 层是简单的线性层+Sigmoid激活:
Yl−1=Sigmoid(Wl−1Xl−1+bl−1)Y_{l-1} = \text{Sigmoid}(W_{l-1} X_{l-1} + b_{l-1})Yl−1=Sigmoid(Wl−1Xl−1+bl−1)

第 lll 层的输入 Xl=Yl−1X_l = Y_{l-1}Xl=Yl−1。

当训练迭代时,Wl−1W_{l-1}Wl−1 微小更新(比如从 W=0.1W=0.1W=0.1 变为 W=0.11W=0.11W=0.11):

  • 若 Xl−1X_{l-1}Xl−1 的均值为10,则 WXl−1+bW X_{l-1} + bWXl−1+b 的均值从 0.1×10+0=10.1×10 + 0 = 10.1×10+0=1 变为 0.11×10+0=1.10.11×10 + 0 = 1.10.11×10+0=1.1;
  • Sigmoid(1)≈0.731,Sigmoid(1.1)≈0.750------看似微小的参数变化,导致 XlX_lXl 的均值从0.731变为0.750,分布已发生偏移;
  • 若网络有100层,这种"层间分布偏移"会被逐层放大,最终导致深层输入分布完全失控。

1.4 ICS对训练的危害

  1. 梯度稳定性下降:输入分布剧烈变化会导致梯度值波动(过大或过小),加剧梯度消失/爆炸;
  2. 学习率受限:需使用极小的学习率避免参数更新导致输入分布突变,延长训练周期;
  3. 模型泛化能力差:模型需适应不断变化的输入分布,易过拟合训练数据的局部特征。

归一化的核心目标是固定每一层输入特征的分布(通常归一化为零均值、单位方差),从数学上抑制ICS,让模型聚焦于学习特征映射,而非适应分布变化。

二、Batch Normalization(BN)的数学原理

BN是2015年提出的归一化方法,核心是在批次维度上对特征进行归一化,适配CNN的图像任务(批量处理、特征图空间共享权重)。

2.1 BN的完整数学流程

BN的计算分为训练阶段和测试阶段,核心公式围绕归一化→缩放→平移展开。

(1)训练阶段(批量统计)

设某一层的输入为批量特征X∈RB×C×H×WX \in \mathbb{R}^{B \times C \times H \times W}X∈RB×C×H×W(CNN特征图,BBB为批次大小,CCC为通道数,H/WH/WH/W为空间尺寸),BN的计算步骤为:

  1. 计算批次统计量 :对每个通道独立计算批量均值和方差
    μBc=1B×H×W∑b=1B∑i=1H∑j=1WXb,c,i,j \mu_B^c = \frac{1}{B \times H \times W} \sum_{b=1}^B \sum_{i=1}^H \sum_{j=1}^W X_{b,c,i,j} μBc=B×H×W1b=1∑Bi=1∑Hj=1∑WXb,c,i,j
    σBc=1B×H×W∑b=1B∑i=1H∑j=1W(Xb,c,i,j−μBc)2+ϵ \sigma_B^c = \frac{1}{B \times H \times W} \sum_{b=1}^B \sum_{i=1}^H \sum_{j=1}^W (X_{b,c,i,j} - \mu_B^c)^2 + \epsilon σBc=B×H×W1b=1∑Bi=1∑Hj=1∑W(Xb,c,i,j−μBc)2+ϵ

    其中ϵ\epsilonϵ为防止除零的小常数(通常取1e−51e-51e−5),ccc为通道索引(c=1,2,...,Cc=1,2,...,Cc=1,2,...,C)。

  2. 归一化操作 :将每个通道的特征归一化为零均值、单位方差
    X^b,c,i,j=Xb,c,i,j−μBcσBc \hat{X}{b,c,i,j} = \frac{X{b,c,i,j} - \mu_B^c}{\sqrt{\sigma_B^c}} X^b,c,i,j=σBc Xb,c,i,j−μBc

  3. 缩放与平移 :引入可学习参数γc\gamma^cγc(缩放)和βc\beta^cβc(平移),恢复特征表达能力
    Yb,c,i,j=γc⋅X^b,c,i,j+βc Y_{b,c,i,j} = \gamma^c \cdot \hat{X}_{b,c,i,j} + \beta^c Yb,c,i,j=γc⋅X^b,c,i,j+βc

    若γc=σBc\gamma^c = \sqrt{\sigma_B^c}γc=σBc 、βc=μBc\beta^c = \mu_B^cβc=μBc,则Y=XY=XY=X,保证归一化不会破坏原有特征分布。

(2)测试阶段(滑动平均统计)

测试时无批次信息,需使用训练过程中积累的「滑动平均均值」和「滑动平均方差」:
μrunningc=α⋅μrunningc+(1−α)⋅μBc \mu_{running}^c = \alpha \cdot \mu_{running}^c + (1-\alpha) \cdot \mu_B^c μrunningc=α⋅μrunningc+(1−α)⋅μBc
σrunningc=α⋅σrunningc+(1−α)⋅σBc \sigma_{running}^c = \alpha \cdot \sigma_{running}^c + (1-\alpha) \cdot \sigma_B^c σrunningc=α⋅σrunningc+(1−α)⋅σBc

其中α\alphaα为衰减系数(通常取0.99或0.999),初始值μrunningc=0\mu_{running}^c=0μrunningc=0、σrunningc=1\sigma_{running}^c=1σrunningc=1。

测试时的归一化公式为:
X^=X−μrunningcσrunningc+ϵ \hat{X} = \frac{X - \mu_{running}^c}{\sqrt{\sigma_{running}^c + \epsilon}} X^=σrunningc+ϵ X−μrunningc
Y=γc⋅X^+βc Y = \gamma^c \cdot \hat{X} + \beta^c Y=γc⋅X^+βc

2.2 BN的梯度传播推导

BN的可学习参数为γ\gammaγ和β\betaβ,需通过反向传播计算其梯度(以单个样本的单个特征为例):

设损失函数为LLL,对γ\gammaγ和β\betaβ的梯度为:
∂L∂γ=∑b,i,j∂L∂Yb,c,i,j⋅X^b,c,i,j \frac{\partial L}{\partial \gamma} = \sum_{b,i,j} \frac{\partial L}{\partial Y_{b,c,i,j}} \cdot \hat{X}{b,c,i,j} ∂γ∂L=b,i,j∑∂Yb,c,i,j∂L⋅X^b,c,i,j
∂L∂β=∑b,i,j∂L∂Yb,c,i,j \frac{\partial L}{\partial \beta} = \sum
{b,i,j} \frac{\partial L}{\partial Y_{b,c,i,j}} ∂β∂L=b,i,j∑∂Yb,c,i,j∂L

对输入XXX的梯度需考虑链式法则的传递:
∂L∂Xb,c,i,j=γcσBc⋅(∂L∂Yb,c,i,j−1BHW∑b,i,j∂L∂Yb,c,i,j−X^b,c,i,jBHW∑b,i,j∂L∂Yb,c,i,j⋅X^b,c,i,j) \frac{\partial L}{\partial X_{b,c,i,j}} = \frac{\gamma^c}{\sqrt{\sigma_B^c}} \cdot \left( \frac{\partial L}{\partial Y_{b,c,i,j}} - \frac{1}{BHW} \sum_{b,i,j} \frac{\partial L}{\partial Y_{b,c,i,j}} - \frac{\hat{X}{b,c,i,j}}{BHW} \sum{b,i,j} \frac{\partial L}{\partial Y_{b,c,i,j}} \cdot \hat{X}_{b,c,i,j} \right) ∂Xb,c,i,j∂L=σBc γc⋅ ∂Yb,c,i,j∂L−BHW1b,i,j∑∂Yb,c,i,j∂L−BHWX^b,c,i,jb,i,j∑∂Yb,c,i,j∂L⋅X^b,c,i,j

核心结论:BN的梯度计算包含批次内的统计项,依赖批次大小,小批次会导致梯度估计不稳定。

三、Layer Normalization(LN)的数学原理

LN是2016年提出的归一化方法,核心是在特征维度上对单个样本进行归一化,适配Transformer的序列任务(变长序列、无固定批次统计)。

3.1 LN的完整数学流程

LN不依赖批次信息,对每个样本独立计算归一化统计量,适用于序列数据X∈RB×N×DX \in \mathbb{R}^{B \times N \times D}X∈RB×N×D(BBB为批次大小,NNN为序列长度,DDD为特征维度)。

(1)训练/测试阶段(统一流程)
  1. 计算特征维度统计量 :对每个样本的每个序列位置,在特征维度上计算均值和方差
    μb,n=1D∑d=1DXb,n,d \mu_{b,n} = \frac{1}{D} \sum_{d=1}^D X_{b,n,d} μb,n=D1d=1∑DXb,n,d
    σb,n=1D∑d=1D(Xb,n,d−μb,n)2+ϵ \sigma_{b,n} = \frac{1}{D} \sum_{d=1}^D (X_{b,n,d} - \mu_{b,n})^2 + \epsilon σb,n=D1d=1∑D(Xb,n,d−μb,n)2+ϵ

    其中bbb为样本索引,nnn为序列位置索引,ddd为特征维度索引。

  2. 归一化操作
    X^b,n,d=Xb,n,d−μb,nσb,n \hat{X}{b,n,d} = \frac{X{b,n,d} - \mu_{b,n}}{\sqrt{\sigma_{b,n}}} X^b,n,d=σb,n Xb,n,d−μb,n

  3. 缩放与平移 :引入可学习参数γ∈RD\gamma \in \mathbb{R}^Dγ∈RD和β∈RD\beta \in \mathbb{R}^Dβ∈RD(特征维度共享):
    Yb,n,d=γd⋅X^b,n,d+βd Y_{b,n,d} = \gamma_d \cdot \hat{X}_{b,n,d} + \beta_d Yb,n,d=γd⋅X^b,n,d+βd

3.2 LN的梯度传播推导

LN的梯度计算不依赖批次信息,对γ\gammaγ和β\betaβ的梯度为:
∂L∂γd=∑b,n∂L∂Yb,n,d⋅X^b,n,d \frac{\partial L}{\partial \gamma_d} = \sum_{b,n} \frac{\partial L}{\partial Y_{b,n,d}} \cdot \hat{X}{b,n,d} ∂γd∂L=b,n∑∂Yb,n,d∂L⋅X^b,n,d
∂L∂βd=∑b,n∂L∂Yb,n,d \frac{\partial L}{\partial \beta_d} = \sum
{b,n} \frac{\partial L}{\partial Y_{b,n,d}} ∂βd∂L=b,n∑∂Yb,n,d∂L

对输入XXX的梯度:
∂L∂Xb,n,d=1σb,n⋅(∂L∂Yb,n,d⋅γd−γdD∑d=1D∂L∂Yb,n,d−γd⋅X^b,n,dD∑d=1D∂L∂Yb,n,d⋅X^b,n,d) \frac{\partial L}{\partial X_{b,n,d}} = \frac{1}{\sqrt{\sigma_{b,n}}} \cdot \left( \frac{\partial L}{\partial Y_{b,n,d}} \cdot \gamma_d - \frac{\gamma_d}{D} \sum_{d=1}^D \frac{\partial L}{\partial Y_{b,n,d}} - \frac{\gamma_d \cdot \hat{X}{b,n,d}}{D} \sum{d=1}^D \frac{\partial L}{\partial Y_{b,n,d}} \cdot \hat{X}_{b,n,d} \right) ∂Xb,n,d∂L=σb,n 1⋅(∂Yb,n,d∂L⋅γd−Dγdd=1∑D∂Yb,n,d∂L−Dγd⋅X^b,n,dd=1∑D∂Yb,n,d∂L⋅X^b,n,d)

核心结论:LN的梯度仅依赖单个样本的特征统计,不受批次大小影响,适配变长序列。

四、简单例子计算BN与LN

我将用极简的数值例子 ,通过逐步骤手写公式计算,清晰展示BN和LN的完整过程。这个例子兼顾数学严谨性和直观性,你可以直接复刻计算,快速理解两者的核心差异。

前提设定

为了聚焦核心计算,我们设定:

  • 输入张量(模拟神经网络某层输出):
    X=[135246]X = \begin{bmatrix} 1 & 3 & 5 \\ 2 & 4 & 6 \end{bmatrix}X=[123456]
    维度说明:X∈RB×DX \in \mathbb{R}^{B \times D}X∈RB×D,其中
    • B=2B=2B=2(批次大小,2个样本),
    • D=3D=3D=3(特征维度,每个样本3个特征);
  • 小常数 ϵ=10−5\epsilon=10^{-5}ϵ=10−5(防止除零,计算中可忽略,因为方差不为0);
  • 可学习参数:缩放 γ=1\gamma=1γ=1,平移 β=0\beta=0β=0(仅展示纯归一化过程,不引入额外参数干扰)。

4.1 BN完整计算过程

步骤1:计算每个特征维度的批次均值 μB\mu_BμB

对每一列(每个特征),计算所有样本的均值:
μB1=1+22=1.5(第1列特征均值)μB2=3+42=3.5(第2列特征均值)μB3=5+62=5.5(第3列特征均值) \mu_{B1} = \frac{1+2}{2} = 1.5 \quad (\text{第1列特征均值}) \\ \mu_{B2} = \frac{3+4}{2} = 3.5 \quad (\text{第2列特征均值}) \\ \mu_{B3} = \frac{5+6}{2} = 5.5 \quad (\text{第3列特征均值}) μB1=21+2=1.5(第1列特征均值)μB2=23+4=3.5(第2列特征均值)μB3=25+6=5.5(第3列特征均值)

简写为:μB=[1.5,3.5,5.5]\mu_B = [1.5, 3.5, 5.5]μB=[1.5,3.5,5.5]。

步骤2:计算每个特征维度的批次方差 σB2\sigma_B^2σB2

对每一列,计算所有样本的方差(无偏估计,分母为BBB,BN默认用批次内全部样本):
σB12=(1−1.5)2+(2−1.5)22=0.25+0.252=0.25σB22=(3−3.5)2+(4−3.5)22=0.25+0.252=0.25σB32=(5−5.5)2+(6−5.5)22=0.25+0.252=0.25 \sigma_{B1}^2 = \frac{(1-1.5)^2 + (2-1.5)^2}{2} = \frac{0.25 + 0.25}{2} = 0.25 \\ \sigma_{B2}^2 = \frac{(3-3.5)^2 + (4-3.5)^2}{2} = \frac{0.25 + 0.25}{2} = 0.25 \\ \sigma_{B3}^2 = \frac{(5-5.5)^2 + (6-5.5)^2}{2} = \frac{0.25 + 0.25}{2} = 0.25 σB12=2(1−1.5)2+(2−1.5)2=20.25+0.25=0.25σB22=2(3−3.5)2+(4−3.5)2=20.25+0.25=0.25σB32=2(5−5.5)2+(6−5.5)2=20.25+0.25=0.25

简写为:σB2=[0.25,0.25,0.25]\sigma_B^2 = [0.25, 0.25, 0.25]σB2=[0.25,0.25,0.25]。

步骤3:归一化计算 X^\hat{X}X^

公式:x^ij=xij−μBjσBj2+ϵ\hat{x}{ij} = \frac{x{ij} - \mu_{Bj}}{\sqrt{\sigma_{Bj}^2 + \epsilon}}x^ij=σBj2+ϵ xij−μBj(iii为样本索引,jjj为特征索引):

  • 第1个样本(第1行):
    x^11=1−1.50.25=−0.50.5=−1x^12=3−3.50.25=−0.50.5=−1x^13=5−5.50.25=−0.50.5=−1 \hat{x}{11} = \frac{1-1.5}{\sqrt{0.25}} = \frac{-0.5}{0.5} = -1 \\ \hat{x}{12} = \frac{3-3.5}{\sqrt{0.25}} = \frac{-0.5}{0.5} = -1 \\ \hat{x}_{13} = \frac{5-5.5}{\sqrt{0.25}} = \frac{-0.5}{0.5} = -1 x^11=0.25 1−1.5=0.5−0.5=−1x^12=0.25 3−3.5=0.5−0.5=−1x^13=0.25 5−5.5=0.5−0.5=−1
  • 第2个样本(第2行):
    x^21=2−1.50.25=0.50.5=1x^22=4−3.50.25=0.50.5=1x^23=6−5.50.25=0.50.5=1 \hat{x}{21} = \frac{2-1.5}{\sqrt{0.25}} = \frac{0.5}{0.5} = 1 \\ \hat{x}{22} = \frac{4-3.5}{\sqrt{0.25}} = \frac{0.5}{0.5} = 1 \\ \hat{x}_{23} = \frac{6-5.5}{\sqrt{0.25}} = \frac{0.5}{0.5} = 1 x^21=0.25 2−1.5=0.50.5=1x^22=0.25 4−3.5=0.50.5=1x^23=0.25 6−5.5=0.50.5=1
步骤4:BN最终输出

X^BN=[−1−1−1111] \hat{X}_{\text{BN}} = \begin{bmatrix} -1 & -1 & -1 \\ 1 & 1 & 1 \end{bmatrix} X^BN=[−11−11−11]

4.2 LN完整计算过程

LN核心逻辑

按样本维度归一化,用单个样本的所有特征计算均值/方差(对每一行单独计算)。

步骤1:计算每个样本的特征均值 μ\muμ

对每一行(每个样本),计算所有特征的均值:
μ1=1+3+53=3(第1个样本均值)μ2=2+4+63=4(第2个样本均值) \mu_1 = \frac{1+3+5}{3} = 3 \quad (\text{第1个样本均值}) \\ \mu_2 = \frac{2+4+6}{3} = 4 \quad (\text{第2个样本均值}) μ1=31+3+5=3(第1个样本均值)μ2=32+4+6=4(第2个样本均值)

步骤2:计算每个样本的特征方差 σ2\sigma^2σ2

对每一行,计算所有特征的方差:
σ12=(1−3)2+(3−3)2+(5−3)23=4+0+43=83≈2.6667σ22=(2−4)2+(4−4)2+(6−4)23=4+0+43=83≈2.6667 \sigma_1^2 = \frac{(1-3)^2 + (3-3)^2 + (5-3)^2}{3} = \frac{4 + 0 + 4}{3} = \frac{8}{3} \approx 2.6667 \\ \sigma_2^2 = \frac{(2-4)^2 + (4-4)^2 + (6-4)^2}{3} = \frac{4 + 0 + 4}{3} = \frac{8}{3} \approx 2.6667 σ12=3(1−3)2+(3−3)2+(5−3)2=34+0+4=38≈2.6667σ22=3(2−4)2+(4−4)2+(6−4)2=34+0+4=38≈2.6667

步骤3:归一化计算 X^\hat{X}X^

公式:x^ij=xij−μiσi2+ϵ\hat{x}{ij} = \frac{x{ij} - \mu_i}{\sqrt{\sigma_i^2 + \epsilon}}x^ij=σi2+ϵ xij−μi(iii为样本索引,jjj为特征索引):

  • 第1个样本(第1行):
    x^11=1−38/3=−22.6667≈−21.6330≈−1.2247x^12=3−38/3=0x^13=5−38/3≈21.6330≈1.2247 \hat{x}{11} = \frac{1-3}{\sqrt{8/3}} = \frac{-2}{\sqrt{2.6667}} \approx \frac{-2}{1.6330} \approx -1.2247 \\ \hat{x}{12} = \frac{3-3}{\sqrt{8/3}} = 0 \\ \hat{x}_{13} = \frac{5-3}{\sqrt{8/3}} \approx \frac{2}{1.6330} \approx 1.2247 x^11=8/3 1−3=2.6667 −2≈1.6330−2≈−1.2247x^12=8/3 3−3=0x^13=8/3 5−3≈1.63302≈1.2247
  • 第2个样本(第2行):
    x^21=2−48/3≈−21.6330≈−1.2247x^22=4−48/3=0x^23=6−48/3≈21.6330≈1.2247 \hat{x}{21} = \frac{2-4}{\sqrt{8/3}} \approx \frac{-2}{1.6330} \approx -1.2247 \\ \hat{x}{22} = \frac{4-4}{\sqrt{8/3}} = 0 \\ \hat{x}_{23} = \frac{6-4}{\sqrt{8/3}} \approx \frac{2}{1.6330} \approx 1.2247 x^21=8/3 2−4≈1.6330−2≈−1.2247x^22=8/3 4−4=0x^23=8/3 6−4≈1.63302≈1.2247
步骤4:LN最终输出

X^LN≈[−1.224701.2247−1.224701.2247] \hat{X}_{\text{LN}} \approx \begin{bmatrix} -1.2247 & 0 & 1.2247 \\ -1.2247 & 0 & 1.2247 \end{bmatrix} X^LN≈[−1.2247−1.2247001.22471.2247]

4.3 补充:加入γ\gammaγ和β\betaβ的完整计算

若设置 γ=[2,3,4]\gamma=[2, 3, 4]γ=[2,3,4],β=[1,2,3]\beta=[1, 2, 3]β=[1,2,3],则最终输出为:

BN带参数输出

公式:Yij=γj⋅x^ij+βjY_{ij} = \gamma_j \cdot \hat{x}{ij} + \beta_jYij=γj⋅x^ij+βj
YBN=[2×(−1)+13×(−1)+24×(−1)+32×1+13×1+24×1+3]=[−1−1−1357] Y
{\text{BN}} = \begin{bmatrix} 2×(-1)+1 & 3×(-1)+2 & 4×(-1)+3 \\ 2×1+1 & 3×1+2 & 4×1+3 \end{bmatrix} = \begin{bmatrix} -1 & -1 & -1 \\ 3 & 5 & 7 \end{bmatrix} YBN=[2×(−1)+12×1+13×(−1)+23×1+24×(−1)+34×1+3]=[−13−15−17]

LN带参数输出

公式:Yij=γj⋅x^ij+βjY_{ij} = \gamma_j \cdot \hat{x}{ij} + \beta_jYij=γj⋅x^ij+βj
YLN≈[2×(−1.2247)+13×0+24×1.2247+32×(−1.2247)+13×0+24×1.2247+3]≈[−1.449427.8988−1.449427.8988] Y
{\text{LN}} \approx \begin{bmatrix} 2×(-1.2247)+1 & 3×0+2 & 4×1.2247+3 \\ 2×(-1.2247)+1 & 3×0+2 & 4×1.2247+3 \end{bmatrix} \approx \begin{bmatrix} -1.4494 & 2 & 7.8988 \\ -1.4494 & 2 & 7.8988 \end{bmatrix} YLN≈[2×(−1.2247)+12×(−1.2247)+13×0+23×0+24×1.2247+34×1.2247+3]≈[−1.4494−1.4494227.89887.8988]

五、BN与LN的核心差异

对比维度 Batch Normalization(BN) Layer Normalization(LN)
归一化维度 批次维度(跨样本、同通道) 特征维度(单样本、跨特征)
统计量计算 依赖批次统计(训练时批次均值/方差,测试时滑动平均) 不依赖批次(单样本特征均值/方差)
可学习参数 通道级参数(γc,βc\gamma^c, \beta^cγc,βc) 特征级参数(γd,βd\gamma_d, \beta_dγd,βd)
批次大小敏感性 敏感(小批次统计不准,梯度不稳定) 不敏感(单样本独立计算)
适用数据类型 固定尺寸数据(CNN特征图B×C×H×WB \times C \times H \times WB×C×H×W) 变长序列数据(Transformer序列B×N×DB \times N \times DB×N×D)
计算复杂度 O(BCHW)O(BCHW)O(BCHW)(批次越大,计算量越大) O(BND)O(BND)O(BND)(与批次大小线性相关)
梯度传播 包含批次内统计项,依赖批量信息 仅依赖单样本信息,传播更稳定

关键数学本质差异

  • BN的核心是跨样本的通道级归一化,利用批次内的统计规律稳定输入分布,适合CNN的空间共享权重特性;
  • LN的核心是单样本的特征级归一化,不依赖批次统计,适合Transformer的变长序列和并行计算需求。

六、归一化的工程选择原则

  1. CNN模型(图像任务):优先选择BN,且BN层应置于卷积层之后、激活函数之前,利用批次统计稳定梯度传递;
  2. Transformer模型(序列任务):优先选择LN,且LN层应置于注意力层/前馈网络之前(Pre-LN架构),避免批次依赖;
  3. 小批次训练场景:选择LN,避免BN的统计不准问题;
  4. 固定尺寸数据+大批次:选择BN,利用批量统计提升收敛速度;
  5. 全连接层:两者均可,但BN适合大批次,LN适合小批次/变长输入。

七、总结

BN与LN的核心差异源于归一化维度的选择

  • BN在「批次维度」归一化,依赖批量统计,适配CNN的固定尺寸特征图,能高效利用硬件并行计算;
  • LN在「特征维度」归一化,不依赖批次信息,适配Transformer的变长序列,训练更稳定。

从数学本质上看,两者均通过归一化→缩放→平移的流程抑制内部协变量偏移,但统计量计算的维度差异决定了其适用场景的分化。在工程实践中,需根据模型类型(CNN/Transformer)、数据特性(固定尺寸/变长序列)和训练条件(批次大小)选择合适的归一化方法,这也是后续复杂模型(如ResNet+BN、ViT+LN)能稳定训练的关键。

相关推荐
bryant_meng2 小时前
【Reading Notes】(7.11)Favorite Articles from 2024 November
人工智能·深度学习·计算机视觉·aigc·资讯
GEO_Huang2 小时前
企业转型无从下手?数谷的定制化 AI 方案能否指点迷津?
大数据·人工智能·aigc·rpa·geo·企业智能体定制·企业ai定制
Yvonne爱编码2 小时前
2026 现象级 AI 工具 OpenClaw 全解析:本地部署、自动化实战与技术揭秘
运维·人工智能·自动化
啦啦啦_99992 小时前
1. AI 学习目录
java·人工智能
mygugu2 小时前
归纳理解epoch、batch、batch size、step、iteration深度学习名词
人工智能·算法
AI科技星2 小时前
基于双隐含量(角速度 +质量 )的全量变形公式体系-发现新公式
开发语言·人工智能·线性代数·算法·矩阵·数据挖掘
格鸰爱童话2 小时前
向AI学习项目技能(二)
java·人工智能·python·学习
Sagittarius_A*2 小时前
傅里叶变换:从空域到频域的图像分析【计算机视觉】
图像处理·人工智能·python·opencv·计算机视觉·傅里叶变换·频域滤波
入门工作者2 小时前
opencv 灰度矩求亚像素
人工智能·opencv·计算机视觉