李宏毅机器学习(2017full)-Lecture 3 : Gradient Descent
Gradient Descent ML03
在ML的第三个步骤,需要找到最好的function,所以实际需要解决一个最优化问题
(求解使得损失函数最小时的,为损失函数,为模型中的参数)
在ML的第二步需要定义一个LossFunction L(是函数的函数)=>输入的自变量是一组参数 越小越好
假设有两个参数 ,初始化之后,不断根据学习率和gradient对参数进行更新。
- 梯度下降步骤
gradient是vector,图中红色箭头,Loss等高线的法线方向。
Tip1 小心调整Learning Rate
Learning Rate:
画出参数的变化与Loss之间的关系图,看每次update的参数的走势。
- 对于small的learning tate,Loss会下降很缓慢。
- 对于large的learning tate,Loss会一开始下降比较快,但会停住,不再下降。
- 对于very large的learning tate,Loss会爆炸,无法下降。
- 对于just make的learning tate,Loss会以一个适当的速度下降,且能降到最低点。
Adaptive Learning Rates
自动更新
- 基本原则:随着参数的更新lr会越来越小。
流行且简单的方法,在不同周期,通过调整一些因素来减小学习率。
- 在开始时,离目标点较远,可以选择大一点的学习率。
- 在后面的周期中,离目标点变近,可以减小学习率。
- 假设lr是t的函数,dependent参数,update次数,η是一个常量,t为第t个周期 ,
学习率不会one-size-fits-all
- 每个不同的参数都应该有不同的lr。
Adagrad
- 对每一个参数的学习率,除以它之前微分值的均方差 root mean square
- w是某一个参数,每一个参数都给不同的lr,每个参数分开考虑
- 注意理解公式,不同参数的lr都不同
- 就是第个周期的学习率
- 就是损失函数对的偏微分
- 就是参数之前所有偏微分的均方差
Adagrad步骤:
Adagrad的更新公式,的简化
Adagrad整体而言最后会变慢,(Adam是现在较为稳定的)
Contradiction
- Adagrad中,更新和批梯度下降方法更新中不同
- 使得:更大的梯度,更大的步长
- 分母使得:更大的梯度,更小的步长
解释:
Adagrad 为了解释反差,今天的gradient有多反差。假设某一个参数,在某一个时候特别大或者小。
直觉的解释是:XXXX(分母项,之前所有倒数的均方差)是为了造成反差萌(原话)
正式的解释:
一个参数:(下图二次函数)
二次函数(上图)对x作微分(下图),那么想要到最低点,需要走,也就是,分子也就是这一点的微分。即最好的步伐跟微分大小呈正比。(仅考虑一个参数)
-
微分越大,距离最低点越远。更大的一次导数意味着离最小值更远(可以从图像看出,不管是第一象限,还是第二象限,离最小值越远的点,导数值越大)
在只考虑一个参数的时候,如果踏出的步伐和微分一样是最好的。
Comparison between different parameters
同时考虑很多参数时候:
微分越大, 和最低点距离越远。在很多参数情况下不一定成立
左图的颜色是loss
中a的微分较大,距离最低点较远,中的微分较大,距离最低点较远,但是 距离最低点较 近
最好的步伐gradient跟微分大小呈正比,没考虑跨参数情况
- 分母的来源:二次微分。
- 最好的步长需要正比于一次微分,反比于二次微分。
图中:
- 方向上,二次微分较小,较为平滑
- 方向上,二次微分较大,变化较为剧烈,图像比较尖。
- 综合考虑一次和二次微分,才能真正反映现在的位置同最低点的距离
与Adagrad的关系
- 在没有增加任何额外运算前提下,如何加入对二次微分的考虑。即分母与最佳步长中二次微分的关系。
- 在某一个范围内,对多个点进行采样。
- 对于比较平滑的峡谷(左侧蓝图),一次微分(左下)通常较小。尖的一次微分较大。
- 对所有采样点进行平方和。过去所有一次微分平方和,就反映了二次微分的大小。
Tip2 Stohastic Gradient Descent
- 每次就拿一个样本出来,Loss只考虑一个example。
- 在update参数的时候只考虑这一个example。
- Gradient Descent:看到所有example之后进行更新(左图更新一次)
- SGD:看到一个example后逐个进行参数更新(右图更新20次)。步伐小且散乱
Tip3 Feature Scaling
- regression: 预测宝可梦进化之后的CP值。
- 两个输入的feature,如果两个feature的分布不同,最好可以做一下scaling,使得两个特征的分布相同。
为什么这么做:
- 左图对y的变化影响很大,对LOSS影响也会很大,在方向上的变化很剧烈。椭圆,不会指向最低点走。
- 右图有scaling的时候。会一直向着圆心走。更有效率
如何做scaling?
方法有很很多,常见方法如下:
有R个样本,每个样本维,对于第个样本的第个元素
- 样本中所有dimension的均值为0,方差为1。
Gradient Descent Theroy
判断:每次更新参数之后,得到一个新的,会让我们的Loss较小嘛?
错误.update之后loss不一定会下降。
Warning of Math
从数学角度(主要是泰勒级数)解释梯度下降的合理性
起始点: ,可以在红圈范围中找到最低点。
如何在红色圈中快速找到使得loss最小的参数
泰勒:
任何一个函数,如果在这一点的时候是无穷次可微的 ,则可以泰勒展开(微积分)
当 很接近 的时候,后面的高次项可以省略。
下一张ppt是的例子
- 依次考虑前几项得到的图像。
- 初始中心点,在红色圈范围内,可以把Loss近似写成:
- 相当于两个向量相乘,
- 和反方向且长度相同的向量,和其相乘之后数值最小。
为了在红色圈找最小值,就是中心点减掉乘上
- 得到的式子就是gradient descent。前提是泰勒展开是精确的。
- lr无穷小的时候才会成立。
- 所以lr没有设置好,LOSS可能不会越来越少。
more limitation of gradient descent
- 容易卡在局部最小处、鞍点 、
- 微分很小也有可能是高原的地方。