1. 批量归一化(Batch Normalization):为了让数据在训练过程中保持同一分布,在每一个隐藏层进行批量归一化。对于每一个batch,计算该batch的均值与方差,在将线性计算结果送入激活函数之前,先对计算结果进行批量归一化处理,即减均值、除标准差,保证计算结果符合均值为0,方差为1的标准正态分布,然后再将计算结果作为激活函数的输入值进行计算。
批量归一化的本质:对于每个隐层神经元,把逐渐向非线性函数映射后向取值区间极限饱和区靠拢的输入分布强制拉回到均值为0方差为1的标准正态分布,使得非线性变换函数的输入值落入对输入比较敏感的区域,以此避免梯度消失问题
公式:
均值与方差:是指在训练过程中,每一个批次(batch)的对应位置的均值和方差。训练过程中要分批次训练,划分batch和batch_size。
在训练过程中,计算一个批次中所有图片的每一个位置的元素的均值与方差,一张图片有多少个元素,就有多少个均值与方差。最后得到的均值和方差是用向量的形式表现的
例:一个batch有3个输入,每个输入是一个长度为4的向量
2. 批量归一化的运行:(训练过程中)
对于CNN,一般运算过程是:卷积 - 池化 - 批量归一化 - 激活函数
①输入ÿ