区分不同的归一化方法,批归一化、层归一化、实例归一化、组归一化

一、Batch Normalization(批归一化)

1、工作原理

        Batch Normalization在训练过程中对每个小批量数据进行归一化。具体来说,它对每个小批量中的每一个特征(即通道)计算均值和方差,然后对数据进行归一化处理。

2、公式

        对于给定的小批量数据 \( \mathbf{B} = \{x_1, x_2, \dots, x_m\} \),其中 \( m \) 是批量大小,批归一化的计算公式为:

\[ \mu_\mathbf{B} = \frac{1}{m} \sum_{i=1}^m x_i \]
\[ \sigma_\mathbf{B}^2 = \frac{1}{m} \sum_{i=1}^m (x_i - \mu_\mathbf{B})^2 \]
\[ \hat{x}_i = \frac{x_i - \mu_\mathbf{B}}{\sqrt{\sigma_\mathbf{B}^2 + \epsilon}} \]
\[ y_i = \gamma \hat{x}_i + \beta \]

其中,\(\gamma\) 和 \(\beta\) 是可训练参数,\(\epsilon\) 是防止除零的小常数。

3、优缺点

优点:加速收敛、减轻梯度消失和梯度爆炸问题、提高泛化能力。
缺点:对小批量数据或批量大小变化敏感,在训练和推理阶段表现不一致。

二、Layer Normalization(层归一化)

1、工作原理

        Layer Normalization对每个样本的特征维度进行归一化,适用于RNN等对批量大小敏感的模型。它对每个样本的所有特征计算均值和方差。

2、公式

        对于给定的输入 \( x \) ,其维度为 \( (N, L) \),其中 \( N \) 是批量大小, \( L \) 是特征维度。层归一化的计算公式为:

\[ \mu = \frac{1}{L} \sum_{j=1}^L x_{ij} \]
\[ \sigma^2 = \frac{1}{L} \sum_{j=1}^L (x_{ij} - \mu)^2 \]
\[ \hat{x}_{ij} = \frac{x_{ij} - \mu}{\sqrt{\sigma^2 + \epsilon}} \]
\[ y_{ij} = \gamma \hat{x}_{ij} + \beta \]

其中,\(\gamma\) 和 \(\beta\) 是可训练参数,\(\epsilon\) 是防止除零的小常数。

3、优缺点

优点:适用于RNN,批量大小灵活。
缺点:在CNN中效果不如Batch Normalization。

三、 Instance Normalization(实例归一化)

1、工作原理

        Instance Normalization在风格迁移等任务中常用,它对每个样本的每个特征通道分别进行归一化。

2、公式

        对于输入 \( x \) ,其维度为 \( (N, C, H, W) \),其中 \( N \) 是批量大小, \( C \) 是通道数, \( H \) 和 \( W \) 是空间维度。实例归一化的计算公式为:

\[ \mu_{ic} = \frac{1}{HW} \sum_{h=1}^H \sum_{w=1}^W x_{ic}^{hw} \]
\[ \sigma_{ic}^2 = \frac{1}{HW} \sum_{h=1}^H \sum_{w=1}^W (x_{ic}^{hw} - \mu_{ic})^2 \]
\[ \hat{x}_{ic}^{hw} = \frac{x_{ic}^{hw} - \mu_{ic}}{\sqrt{\sigma_{ic}^2 + \epsilon}} \]
\[ y_{ic}^{hw} = \gamma_{ic} \hat{x}_{ic}^{hw} + \beta_{ic} \]

其中,\(\gamma\) 和 \(\beta\) 是可训练参数,\(\epsilon\) 是防止除零的小常数。

四、Group Normalization(组归一化)

1、工作原理

        Group Normalization将通道分成多个组,每个组内部进行归一化。适用于小批量训练,解决了Batch Normalization对小批量数据不稳定的问题。

2、公式

        对于输入 \( x \) ,其维度为 \( (N, C, H, W) \),将通道数 \( C \) 分成 \( G \) 组,每组有 \( C / G \) 个通道。组归一化的计算公式为:

\[ \mu_{ig} = \frac{1}{|G|} \sum_{j \in G_i} x_{ij} \]
\[ \sigma_{ig}^2 = \frac{1}{|G|} \sum_{j \in G_i} (x_{ij} - \mu_{ig})^2 \]
\[ \hat{x}_{ij} = \frac{x_{ij} - \mu_{ig}}{\sqrt{\sigma_{ig}^2 + \epsilon}} \]
\[ y_{ij} = \gamma_{ij} \hat{x}_{ij} + \beta_{ij} \]

其中,\(\gamma\) 和 \(\beta\) 是可训练参数,\(\epsilon\) 是防止除零的小常数。

五、不同归一化方法的比较与应用场景

方法归一化维度应用场景优点缺点
Batch Normalization小批量数据的特征维度CNN、大规模批量训练加速收敛、提高稳定性对小批量数据不稳定、训练和推理不一致
Layer Normalization每个样本的特征维度RNN、小批量数据对批量大小不敏感、适用于RNN在CNN中效果不如Batch Normalization
Instance Normalization每个样本的每个特征通道风格迁移、图像生成适用于图像生成任务在其他任务中效果不佳
Group Normalization每个样本的每个特征通道分组小批量训练、各种任务对小批量数据稳定、适用于各种任务需要调参(组数)

 

六、总结

        不同的归一化方法适用于不同的应用场景和模型结构。Batch Normalization适用于大规模批量训练的CNN,Layer Normalization适用于RNN和小批量训练,Instance Normalization常用于风格迁移任务,而Group Normalization则提供了一种在各种任务中对小批量数据也能稳定有效的归一化方法。在实际应用中,选择适合的归一化方法可以显著提高模型的性能和训练效率。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值