神经网络的关键——优化器你怎么用?两个常规操作
点击上方“关注”,All in AI中国
1.引言
大部分超参数都可以用来优化神经网络的性能。但并不是所有超参数都能"担此重任"。优化神经网络性能需要选择合适的优化器。而本文将为你带来两个最常用的优化器。
2.梯度下降优化器
梯度下降可能是最流行、最广泛的优化器。它是一种简单有效的神经网络优化方法。所有优化器的目标都是使成本函数达到最小值的情况下同时达到全局最小值。如果你想构建一个三维的成本函数,它将类似于下图所示。
每一次我们找到梯度,更新权值和偏差值时,我们就更接近最优值。在我们开始训练神经网络之前,我们的成本会很高,就好比上图所示的A点。通过神经网络的每一次迭代训练,成本会逐步降低,并接近上图中B点所表示的全局最小值。下图将提供一个更直观的解答,帮助我们训练以达到全局最小值。
我们的成本函数并不总是像上图像所描述的那样"平滑"。很多时候,这些成本函数是非凸的。非凸函数带来的问题是,你有可能会陷入局部最小值,而不会收敛到全局最小值。如下图所示。
从上面的图像中可以看到,图中有两个最小值,其中只有一个是全局最小值。我们的神经网络很有可能会错过全局最小值,而收敛到局部最小值。限制网络收敛的方法有:改变学习率或使用动量等。
3.学习率
学习率是梯度下降中不可缺少的部分,也是其他优化器的重要因素。让我们用一个类比来更好地解释学习率。假设成本函数是一个坑,你从坑顶开始,你的目标是到达坑的底部。你可以把学习率看作你要到达底部采取的步骤。如果你选择一个很大的值作为学习率,你就必须对权值和偏差值进行较大的改变。也就是说,你会直接"跳到"底部。
还有一种可能性,你将超越全局最小值(即底部),最终进入坑的另一边。很明显,有了过高的学习率,你就无法收敛到全局最小值,而是在全局最小值附近"徘徊"。如果你选择一个较小值作为学习率,你的算法会需要更长的时间收敛。也就是说你会"小步慢跑"到底部。另外,如果成本函数是非凸的,那么你的算法可能会陷入局部最小值。学习率的选择没有诀窍,你得根据实验和直觉进行选择。
4.动量梯度下降
通常情况下,动量梯度下降算法比标准梯度下降算法收敛速度更快。在标准梯度下降算法中,你需要在某个方向上采取较大的步,而在另一个方向上采取较小的步,这无疑会减缓算法的速度。
在下面所示的图像中,你可以看到标准梯度下降在y方向上采取更大的步,在x方向上采取更小的步。这时候,你或许会想如果我们的算法能够减少在y方向上所采取的步,并将步的方向集中在x方向,我们的算法就会很快收敛。
而这也正是动量梯度下降算法的优势之处。它限制了一个方向的振荡,这样我们的算法就能更快地收敛。而且,由于y方向上步的数量有限,我们可以设置较高的学习率。
5.RMSprop优化器
RMSprop优化器的原理类似于动量梯度下降算法。RMSprop优化器限制了垂直方向上的振荡,使我们的算法可以在水平方向上采取更大的步,进行更快地收敛。RMSprop优化器和梯度下降优化器的区别主要在于它们的计算方法。下面是关于RMSprop优化器和动量梯度下降算法的方程(动量的值用beta表示,通常设置为0.9)。
有时候v_dw的值可能会非常接近0,我们的权值可能会"爆炸"。为了防止梯度上升,我们在分母中加入了一个参数"ε"。
6.结语
优化器是神经网络的关键部分,了解它们的原理将有助于你的工作。