深度学习中的Normalization

本文最后更新于:2021年12月8日 下午

深度学习中的Normalization

[TOC]

Normalization翻译为规范化或者归一化,不是标准化。

深度学习模型喜欢独立同分布的数据,独立n维特征中每一维之间都没有相关性,同分布即特征的每一维都具有相同的均值和方差。在深度学习网络中,因为网络很深,如果数据在某一层开始有偏移,则网络加深会导致其加剧(Internal Covariate Shift, or ICS),而Normalization能够减缓这个问题。

Batch Normalization

BN就是将一个batch内的数据进行归一化,先求得均值$\mu_B$和方差$\sigma_B^2$,然后对每个元素进行归一化:$x’_i=\frac{x_i-\mu_B}{\sqrt{\sigma^2_B+\epsilon}}$,下面那个$\epsilon$是防止除以0。

之后,使用可学习参数$\gamma_i,\beta_i$变换为原始的分布:$y_i=\gamma_i\cdot x’_i + \beta_i$。这一步是为了保证模型表达能力不因为Normalization而下降,变化后数据均值为$\beta$,方差为$\gamma^2$。

使用BN时,得注意batch小时这个方法效果可能不佳。

对于图片N C H W的维度,BN统计的是N H W的均值和方差,对于每一个通道分开计算。

Layer Normalization

对于图片N C H W的维度,LN统计的是C H W的均值和方差,和batch size就没有关系了。

参考文献:

详解深度学习中的Normalization,BN/LN/WN - 知乎 (zhihu.com)

深度学习中 Batch Normalization为什么效果好? - 知乎 (zhihu.com)