梯度下降的技巧和原理 |李宏毅机器学习【4】

在很多机器学习损失函数(Loss Function)最小化的计算中,梯度下降是一种适用范围广泛且效果稳定的方法。

梯度(Gradient):  函数对所有变量分别求偏导得到的vector,几何意义是Loss  function等高线的法线方向。梯度方向可以简单理解为函数上升最快的方向,负梯度方向就是函数下降最快的方向,所以利用梯度求函数最优值的方法就称作梯度下降法。

 梯度下降的技巧和原理 |李宏毅机器学习【4】

沿着梯度的反方向不断迭代,就可以得到使Loss更小的模型参数,但这个过程往往不是一帆风顺的。

梯度下降的技巧和原理 |李宏毅机器学习【4】

下面是使用Gradient Descent很实用的 3个Tip!

Tip 1: Tuning your learning rates 调整学习速率η

下方右图展示了η为偏大、偏小、恰好几种情况时,Loss减小的趋势。可以看到η偏小导致学习速度慢,η偏大则可能震荡导致无法收敛到最优解。

梯度下降的技巧和原理 |李宏毅机器学习【4】

设置自适应的学习速率(Adaptive Learning Rates):随着梯度下降迭代次数的增加,逐渐减小学习速率η,这是η在时间尺度上的变化。进一步,可以考虑针对不同参数设置不同的η。

 梯度下降的技巧和原理 |李宏毅机器学习【4】

 以下为Adagrad设置学习速率的方法,就是在梯度下降的技巧和原理 |李宏毅机器学习【4】基础上再除以梯度下降的技巧和原理 |李宏毅机器学习【4】,得到参数更新公式:梯度下降的技巧和原理 |李宏毅机器学习【4】。至于为什么要除以root mean square of its preivous derivatives这个东东,原教程有详细说明,这里不再赘述。简单来说,是因为它可以近似代表二阶导,而一阶导比上二阶导恰恰是最优步长。

梯度下降的技巧和原理 |李宏毅机器学习【4】  

梯度下降的技巧和原理 |李宏毅机器学习【4】

Tip2: Stochastic Gradient Descent (SGD)随机梯度下降

按照之前的Loss Function,每次迭代时,都需要把所有样本计算在内,因此时间开销也很大。而SGD中,每次更新参数只使用一个样本,这样就可以快速的完成训练过程。尽管SGD不是每次都朝着最优值的方向优化,但总体上还是会“曲折”地到达目的地。除了提升训练速度,SGD训练的不确定性还可以在一定程度上避免陷入local optimum。

 梯度下降的技巧和原理 |李宏毅机器学习【4】

 Tip 3: Feature Scaling 特征归一化、标准化

特征尺度不统一可能导致可能会“之字型”地下降,归一化有助于提高梯度下降的速度,降低学习任务的难度。

梯度下降的技巧和原理 |李宏毅机器学习【4】

梯度下降的技巧和原理 |李宏毅机器学习【4】

标准化的方法:

梯度下降的技巧和原理 |李宏毅机器学习【4】

知道Gradient Descent的常用技巧后,下面来看看其背后的数学原理。

首先,利用泰勒展开式,将Loss Function在点(a, b)处展开。因为只考虑(a, b)附近小红圈内的点,二阶导之后的项值都很小,所以只保留0阶导和1阶导的项。

 梯度下降的技巧和原理 |李宏毅机器学习【4】

 梯度下降的技巧和原理 |李宏毅机器学习【4】

此时,要使得loss最小,梯度下降的技巧和原理 |李宏毅机器学习【4】就应该和(u, v)反向(注:夹角90°时cos(v1,v2 )为0,180°cos(v1, v2)为最小值-1)。

重点来了!(u, v)是什么东东?不就是梯度吗,所以梯度反方向就是下降最快的方向~

 梯度下降的技巧和原理 |李宏毅机器学习【4】

梯度下降的技巧和原理 |李宏毅机器学习【4】

最后,来看一下梯度下降的limitation,就是容易陷入local minima,容易卡在saddle point,以及在plaeau上收敛非常慢。要解决这些问题,需要更加深入的学习,一起努力吧!

梯度下降的技巧和原理 |李宏毅机器学习【4】