WhiteDLG's

选择性批归一化(Selective Batch Normalization, SBN)

2024-05-20 Deep Learning SBN / Batch Norm

下面来详细解析选择性批归一化(Selective Batch Normalization, SBN)涉及的公式,并对每个参数符号进行解释。

为了帮助你更清晰地理解,我们将标准批归一化(Standard BN)和**选择性批归一化(SBN)**的公式进行对比讲解。


1. 标准 BN 的问题回顾

在标准BN中,对于一个包含 $n$ 张图像的混合 Batch(既有干净也有损坏),其特征 $\tilde{x}$ 的归一化过程是统一的:

$$ \tilde{x} = \gamma \cdot \frac{\tilde{x} - \mu_{\mathcal{B}}}{\sqrt{\sigma_{\mathcal{B}}^2 + \epsilon}} + \beta $$

这里的 $\mu_{\mathcal{B}}$ 和 $\sigma_{\mathcal{B}}^2$ 是所有图像(干净+损坏)混在一起计算出来的。这正是问题的根源——损坏图像污染了统计量。

2. 选择性 BN 的公式解析

为了解决上述问题,论文提出了选择性批归一化(SBN)。它在计算归一化统计量时,根据输入图像的来源(干净或某种特定损坏)进行了选择

论文中的公式如下:

$$ \tilde{x} = \gamma \cdot \frac{\tilde{x} - E[\mathcal{X}_C^b]}{\sqrt{Var[\mathcal{X}_C^b] + \epsilon}} + \beta, \quad x \in \mathcal{X}_C^b $$ $$ \tilde{x} = \gamma \cdot \frac{\tilde{x} - E[\mathcal{X}_j^b]}{\sqrt{Var[\mathcal{X}_j^b] + \epsilon}} + \beta, \quad x \in \mathcal{X}_j^b $$

参数符号详解

1. 核心变量 $x$ 与 $\tilde{x}$
  • $x$:输入图像。
  • $\tilde{x}$特征。指图像 $x$ 在经过卷积层后、尚未进入分类器之前的特征图。
2. 数据集符号(关键理解点)
  • $\mathcal{X}^b$:代表当前正在处理的这一个 Mini-Batch(小批量) 中的所有数据。
  • $\mathcal{X}_C^b$:代表当前 Mini-Batch 中干净图像的集合。这里的上标 $b$ 表示“属于当前这个 Batch”,下标 $C$ 表示“Clean(干净)”。
  • $\mathcal{X}_j^b$:代表当前 Mini-Batch 中经过第 $j$ 种损坏的图像集合。下标 $j$ 表示第 $j$ 种损坏类型(例如噪声 $j=1$,模糊 $j=2$)。
3. 统计量符号
  • $E[\mathcal{X}_C^b]$干净图像集合的均值。它只计算当前 Batch 中那些干净图像的特征 $\tilde{x}$ 的平均值。
  • $Var[\mathcal{X}_C^b]$干净图像集合的方差。只计算干净图像的特征的方差。
  • $E[\mathcal{X}_j^b]$$Var[\mathcal{X}_j^b]$:分别指针对第 $j$ 种损坏图像计算的特征均值和方差。
  • $\epsilon$:一个极小的常数(例如 $10^{-5}$),防止分母为零,保证数值稳定性。
4. 可学习参数
  • $\gamma$ (Gamma)缩放参数。这是BN层固有的可学习参数,用于恢复模型的表达能力。归一化后的数据分布会被限制,$\gamma$ 可以放大或缩小它。
  • $\beta$ (Beta)平移参数。这也是可学习参数,用于对归一化后的数据进行偏移。

3. 选择性 BN 的更新规则

除了前向计算,BN 还需要维护全局的统计量(供推理时使用)。论文对此也做了选择性处理。

传统BN的更新(含污染数据):

$$ \mu \leftarrow \frac{1}{n}\sum_{i=1}^{n}x, \quad x \in \mathcal{X}^b $$

选择性BN的更新(只选干净数据):

$$ \mu \leftarrow \frac{1}{n}\sum_{i=1}^{n}x, \quad x \in \mathcal{X}_C^b $$ $$ \sigma^2 \leftarrow \frac{1}{n}\sum_{i=1}^{n}(x - \mu)^2, \quad x \in \mathcal{X}_C^b $$

参数符号解释(更新规则)

  • $\mu$$\sigma^2$:这是 BN 层最终学习到的全局均值全局方差,用于推理阶段。在选择性BN中,它们只由干净图像 ($\mathcal{X}_C^b$) 来更新。
  • $n = |\mathcal{X}_C^b|$:表示当前 Batch 中干净图像的数量。
  • 箭头 ($\leftarrow$):表示更新操作,通常通过滑动平均的方式(如 $\mu \leftarrow momentum \cdot \mu + (1-momentum) \cdot \mu_{batch}$)实现。

总结

选择性BN的本质是通过数据来源选择不同的归一化路径

  1. 前向计算时:如果 $x$ 是干净的,就减去干净均值 $E[\mathcal{X}_C^b]$;如果 $x$ 是噪声损坏的,就减去噪声均值 $E[\mathcal{X}_j^b]$。
  2. 统计量更新时:只使用干净数据 $x \in \mathcal{X}_C^b$ 来更新用于最终推理的全局参数。

这样设计的结果是:主分类器在训练和推理时始终面对的是符合“干净数据分布”的特征,从而保证了精度。