WhiteDLG's

BN

2026-01-20 Deep Learning 1,240 Views

BN 是 Batch Normalization(批归一化)的缩写。它是深度学习中一种非常基础和常用的技术,旨在解决训练过程中神经网络内部协变量偏移 (Internal Covariate Shift) 的问题,从而加速和稳定训练。

1. BN 的核心思想

在神经网络训练时,每一层的输入分布会随着前一层参数的更新而发生变化,这导致训练变得困难,需要更小的学习率和更谨慎的参数初始化。BN 通过对每一层的输入进行归一化,强制使其分布稳定下来。

2. BN 的具体做法

对于一个 mini-batch 的数据 $\mathcal{B} = \{x_1, x_2, \dots, x_m\}$,BN 执行以下步骤:

1. 计算均值和方差:

$$ \mu_{\mathcal{B}} = \frac{1}{m} \sum_{i=1}^{m} x_i, \quad \sigma_{\mathcal{B}}^2 = \frac{1}{m} \sum_{i=1}^{m} (x_i - \mu_{\mathcal{B}})^2 $$

2. 归一化:

$$ \hat{x}_i = \frac{x_i - \mu_{\mathcal{B}}}{\sqrt{\sigma_{\mathcal{B}}^2 + \epsilon}} $$

其中 $\epsilon$ 是一个很小的常数,防止除零。

3. 缩放和平移:

$$ y_i = \gamma \hat{x}_i + \beta $$

这里的 $\gamma$ 和 $\beta$ 是可学习的参数,用于恢复网络的表达能力,因为单纯归一化可能会限制模型能表示的数据范围。

  Tags: Deep Learning, Optimization, Batch Normalization