参考博客:
参考一
为什么要归一化?
归一化有助于快速收敛;
详细解释:神经网络学习过程本质就是为了学习数据分布,一旦训练数据与测试数据的分布不同,那么网络的泛化能力也大大降低;另外一方面,一旦每批训练数据的分布各不相同(batch 梯度下降),那么网络就要在每次迭代都去学习适应不同的分布,这样将会大大降低网络的训练速度,这也正是为什么我们需要对数据都要做一个归一化预处理的原因。
深度网络的训练是复杂的过程,只要网络的前面几层发生微小的改变,那么后面几层就会被累积放大下去。一旦网络某一层的输入数据的分布发生改变,那么这一层网络就需要去适应学习这个新的数据分布,所以如果训练过程中,训练数据的分布一直在发生变化,那么将会影响网络的训练速度。
其它的解释:
LRN(2012)
- LRN(Local Response Normalization)首次提出于AlexNet,BN提出后被抛弃;
- 用于激活、池化后;
- 来源于神经生物学的侧抑制,被激活的神经元会抑制相邻神经元,使得其中响应比较大的值变得相对更大,并抑制其他反馈较小的神经元,增强了模型的泛化能力;
为什么BN不好?
- BN全名是Batch Normalization,以batch的维度做归一化,此归一化方式对batch是independent的,过小的batch size会导致其性能下降,作者实验发现一般来说每GPU上batch设为32最合适;但是对于一些其他深度学习任务batch size往往只有1-2,比如目标检测,图像分割,视频分类上,输入的图像数据很大,较大的batchsize显存吃不消
- Batch Normalization是在batch这个维度上Normalizatio