神经网络为什么要归一化?

 

 

   关于神经网络归一化问题,在神经网络为什么要归一化和深度学习(二十九)Batch Normalization 学习笔记这两篇文章已经介绍的非常清楚了。

 

    在这里,我简单说下自己的直观理解:由于数据的分布不同,必然会导致每一维的梯度下降不同,使用同一个learning rate 也就很难迭代到代价函数最低点。经过归一化(正则化)处理后,代价函数变得“更圆”,也就很容易进行梯度下降。

    深入了解神经网络为什么要进行归一化,请参考上面两篇博文。

 

------------------------------------------------------------------------------------------------------------------------------------------------------------------

2019年1月16日更新

       二刷吴恩达博士的《深度学习》时,对batch-normal有了更深的认识,除了上文提到的使代价函数“更圆”的说法外,还有另一种直观认识:通过对隐藏单元的输入进行bn操作(先进行归一化,再进行线性变换),使得隐藏单元的输入数据分布大致相同(每个batch数据的均值和方差基本一样),从而使网络更好地拟合目标,收敛速度加快。

      由于训练过程中,是在batch级别上进行的归一化操作,在计算均值和方差时引入了一些噪音,从而使模型的泛化性更强,因此bn还起到了正则项的作用。另外,使用bn得到的模型,在应用到测试集上时,一般采用指数加权平均来计算测试数据的平均值和方差。

 

你可能感兴趣的:(深度学习)