深度学习中的Normalization
本文最后更新于:2022年7月21日 下午
深度学习中的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就没有关系了。
参考文献:
本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!