「李宏毅机器学习」学习笔记-Gradient Descent

 

 首页 归档 关于 赞助 软件 订阅

「李宏毅机器学习」学习笔记-Gradient Descent

Oct 31, 2018 | 机器学习 |  阅读 文章目录
  1. 1. Review
  2. 2. Tip 1: Tuning your learning rates
    1. 2.1. Adaptive Learning Rates
    2. 2.2. Adagrad
  3. 3. Tip 2: Stochastic Gradient Descent:Make the training faster
  4. 4. Tip 3: Feature Scaling
  5. 5. Formal Derivation
  6. 6. More Limitation of Gradient Descent

本章课程PDF,视频(油管B站)。

Review

Gradient Descent算法流程如下图:「李宏毅机器学习」学习笔记-Gradient Descent

流程可视化效果如下图:「李宏毅机器学习」学习笔记-Gradient Descent

Tip 1: Tuning your learning rates

「李宏毅机器学习」学习笔记-Gradient Descent

learning rate太小,loss值下降会很慢,如图左蓝色线;learning rate比较大,loss值有可能会卡在一个地方,如图左绿色曲线,learning rate很大,loss值有可能变大,如图左红色曲线。

可以可视化learning rate与loss值的关系,如图右所示。在做Gradient Descent时候建议画出此图,可以更好的选择learning rate。

Adaptive Learning Rates

「李宏毅机器学习」学习笔记-Gradient Descent

为了达到以上目的,有很多技巧,比如Adagrad。

Adagrad

「李宏毅机器学习」学习笔记-Gradient Descent

「李宏毅机器学习」学习笔记-Gradient Descent

「李宏毅机器学习」学习笔记-Gradient Descent

此时,可能会发现一个矛盾,在做一般的Gradient Descent中,参数的update取决于两件事情,一件事情是learning rate,另一件事情是gradient。gradient越大,参数update就越快。在Adagrad中,gradient越大,分母就会越大,正好与gradient对参数update的影响相反,如图所示。「李宏毅机器学习」学习笔记-Gradient Descent

其实,Adagrad如此处理,直觉上来讲,是为了突出反差的效果。

「李宏毅机器学习」学习笔记-Gradient Descent

更正式的解释是这样:「李宏毅机器学习」学习笔记-Gradient Descent

只考虑一个参数的时候,调整的best step与一次微分有关。

「李宏毅机器学习」学习笔记-Gradient Descent

考虑两个参数的时候,可以看出w1w1上的a点的微分值是比较小的,w2w2上的c点的微分值是比较大的,但是可以明显看出,a点离最低点是比较远的,c点离最低点是比较近的。所以,考虑跨参数的时候,就不能仅仅只考虑一次微分值。

「李宏毅机器学习」学习笔记-Gradient Descent

「李宏毅机器学习」学习笔记-Gradient Descent

同时考虑多个参数的时候,调整的best step与一次微分和二次微分有关。Adagrad的做法是在没有额外多余的运算下估算二次微分。

Tip 2: Stochastic Gradient Descent:Make the training faster

「李宏毅机器学习」学习笔记-Gradient Descent

正常的Gradient Descent,Loss是考虑所有的training example,Stochastic Gradient Descent的Loss只考虑某一个example。

「李宏毅机器学习」学习笔记-Gradient Descent

从Demo中可以看出,Gradient Descent看过所有的example后update一次参数,是比较稳定的;Stochastic Gradient Descent每看到一个example后就update一次参数,是比较散乱的,但是速度是比较快的。

Tip 3: Feature Scaling

「李宏毅机器学习」学习笔记-Gradient Descent

「李宏毅机器学习」学习笔记-Gradient Descent

Feature Scaling是为了让特征有相同的分布。

e.g.假设y=b+w1x1+w2x2y=b+w1x1+w2x2中x1x1的值是比较小的(1,2……),x2x2的值是比较大的(100,200……),对w1w1、w2w2的值做相同的变化,会发现w1w1对yy的变化是比较小的,w2w2对yy的变化是比较大的。因此可以画出蓝色圈圈的图, 在w1w1方向上是比较smooth的,在w2w2方向上是比较sharp的,这时候update参数是比较难的。经过Feature Scaling处理后,可以得到绿色圈圈的图,这时候update参数是比较容易,比较有效率的。

常用的Feature Scaling方法之一如图所示:

「李宏毅机器学习」学习笔记-Gradient Descent

Formal Derivation

「李宏毅机器学习」学习笔记-Gradient Descent

「李宏毅机器学习」学习笔记-Gradient Descent

「李宏毅机器学习」学习笔记-Gradient Descent

「李宏毅机器学习」学习笔记-Gradient Descent

「李宏毅机器学习」学习笔记-Gradient Descent

「李宏毅机器学习」学习笔记-Gradient Descent

「李宏毅机器学习」学习笔记-Gradient Descent

More Limitation of Gradient Descent

「李宏毅机器学习」学习笔记-Gradient Descent

Gradient Descent可能会卡在local minima,也可能会卡在saddle point,也有可能是卡在微分值很小的plateau。

如果本博文对您有帮助,可以赞助支持一波博主~

推荐阅读


李宏毅 机器学习 「李宏毅机器学习」学习笔记-Classification:Probabilistic Generative Model  
 分类  标签 Hexo Github 博客 李宏毅 机器学习 剑指Offer Python Algorithm  最近文章  友情链接 Jeffrey‘s Blogcoderwen的踩坑日记taoyafanSmileCode Copyright © 2019 BlueCode. Powered by Hexo. Theme by Cho.

 

上一篇:机器学习—概念、三要素


下一篇:Gradient Descent:梯度下降法