神经网络常见归一化操作总结(BN、LN、IN、SN)

概述

Normalization Layer 归一化层主要用于在神经网络中对数据进行标准化处理,以加速训练和提高模型性能。

  • 归一化层的作用是将输入数据进行归一化处理,使得每个特征的均值为0,方差为1,同时学习每个特征的缩放系数和偏移量。
  • 这样可以使得神经网络中的每一层输入数据分布更加稳定,有利于提升梯度下降的效果,避免出现梯度消失或梯度爆炸等问题,从而提高模型的泛化能力和准确率。
  • 在实际应用中,需要根据具体情况选择适合的归一化层,并结合其他优化技术共同提升模型性能。

Batch Normalization

假设输入特征为 X ∈ R B × C × H × W X \in R^{B \times C \times H \times W} XRB×C×H×W,其中 B B B 表示 batch size, C C C 表示通道数, H H H W W W 分别表示高和宽。批归一化的计算过程如下:

  1. 对每个通道,计算该通道上所有样本的均值 μ \mu μ 和方差 σ 2 \sigma^2 σ2

    μ c = 1 B × H × W ∑ i = 1 B ∑ j = 1 H ∑ k = 1 W X i , c , j , k \mu_c = \frac{1}{B \times H \times W} \sum_{i=1}^{B} \sum_{j=1}^{H} \sum_{k=1}^{W} X_{i,c,j,k} μc=B×H×W1i=1Bj=1Hk=1WXi,c,j,k

    σ c 2 = 1 B × H × W ∑ i = 1 B ∑ j = 1 H ∑ k = 1 W ( X i , c , j , k − μ c ) 2 \sigma_c^2 = \frac{1}{B \times H \times W} \sum_{i=1}^{B} \sum_{j=1}^{H} \sum_{k=1}^{W} (X_{i,c,j,k} - \mu_c)^2 σc2=B×H×W1i=1Bj=1Hk=1W(Xi,c,j,kμc)2

  2. 对每个通道进行标准化,得到标准化后的输出 X ^ \hat{X} X^

    X ^ i , c , j , k = X i , c , j , k − μ c σ c 2 + ϵ \hat{X}_{i,c,j,k} = \frac{X_{i,c,j,k} - \mu_c}{\sqrt{\sigma_c^2 + \epsilon}} X^i,c,j,k=σc2+ϵ Xi,c,j,kμc

    其中 ϵ \epsilon ϵ 是一个很小的常数,避免分母为 0。

  3. 对标准化后的输出进行缩放和平移:

    Y i , c , j , k = γ c X ^ i , c , j , k + β c Y_{i,c,j,k} = \gamma_c \hat{X}_{i,c,j,k} + \beta_c Yi,c,j,k=γcX^i,c,j,k+βc

    其中 γ c \gamma_c γc β c \beta_c βc 分别是可学习的缩放因子和偏移量,用于保留网络中原有的表达能力。

通过批归一化层,可以让每个样本特征在通道维度上具有相同的均值和方差,从而提高模型的泛化能力。另外,批归一化还可以减少梯度消失或梯度爆炸等问题,在训练深度神经网络时比较常用。

Layer Normalization

和 Batch Normalization(BN)不同,它归一化的是每个样本在通道维度上的特征值。具体计算过程如下:

设输入张量 x x x 的形状为 B × C × H × W B\times C\times H\times W B×C×H×W,其中 B B B 表示 batch_size, C C C 表示通道数, H H H W W W 表示高度和宽度。

  1. 计算平均值和方差

首先,对于每个样本单独计算其在通道维度上的特征值的平均值和方差。令 x b , c , h , w x_{b,c,h,w} xb,c,h,w 表示第 b b b 个样本、第 c c c 个通道、第 h h h 行、第 w w w 列的特征值,则有:

μ c = 1 H W ∑ b = 1 B ∑ h = 1 H ∑ w = 1 W x b , c , h , w \mu_c = \frac{1}{HW}\sum_{b=1}^{B}\sum_{h=1}^{H}\sum_{w=1}^{W} x_{b,c,h,w} μc=HW1b=1Bh=1Hw=1Wxb,c,h,w
σ c 2 = 1 H W ∑ b = 1 B ∑ h = 1 H ∑ w = 1 W ( x b , c , h , w − μ c ) 2 + ϵ \sigma_c^2 = \frac{1}{HW}\sum_{b=1}^{B}\sum_{h=1}^{H}\sum_{w=1}^{W}(x_{b,c,h,w}-\mu_c)^2+\epsilon σc2=HW1b=1Bh=1Hw=1W(xb,c,h,wμc)2+ϵ

