1.review gradient descent
2.tuning your learning rates
3.stochastic gradient descent
4.feature scaling
5.gradient descent theory
6.more limitation of gradient descent
1.review gradient descent
我们有如下的优化问题:
假设权重有两个变量,初始时,随机初始化这两个变量,在后面的每次迭代中计算损失函数关于这两个变量的梯度,计算这两个变量的新的值。下面计算了两次迭代得到的这两个变量的更新值。
对于上式中的即称为梯度,梯度是loss函数的等高线的法线,计算这两个变量的更新值是沿着梯度的反方向移动。可以将这些矩阵记为简单变量,将上面的式子记为如下式子:
2.tuning your learning rates
如1所述,权重的更新如下:
学习率对权重的更新有很大的影响,学习率太大会错过最优点此时loss虽然到达过最小点但是很快会错过,学习率太小根本达不到最优点,此时loss根本达不到最小点。如下图所示。
所以我们应该在学习率上做些文章以帮助更新合适的权重值。简单的方式就是在初始时设置较大的学习率,因为刚开始的时候loss离最小点还很远,然后随着迭代的增加给学习率乘以一个因子。同一个因子很难适合所有的权重,不同的权重应该有不同的调整因子,所以应该不同的参数使用不同的学习率。下面考虑自适应性学习率,接下来介绍adagrad优化器。adagrad的权重更新公式如下(是第t次的对权重的w的梯度):
上式的具体表示如下:
对adagrad权重更新公式的理解如下:
但是adagrad的权重更新公式是不是有些矛盾,如下是所示:
当当前迭代的梯度很大时会有大的跨步,当前面迭代的梯度值合很大时又会有较小的跨步。其实这样是为了能够检测比较大的梯度变化,实现反差的效果,如下图所示:
可以看到当当前迭代的梯度和之前迭代的梯度具有较大的差别时,adagrad会记住这种变化。比如当前迭代的梯度很大,但是之前迭代的梯度都很小时,其跨步最终会很大,从而让其记住了当前梯度忽然变大的这种情况。
对于loss函数,梯度的大小可以反应距离最小点的距离,所以当梯度较大时(其离最小点还很远),所以权重更新可以有较大的跨步,我们存在最好的更新步长Best step。如下图所示,当只考虑一个参数时,可以看到该参数的一阶导数越大,其离最小点越远。
但是当考虑多个参数时,一阶导数不能反应距离最小点的远近,这时候就需要考虑二阶导数,以两个参数为例,如下图所示
如上图所示,a比c距离最小点更远,但是a的一阶导数比c的一阶导师小,此时判断出错,所以考虑二阶导数,a的二阶导数小于c的二阶导数,如果让一阶导数除以二阶导数就可以反应与最小点之间的距离远近。如下图所示
可以注意到上图中Best step的2a刚好是二阶导数。
可以看到通过加入二阶导数的考虑可以正确反应距离最小点的距离,找到合适的Best step.
不过计算二阶导数会增加计算量,可以考虑会别的量来模拟二阶导数,adagrad使用之前迭代的梯度的平方根来模拟二阶导数的大小。如下图所示
随着迭代次数的增加会距离最小点越来越近,之前迭代的所有的梯度之和反应了二阶导数的大小。
3.Stochastic Gradient Descent
随机梯度下降每次只选择一个样本更新权重。训练速度更快
4.feature scaling
归一化使得具有不同范围取值的属性都变成同样的取值范围,如下图所示
如上图所示,当两个参数的取值范围有较大差别时,取值较小的参数的变化会被忽略,从而影响计算精度。另外归一化可以加快收敛速度,当没有归一化时,当使用梯度下降法求解最优解时,可能走之字形路线(沿着垂直于等高线走),从而导致需要迭代很多次才能收敛。当归一化之后,等高线看起来更圆,所以收敛所需的迭代次数更少。
归一化常用的方法,对于每个属性,计算该该属性下所有样本的均值和方差,将该属性归一化到均值为0,方差为1的值。如下图所示
5.gradient descent theory
在这部分对于梯度下降的理论做一个简单的分析。
我们利用梯度下降法求解的问题如下:
,给定一个点,我们可以在其附近找到一个使loss有最小值的点。如下图所示,怎么找到的呢?
考虑泰勒公式,函数do都可以使用泰勒公式表示,如下图:
当x接近x0时,就可以表示成一阶导数的表达式,可以看sin(x)的具体实例:
可以看到当x接近于pi/4时,不同阶数的泰勒展开式都相似
多变量时,泰勒公式也是如此:
接下来我们考虑loss函数的一阶泰勒展开式,如下图所示
上图中的红色表示在所给点的附近。我们要找L的最小值,其求最小值问题。可以转化成如下形式求解:
在对上面的式子化简,其中s是常数,我们要让L最小,其实就是要让(u,v)和(,)的向量积最小,进一步图下图所示:
要让两者的向量积最小,只需要让我们需要求解的点位于已知点的反方向即可,对于我们需要求解的点的长度,到达圆的边界即可。所以就可以算出,再将具体的数值带入得到以下结果:
即我们得到了梯度下降的公式,要让loss函数尽可能等于一阶泰勒展开式,我们需要让学习率尽可能小。
6. more limitation of gradient descent
通常我们很难找到最优点,因为鞍点以及局部极小点和高原区域(因为通常不是说权重等于0,而是说权重小于某个值时认为应该停止执行了,所以高原区域也会影响我们寻找最优点)的存在,当到达这些位置时,我们的执行过程都会停止。