Gradient Descent(机器学习之梯度下降法)

Tip 1: Tuning your learning rates

Learning Rate

如果learning rate 比较大,即如绿色曲线,在左侧曲线就会直接跳过谷底,反映到Loss曲线上就会呈现,开始下降速度快,但很快就会卡住,不在下降。
如果learning rate 超级大,即如黄线,会直接飞出去了。
要调整到Just make 时才能刚刚好。
所以右侧的Loss图一定要画出 。

Adaptive Learning Rate (适应性学习率)

靠近目标是要减小 learning rate ,让它收敛在最低点
但仅仅有公式不可以,最好Giving different parameters (参数)different learning rates

AdaGrad算法

AdaGrad

对于每一个参数都用相同的学习率进行更新。
但是在实际应用中,各个参数的重要性肯定是不一样的,所以我们对于不同的参数要动态的采取不同的学习率,让目标函数更快的收敛。
在这里插入图片描述

σ t \sigma_t σt: root mean square of the previous derivatives of parameter w,即参数w之前的导数的均方根。
即parameter dependent,每一个参数的learning rate都不一样
在这里插入图片描述
在这里插入图片描述

Contradiction

在这里插入图片描述
g t g_t gt表明导数越大,参数越大

∑ y = 0 x ( g i ) 2 \sum^{x }_{y =0}{(g_i)^2} y=0x(gi)2在分母上,表明导数越大参数越小

这是矛盾的。

How surprise it is?

直观解释
在这里插入图片描述
所以通过 ∑ y = 0 x ( g i ) 2 \sum^{x }_{y =0}{(g_i)^2} y=0x(gi)2知道过去的gradient有多大,再相除,知道反差有多大。

更正式的解释
在这里插入图片描述
gradient值越大,离底部距离越大
但我们同时考虑多个参数时,以上论述就不一定成立了。
在这里插入图片描述
(注意:图中w1,w2没有标注错误)
在这里插入图片描述
二次微分2a在一次微分的分母上
在这里插入图片描述
在这里插入图片描述
分母上当然可以直接算二次微分,但是在很复杂的情况下,算二次微分花费的大量时间是不能承受的,所以Adagrad在没有增加任何额外运算的前提下,去估计二次微分的值。

Tip 2:Stochastic Gradient Descent(随机梯度下降法)

在这里插入图片描述
初始的式子其实是合理的,因为损失是整体训练的总和,但SGD想法不同,每次只拿一个 x n x_n xn出来,只算对一个example的loss即可。
(注意:只是将最外侧的求和去掉)

这样做的好处是:
在这里插入图片描述
原来的Gradient Descent,看完所有example才update一次参数,这是稳定的,如左侧小图,其实就是按照Gradient建议的方向来走。
但是如果用SGD,每看到一个example就update一次。如果只对于一次example,步伐可能是小的而且是散乱的,与大趋势不见得是一致的,但是因为可以看很多个example,所以Gradient Descent走一步,SGD可能已走了20步,所以SGD反而比较快。

Tip 3:Feature Scaling(特征缩放)

在这里插入图片描述
本来在左图 x 2 x_2 x2的范围远比 x 1 x_1 x1大,那我们就把其缩小,变成右图的样子,即使不同的特征具有相同的缩放比例。

那么为什么这么做呢?
在这里插入图片描述
对于Feature Scaling前的左侧小图,可以看到, w 1 w_1 w1变动对于y的影响很小,但 w 2 w_2 w2变动对于y会造成较大影响。
所以坐标轴上, w 1 w_1 w1方向比较平缓, w 2 w_2 w2方向上比较陡峭。

对于Feature Scaling后的右侧小图,在坐标轴上 w 1 w_1 w1 w 2 w_2 w2影响力差不多。

对于未Feature Scaling的两个方向差很多,同一组learning rate 很难搞定,但是有Scaling变成正圆形会很容易,可以直接指向圆心走。

how to do?

在这里插入图片描述

Theory(数学原理)

Question

在这里插入图片描述

Formal Derivation

在这里插入图片描述
我们很难在所有范围内找到最小点,但给定一个点,我们很容易找到附近值最小的点,然后依次更新。

Taylor Series

在这里插入图片描述
在这里插入图片描述
s i n x sinx sinx和一次的直线是很不吻合的,但在 π / 4 \pi/4 π/4处趋势很像,而展开式高次影响很小,所以就只可以考虑 s i n x sinx sinx展开式中一次的部分。

在这里插入图片描述

Back to Formal Derivation

在这里插入图片描述
在红圈范围内用泰勒级数对Loss函数做简化
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
泰勒展开在越小的范围内越精确,对应就是红色的圈圈要越小,而 η \eta η(Learning rate)与其半径成正比。故理论上,只有Learning rate无穷小,才能保证Loss越来越小,但实际上只要够小就可以了。

以上只考虑了泰勒展开的一次式,但考虑二次式,也是可以的,但这样的方法不见得更普及,因为要运算二次微分,会多很多运算,但这些运算在做Deep Learning时是无法承受的。

More Limitation of Gradient Descent

在这里插入图片描述
(1)会卡在Local minima,在Local minima参数的更新会停止。
(2)除此之外,在saddle point(鞍点)也会出现这样的问题.

但以上微分值为0的地方可能只是幻想,真正的问题在于,对于某一点,微分值很小,可能小于10-6,这已经很小了,你有可能就停下来了(因为很少真的算出微分为0),但是很小不见得接近Local minima,可能只是在一个plateau(高原)上,离Local minima其实很远。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值