Layer Normalization

为什么需要 LN?

LN 的提出是为了解决应用 BN 时遇到的部分缺点:① 当 Batch size 小时不能使用 BN ② BN 不能用在 RNN 中

同样的,LN 也能够在某种程度上缓解 ICS 的问题

LN 是怎么做的

和 BN 相比,LN 同样包含两个步骤

Step 1: 数据归一化。沿着 维度计算

Step 2: 对归一化的数据进行转换。同样引入两个可学习的参数

如何计算 ? 假设输入的是图像数据,每个 batch 中的特征图尺寸为 ,即一个 batch 中有 个样本。那么 LN 实际上就是针对每个样本做归一化,对于第 个样本有

\begin{aligned} \mu=&\frac{1}{CHW}\sum_i^{CHW}x_i\\ \sigma^2=&\frac{1}{CHW}\sum_i^{CHW}(x_i-\mu)^2 \end{aligned}$$ #### 测试阶段怎么使用 LN? 由于 LN 与 Batch size 无关,因此测试时直接计算每个样本的均值方差即可。即 LN 中除了 $\gamma$ 和 $\beta$ 以外不需要在保留其他的信息。 ## LN 放在那里? 替换 BN 的位置即可。 ## 什么时候不能用 LN 这里我也不知道什么时候不能用 LN,换一种说法。 在NLP任务中,LN会比BN更好,更合适。 ## LN 与 BN 的区别 [[LN-区别-BN]] --- 参考资料 - [LayerNorm — PyTorch 1.12 documentation](https://pytorch.org/docs/stable/generated/torch.nn.LayerNorm.html) - [详解Layer Normalization和Batch Normalization - 知乎 (zhihu.com)](https://zhuanlan.zhihu.com/p/539825770) - [论文笔记 | Layer Normalization - 知乎 (zhihu.com)](https://zhuanlan.zhihu.com/p/469344809) - [模型优化之Layer Normalization - 知乎 (zhihu.com)](https://zhuanlan.zhihu.com/p/54530247)