一文详解BN、LN、IN、GN四种正则化方式
前言
楼主前段时间真的是很巧,在面试阿里和大疆的图像算法时。在提及我对网络架构进行修改的时候,都是提到了我在U-Net的网络里添加了Batch Normalization这样的批量归一化方式。面试官都让我解释了什么是BN,并且阿里的面试官问我你知道Instance Normalization吗?大疆的面试官问我,你知道Layer Normalization吗?
我当时真的就愣住了,第一次被问道这样的问题。这两个术语我还反复和面试官确认了一下。今天这里就把它总结出来,并且着重的介绍一下我们的Batch Normalization。
批量归一化-BN(Batch-Normalization)
mini-batch 梯度下降法
我们必须得从mini-batch介绍起,因为这是下一步理解Batch Normalization中Batch所代表的具体含义的知识基础。
所谓的mini-batch是指从训练数据全集中随机选择一个训练数据子集。假设我们的训练数据集包含10000个样本,每个mini-batch的batch-size为10。那么我们的训练集合可以分为1000个mini-batch。跑完一个mini-batch的实例,叫做完成训练的one step,跑完1000个mini-batch(训练集遍历一遍)叫做one epoch.
在使用单个训练数据的情况,梯度下降的方向仅有这单个例子所决定。而在mini-batch中,batch内所有的训练实例共同决定了本次参数更新的梯度方向。处理方式为这个batch内的梯度方向求均值,再用这个均值代入优化算法中实现参数模型更新。
Mini-Batch内的每个实