其中 μ c \mu_c μc 表示第 c c c 个通道的平均值, σ c 2 \sigma_c^2 σc2 表示第 c c c 个通道的方差, ϵ \epsilon ϵ 是一个极小的正数,用于防止除 0 错误。

  1. 归一化

然后,对于每个样本的第 c c c 个通道上的特征值 x b , c , h , w x_{b,c,h,w} xb,c,h,w,进行如下计算:

x ^ b , c , h , w = x b , c , h , w − μ c σ c 2 \hat{x}_{b,c,h,w} = \frac{x_{b,c,h,w}-\mu_c}{\sqrt{\sigma_c^2}} x^b,c,h,w=σc2 xb,c,h,wμc

其中 x ^ b , c , h , w \hat{x}_{b,c,h,w} x^b,c,h,w 表示归一化后的特征值。

  1. 可学习缩放和平移

最后,为了保留网络的表达能力,在归一化后的特征值上加入可学习的缩放和偏移参数,使得网络可以自由地调整每个通道的表示范围。令 γ c \gamma_c γc β c \beta_c βc 分别表示第 c c c 个通道的缩放因子和偏移量,则有:

y b , c , h , w = γ c x ^ b , c , h , w + β c y_{b,c,h,w} = \gamma_c \hat{x}_{b,c,h,w} + \beta_c yb,c,h,w=γcx^b,c,h,w+βc

其中 y b , c , h , w y_{b,c,h,w} yb,c,h,w 表示经过 LN 归一化后再加入缩放和偏移因子的结果。

需要注意的是,与 BN 相比,LN 对 batch_size 的大小不敏感,适用于不同大小的 batch_size。此外,由于 LN 在通道维度上进行归一化,因此对卷积层和全连接层都适用。但与 BN 相比,LN 的计算开销较大,因此在实际应用中需要权衡计算效率和模型表达能力的平衡。

Instance Normalization

该方法归一化的是每个样本在通道和空间维度上的特征值。具体计算过程如下:

设输入张量 x x x 的形状为 B × C × H × W B\times C\times H\times W B×C×H×W,其中 B B B 表示 batch_size, C C C 表示通道数, H H H W W W 表示高度和宽度。

  1. 计算平均值和方差

对于每个样本单独计算其在通道和空间维度上的特征值的平均值和方差。令 x b , c , h , w x_{b,c,h,w} xb,c,h,w 表示第 b b b 个样本、第 c c c 个通道、第 h h h 行、第 w w w 列的特征值,则有:

μ b , c = 1 H W ∑ h = 1 H ∑ w = 1 W x b , c , h , w \mu_{b,c} = \frac{1}{HW}\sum_{h=1}^{H}\sum_{w=1}^{W} x_{b,c,h,w} μb,c=HW1h=1Hw=1Wxb,c,h,w
σ b , c 2 = 1 H W ∑ h = 1 H ∑ w = 1 W ( x b , c , h , w − μ b , c ) 2 + ϵ \sigma_{b,c}^2 = \frac{1}{HW}\sum_{h=1}^{H}\sum_{w=1}^{W}(x_{b,c,h,w}-\mu_{b,c})^2+\epsilon σb,c2=HW1h=1Hw=1W(xb,c,h,wμb,c)2+ϵ

其中 μ b , c \mu_{b,c} μb,c 表示第 b b b 个样本、第 c c c 个通道上的平均值, σ b , c 2 \sigma_{b,c}^2 σb,c2 表示第 b b b 个样本、第 c c c 个通道上的方差, ϵ \epsilon ϵ 是一个极小的正数,用于防止除 0 错误。

  1. 归一化

然后,对于每个样本的第 b b b 个样本、第 c c c 个通道、第 h h h 行、第 w w w 列的特征值 x b , c , h , w x_{b,c,h,w} xb,c,h,w,进行如下计算:

x ^ b , c , h , w = x b , c , h , w − μ b , c σ b , c 2 \hat{x}_{b,c,h,w} = \frac{x_{b,c,h,w}-\mu_{b,c}}{\sqrt{\sigma_{b,c}^2}} x^b,c,h,w=σb,c2 xb,c,h,wμb,c

其中 x ^ b , c , h , w \hat{x}_{b,c,h,w} x^b,c,h,w 表示归一化后的特征值。

  1. 可学习缩放和平移

最后,为了保留网络的表达能力,在归一化后的特征值上加入可学习的缩放和偏移参数,使得网络可以自由地调整每个通道和空间位置的表示范围。令 γ c \gamma_c γc β c \beta_c βc 分别表示第 c c c 个通道的缩放因子和偏移量,则有:

y b , c , h , w = γ c x ^ b , c , h , w + β c y_{b,c,h,w} = \gamma_c \hat{x}_{b,c,h,w} + \beta_c yb,c,h,w=γcx^b,c,h,w+βc

