Gradient Descent

Let's review!

gradient descent:即梯度下降算法。

之前的预测宝可梦cp值的实验中就用到了Gradient Descent,就是用偏微分计算参数的"移动步数",然后找到使Loss最小的参数.

file

file

这节课主要讲在进行梯度下降时需要注意的几个知识点

Tip 1:Tuning your learning rates

要小心设置参数的变化倍率

  • 设置的步伐过大,会导致在最低点两侧来回振荡,或者直接飞出去.
  • 设置的步伐过小,会导致Gradient Descent太慢了.

file

现在多采用自适应调整的Learning Rate,即Adaptive Learning Rate:

​ 就是开始你离这个minima可能比较远,这时候你能把你的Learning Rate设的很大,当梯度下降到一定程度时,就应该放慢步伐,减小Learning Rate。

​ 一般我们采用1/t decay:

file

但是这个Learning Rate并不能适用于所有情况,特别是有多个参数时,我们要对不同的参数设置不同的Learning Rate,引出Adagrad算法。

Adagrad算法:即自适应梯度算法。

每一个参数的Learning Rate都让它除以之前每一步算出来的微分值的均方根。

补:

均方根:N个项的平方和的均值,再开根号。

file

因为这个均方根是对一个参数之前的微分而言的,每一个参数都独立计算,所以最终实现不同参数的Learning Rate不一样。

file

突然发现分子和分母还能消掉一些东西,使最终表达式更精简。

file

但是问题来了,看下面这张图,更大的梯度,会使分子变大,结果使整体变大,但是分母也会变大,结果会使整体变小。那么当它的梯度变小时,到底是加大步伐还是减慢步伐,这难道不矛盾么?

file

事实上,还是梯度越大,步伐越大,梯度很小也就是接近最低点时会减小步伐,并没有问题!

这个问题要从二次函数说起:

假设我们起点在x0处,我们想到达最低点处,最好的方法就是想左走|2a*x0+b|/2a距离,但是我们求它的梯度,发现梯度只能和这个最佳移动的分子对应,那么这个分子从哪来呢?

不错,就和它的二次导数也就是二次微分有关.
file

file

我们回到现在的问题中,它有两个参数,那么又改怎样理解呢?

在一个参数上梯度小的不一定整体小,我们要进行对当前微分再求一次微分的操作。

file

但是刚才我们那个式子中的分母也不是一个二次偏微分啊,而是一个均方根,好,问题点到为止,用之前微分的均方根来近似代替当期微分的二次微分.
file

file

Tip 2:Stochastic Gradient Descent

Stochastic Gradient Descent:即随机梯度下降算法。

​ 使梯度下降算法找到最佳参数的速度更快。

file

Stochastic Gradient Descent每得到一个实例就更新一次参数,相比于之前的Gradient Descent,一组数据才更新一次参数,这样"走得很快"。

file

Tip 3:Feature Scaling

Feature Scaling:即特征缩放

​ 让实例的不同特征的规模趋于一致,这样会使梯度下降算法更有效率。

file

file

常见的做法:将实例的各个特征都转化为转换为标准正态分布。

file

梯度下降算法的数学基础

首先给我们一个点,我们可以很轻松地周围的最小Loss值,那么该怎么去找?这就涉及到数学问题了。

file

我们之前学过泰勒公式,就是函数在一点处可以展开成幂级数的形式,这是一种替代。

file

我们以sinx这个函数为例,我们利用泰勒公式将其在x0=pi/4处展开,会发现展开的项数越多,这个展开式的图像会越接近sinx,但是即使是只展开一个0次导数项,它确实和sinx的图像没有一点相似性,但是在趋近pi/4处它俩的值也是基本相等的

所以得出:在展开点处原函数与展开式的值近似相等,且展开项越多越接近。

file

我们立马推广到二元泰勒,就有:

在(x0,y0)处展开式的值就近似等于原函数的值。

file

回到我们的问题,在初始梯度下降的那一点将Loss函数展开,然后当我们画的圈足够小时,我们就能用展开式的值估计原函数的值。

在初始点的梯度用(u,v)表示,前面的L(a,b)记为常量s

file

file

记我们下一步要前进的方向向量(θ1-a,θ2-b)为(Δθ1,Δθ2),我们会惊奇的发现不看前面的常量时,L的表达式变成了梯度和要前进向量的向量积,所以要使Loss减小得最有效,我们就取我们要前进的方向为与梯度反向的方向,大小取我们画的这个圆的最远处.

所以前面的那个式子就有减去是ŋ倍的梯度,其实那一坨表达式就是表示参数的变化量。

注:负号来自cosπ

file

所以现在直接拨开云梦!

file

梯度下降算法的局限

你有可能会卡在微分值是0的极小值处,当然这是相对于一元来说的,前面讲过多元不会出现这个问题的。

但是实际情况中的问题是,你一般算不到微分值恰好是0的地方,你只会接近0,然后你误以为自己接近局部最优,但其实你离这个极小值也还有一段距离。就像图中第二个球所在的位置。

file