选自 Towards Data Science
机器之心编译
作者:Piotr Skalski
参与:张玺、路
加强对神经网络内部运行流程的理解有助于研究者和开发者训练神经网络。本文作者 Piotr Skalski 撰写了一系列文章介绍神经网络的奥秘,本文就是其中一篇,介绍了神经网络训练过程中的常见优化策略,并进行了分析和对比,包括梯度下降、小批量梯度下降、动量梯度下降、RMSProp、Adam 等。
沿途陷阱
结果证明,寻找非凸成本函数最小值通常不太容易,本文应用高级优化策略去定位最小值。如果你学过微积分,就一定知道局部极小值──优化器极易落入的最大陷阱之一。对于那些还不了解局部极小值之美的读者,我只能说局部极小值是给定区域内函数取最小值的点集。如上图左半部分所示,优化器定位的点并非是全局最优解。
而「鞍点」问题则被人们认为更具挑战性。当成本函数值几乎不再变化时,就会形成平原(plateau),如上图右半部分所示。在这些点上,任何方向的梯度都几乎为零,使得函数无法逃离该区域。
有时候,尤其是在多层网络中,我们必须处理成本函数的陡峭区域。陡峭区域中的梯度增长迅速(也就是梯度爆炸)会引起大步跃迁,通常会破坏先前的优化结果。不过,该问题可以通过梯度裁剪轻松解决。
梯度下降
在学习高级算法前,我们先来了解一些基本策略。最直接有效的方法之一是向函数上当前点对应梯度的反方向前进,公式如下:
超参数 α 表示学习率,代表算法每次迭代过程的前进步长。学习率的选择一定程度上代表了学习速度与结果准确率之间的权衡。选