其中 y b , c , h , w y_{b,c,h,w} yb,c,h,w 表示经过 IN 归一化后再加入缩放和偏移因子的结果。

需要注意的是,与 BN 和 LN 相比,IN 对 batch_size 大小不敏感,且更加适用于图像生成等任务,因为它考虑了每个样本在空间维度上的特征值。

Spectral Normalization

一种用于神经网络权重的归一化方法,用来提高模型的泛化能力。谱归一化层主要应用于卷积神经网络中的卷积层、全连接层等参数较多的模型中。

在传统的神经网络中,权重矩阵不具有唯一性,不同权重矩阵可能会导致相同的输出结果。这意味着输入会被映射到不同的空间中,从而导致过拟合等问题。为了解决这个问题,谱归一化通过将每个权重矩阵的范数进行约束,使得每个输入样本都能够被映射到相同的空间中,增强了模型的泛化能力。

具体而言,在卷积层或全连接层中,谱归一化层会对权重矩阵进行奇异值分解,然后将矩阵的谱范数归一化为 1,从而保证每个输入样本都能够被映射到相同的空间中。

SN 计算过程如下:

给定一个 m × n m\times n m×n 的实数矩阵 W W W,要计算其谱范数 σ ( W ) \sigma(W) σ(W),其中 σ ( W ) \sigma(W) σ(W) 等价于矩阵 W W W 的最大奇异值。

  1. 对矩阵 W W W 进行 SVD(奇异值分解),得到 W = U Σ V T W=U\Sigma V^T W=UΣVT

  2. 计算矩阵 W W W 的谱范数 σ ( W ) \sigma(W) σ(W) σ ( W ) = ∥ W ∥ 2 = max ⁡ ∥ x ∥ = 1 ∥ W x ∥ 2 = σ 1 \sigma(W) = \|\mathbf{W}\|_2 = \max\limits_{\|\boldsymbol{x}\|=1} \|\mathbf{Wx}\|_2=\sigma_1 σ(W)=W2=x=1maxWx2=σ1,其中 σ 1 \sigma_1 σ1 是矩阵 W W W 的最大奇异值。

  3. 将矩阵 W W W 归一化: W ~ = W σ ( W ) \tilde{\mathbf{W}} = \dfrac{\mathbf{W}}{\sigma(W)} W~=σ(W)W

对于神经网络中的每一层,将其权重矩阵 W W W 进行谱范数归一化即可: W ~ = W σ ( W ) \tilde{\mathbf{W}} = \dfrac{\mathbf{W}}{\sigma(\mathbf{W})} W~=σ(W)W。这样能够提高模型的鲁棒性和泛化能力,减少过拟合现象。

需要注意的是,在实际应用中,由于奇异值分解比较耗时,谱归一化层通常只在训练时使用,而在测试时直接使用原始权重矩阵进行计算。此外,在实现谱归一化层时,还需要考虑数值稳定性等问题,例如加入一个极小的扰动以避免除以零等情况。

总结

BN(Batch Normalization)、LN(Layer Normalization)和IN(Instance Normalization)与SN(Spectral Normalization)都是归一化方法,但它们的作用对象和计算方式略有不同。

1. BN:适用于批量数据

BN 的计算是在每个 mini-batch 中进行的,主要作用是对 mini-batch 中的输入数据进行标准化,使其均值为 0,方差为 1。这样可以缓解梯度消失问题,加速收敛,并且能够对抗 covariate shift 现象,提高模型的泛化性能。

2. LN:适用于 RNN 等序列数据

LN 主要用于对一维序列数据进行标准化,例如时间序列或自然语言处理中的 RNN 模型。LN 的计算是针对每个样本的所有特征维度进行的,目的是保证在每个时间步上,不同特征的输出具有相同的分布,进而帮助模型更好地学习长期依赖关系。

3. IN:适用于图像数据中的通道维度

IN 则主要用于对图像数据的通道维度进行标准化。在图像生成、风格迁移等任务中,IN 能够较好地保持图像的色调、亮度等信息,从而生成更真实、自然的图像。

4. SN:适用于神经网络权重的归一化

SN 主要应用于神经网络权重的归一化,目的是提高模型的泛化能力,并减少过拟合。SN 通过对权重矩阵进行奇异值分解,将谱范数归一化为 1,增强了模型的鲁棒性和泛化能力。

因此,BN、LN、IN、SN 在计算对象和计算方式上略有不同,但它们的目标都是通过数据的标准化来提高模型的泛化能力和训练效果。需要根据具体任务和数据类型来选择适合的归一化方法。

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值