关于Normalization的思考
Normalization
1 Introduction
一个困扰了我很久的问题: 为什么在训练的时候加normalization(一般)效果会更好,但是在测试的时候不用加?
于是我决定在最近把我之前没有搞清楚的问题都整理成一篇文章,再加上必要的实验。
为了使得问题更加具体,我们可以考虑手写数字识别任务,利用卷积或者多层感知机作为backbone.
2 Batch Normalization
要对这个问题进行分析,我们首先需要简化问题,我们只用考虑到多层感知机和多层卷积构成的模型即可。 (在实现上,多层感知机是卷积的一种情况)
除此之外,我们可以转化问题:
- 为什么在图片识别的时候,我们对像素值进行归一化
- 像素值的归一化和中间隐藏特征的归一化有没有一致性
2.1 没有Normalization的情况
考虑一个线性层,权重为
因此有前向过程:
损失函数:
在这种情况下,
2.1.1 输入的归一化是否有收敛上的好处
为此我们可以构造一个数据集
分别取
3 Layer Normalization
4 Group Normalization
5 Adaptive Normalization
6 Summary
- 什么时候应该用什么样的normalization