1

Batch Normalization

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

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

    $$ \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} $$

    $$ \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 $$

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

    $$ \hat{X}_{i,c,j,k} = \frac{X_{i,c,j,k} - \mu_c}{\sqrt{\sigma_c^2 + \epsilon}} $$

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

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

    $$ Y_{i,c,j,k} = \gamma_c \hat{X}_{i,c,j,k} + \beta_c $$

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

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

Layer Normalization

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

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

  1. 计算平均值和方差

首先,对于每个样本单独计算其在通道维度上的特征值的平均值和方差。令 \(x_{b,c,h,w}\) 表示第 \(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}$$
$$\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$$

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

  1. 归一化

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

$$\hat{x}_{b,c,h,w} = \frac{x_{b,c,h,w}-\mu_c}{\sqrt{\sigma_c^2}}$$

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

  1. 可学习缩放和平移

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

$$y_{b,c,h,w} = \gamma_c \hat{x}_{b,c,h,w} + \beta_c$$

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

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

Instance Normalization(IN)

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

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

  1. 计算平均值和方差

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

$$\mu_{b,c} = \frac{1}{HW}\sum_{h=1}^{H}\sum_{w=1}^{W} x_{b,c,h,w}$$
$$\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$$

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

  1. 归一化

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

$$\hat{x}_{b,c,h,w} = \frac{x_{b,c,h,w}-\mu_{b,c}}{\sqrt{\sigma_{b,c}^2}}$$

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

  1. 可学习缩放和平移

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

$$y_{b,c,h,w} = \gamma_c \hat{x}_{b,c,h,w} + \beta_c$$

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

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

本文参与了SegmentFault 思否写作挑战赛,欢迎正在阅读的你也加入。


fighting
4 声望0 粉丝