每日一问01
Questrion:Batch Normalization 的作用是什么?
我相信很多小伙伴都听说过批量归一化处理(Batch Normalization),但是!!!
你知道为什么要进行Batch Normalization嘛?——First blood
你知道他主要应用到卷积神经网络的什么地方法嘛?——duoble kill
你知道Batch Normalization是怎么操作的嘛?——triple kill
你知道Batch Normalization之后的效果是什么嘛?——Quadra kill
你知道嘛?你知道嘛?你知道嘛?——Penta kill
据我所知,Batch Normalization一般用于卷积层之后激活函数之前。
神经网络在训练的时候随着网络层数的加深,激活函数输入值的整体分布逐渐往激活函数的取值区间上下限靠近,从而导致在反向传播时底层的神经网络的梯度消失。
而Batch Normalization的作用是通过规范化的手段,将越来越偏的分布拉回到标准化的分布,使得激活函数的输入值落在激活函数对输入值比较敏感的区域,从而使梯度变大,加快学习收敛速度,避免梯度消失的问题。
BN的操作如下图所示:
输入的是batch-size为m的小批量数据,其中还有两个要训练的参数
BN主要分为四步:
1.首先计算一个batch-size中所有样本的均值;
2.计算一个batch-size中所有样本的方差;
3.将均值和方差输入标准化公式进行标准化处理,得到新的xi;
4.将新的xi进行一次线性变换得到yi,yi即标准化处理后的输出值。