李宏毅机器学习笔记(4): Gradient descent

 

 

     

这次主要是聊梯度下降的细节与技巧,上次讲过了梯度下降的步骤。

1 回顾

还记着之前提到过的吗,梯度下降可以在复杂庞大的数据中寻找局部最优解,对loss function处理中有比较好的应用。我们需要对参数进行处理,可以使用梯度下降法。

再重温梯度下降过程吧(具体可以看第二篇回归):

实际的要求是寻找一组参数,需要损失函数达到最小值:

θ=argminL(θ)

其中,L为损失函数,θ为参数

我们要选取相应参数,这些更改这些参数来进行梯度下降:θ1θ2

还要随机选取参数的初始值:θ0=θ10θ20

梯度下降过程:(具体不赘述了,第二篇回归问题中写的很详细了)

梯度(高数都学过,损失函数对参数的偏导数,这里刻画的是损失函数曲线的斜率):

算法过程(反复进行,不断迭代,η为学习率):

其实我们都可以看出Gradient(梯度)刻画的就是loss的等高线的法线方向,如图1。通过下图我们能更为直观的了解梯度下降的过程,红色箭头代表了梯度,蓝色箭头代表了我们每次迭代的步长,就是上面公式中提到的学习率和梯度乘积的相反数,θ0代表了每次迭代后新的点,上标代表了迭代次数。每次迭代为了寻找最小值会向梯度相反(下降)的方向前进。

好比我们在山上,为了下山最快,我们肯定会从坡度最陡的方向下山(梯度最大),下山一段距离后(学习率),重新寻找坡度最陡的地方重复之前的步骤,直到周围都是上坡。

图1 梯度下降过程

2 调节你的学习率

在我们使用时,学习率往往会给我们造成很多问题,在这来分析下。什么是学习率?学习率不同会有什么后果?

学习率:梯度下降的步长,也决定学习器的学习速度,这个学习速度也不一定是学习率越大,速度越快哦,之后例子我们能看到。

如图2-1,如果学习率太小,显而易见,会导致学习的速度会很慢很慢。(蓝色线)但是学习率太大,可能梯度下降过程中会导致略过极小值在极小值附近不断地摇摆(绿色),甚至不断地迭代几乎不可以收敛(黄色),学习率要合适。确保损失函数为稳定的下降(红色)。

我们可以绘制出loss function随着不断进行学习的变化过程(右图),观察左图中每个颜色的变化情况。

图2-1 学习率

调节学习率比较繁琐,但是有自动的方法帮我们调节,经常学习率是要随着参数的不断更新,学习率要不断调节小。即靠近目标时,要调节为较小的学习率,为了使目标收敛。举例: 学习率的一种选择方法。

实际中,不同参数选择不同学习率,这点很重要。

3 adagrad

这里提一下adagrad这种方法,这里如果是有一定深度学习基础的人对这个会有一定的了解。在这里,李宏毅老师讲了这种方法目的是进行对不同参数进行学习率的不断更新问题。

adagrad方法:每一个参数的学习率都除以之前的微分值的方均根。直接看公式会更加直观一些,这里提一下两种不同选学习率的方法:

Vanilla gradient descent(批梯度下降):w是某一个参数,可以看出批梯度下降已经在原有基础上,随着步长的变化调整了学习率。

Adagrad:           

g偏微分(上文中公式),σ过去所有参数的方均根,如图3-1。

图3-1 adagrad

如图3-1,以上就是adagrad的参数迭代过程。可以看出学习率为ηtσt,整体学习率会越来越小,速度也越来越慢。

注意:如图3-2在批梯度下降中,随着梯度越大,移动的步长也就会越大。但在adagrad,梯度越大,可能会出现移动的步长反而会减小。在Adagrad使用之中,求均值的分母会被约掉,图3-2的adagrad公式是进行化简之后的公式,可以直接使用了。

再提一句题外话,在大量的梯度下降方法中,adagrad也只是其中之一,实际上还有很多方法我们可以使用的,我们之后可以多多了解这方面的内容,提升我们的积累。

图3-2 adagrad与批梯度下降

移动的步长取决于两点:学习率和梯度。李宏毅老师这里提到:单参数情况下,最好的步长发现是一次微分与二次微分的比值的绝对值,也就是说最好的步长与微分的大小成正比。

但多参数这个就不成立了,多参数情况下,单参数选取最好的步长方法不一定成立,而最好的步长发现是一次微分的绝对值与二次微分的比值。(。这段最好看下视频,老师讲的很详细)

使用一次微分估计二次微分,所以上式分母的根式可以反映出二次微分的大小,不用直接计算。

图3-2 微分

4 随机梯度下降Stochastic gradient dsecent

随机梯度下降可以让我们收敛得更快一点。正常的损失函数还记着么,我们要把每一个样本都考虑进来,去求出损失函数。但随机梯度下降是每次进行随机取样本,只取一个,进行计算loss function和梯度下降。由于每次只考虑一个样本,收敛速度将会变快。

5 特征缩放 Feature Scaling

在做梯度下降时,可以进行特称缩放,就是将各个参数分布特征转化为相似分布特征。否则,数值较大的参数会对loss影响较大。如图5-1:x1x2是两个不同的分布,进行分布缩放把他们的分布划为相似的分布进行处理。

为什么要这样做呢?可以发现,如果两个参数,第一个参数的值相比第二个参数很大,比如:x1的样本值大多为100左右,而x2的值大多为1左右,那么对y的最终影响,前者一定比后者大。后者产生的变化对最终值是基本上没有影响的,那么后者存在的意义就不是很明显,这种情况我们可以使用特征缩放。

图5-1 特征缩放

特征缩放很简单,对每样本的每一个特征求平均值与方差,计算:

这样可以使分布均值化为0,方差为1。这里的原理,概率论中的中心极限定理大家都学过,不多赘述。

6 数学原理

其实使用梯度下降,我们的损失函数是不一定会下降的。这里我们考虑一下梯度下降的数学原理吧。

高数我们学过泰勒公式:

为了方便计算与分析,我们把高次项删掉,这些原理高数中讲的很详细了不多赘述。当然泰勒公式也可以针对多参数的函数,如下:我们用u,v,s来替代化简。

之后,我们来借助taylor series来分析梯度下降,想一下梯度下降的方法,我们可以把每一步简化为在下图这个红色圆圈(每一步的步长)中,寻找θ1θ2来让损失函数值最小。于是在红色圈中,为了让L(θ)最小,可以分析,s是定值,u和v最小我们就可以确定损失函数最小。如图5-1。

图5-1泰勒级数用于分析梯度下降

为了让损失函数最小,很容易明白,该值最小应与u、v反方向。(这里李宏毅老师整个分析过程非常精彩,使用数学的严谨而不是直观的想象)

最后说梯度下降一些问题:局部最优值与驻点。算法可能会收敛在局部最优点和驻点。当然,梯度下降还存在其他一些问题,有兴趣可以去自己学习积累。

图5-2 驻点与局部最优

 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值