Gradient Descent

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

我们有如下的优化问题:

假设权重\theta有两个变量{_{\theta_{1 }},_{_{\theta _{2}}}},初始时,随机初始化这两个变量,在后面的每次迭代中计算损失函数关于这两个变量的梯度,计算这两个变量的新的值。下面计算了两次迭代得到的这两个变量的更新值。

对于上式中的即称为梯度,梯度是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,而是说权重小于某个值时认为应该停止执行了,所以高原区域也会影响我们寻找最优点)的存在,当到达这些位置时,我们的执行过程都会停止。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值