李宏毅老师机器学习2020学习笔记与思考(四)Gradient Descent

Gradient Descent

Review

之前提到过,先假设带求解参数的初始值,然后求梯度,设定learning rate,通过不断更新参数找到最优解。具体来说如下:
在这里插入图片描述

Tip 1: Tuning your learning rates

在这里插入图片描述
如上图所示,如果learning rate过小(蓝色),则速度非常慢,并且Loss函数不断在下降;如果learning rate过大(绿色),则容易卡住无法找到最优解,Loss函数也不会降得很低;如果learning rate太大(黄色),则容易直接“飞出”,Loss函数反而会越来越大;调整到恰好的learning rate(红色),在速度和效果上都会比较好。因此,在做梯度下降的时候,应该把Loss的变化画出来,可以看出自己learning rate数值的选取是否合适。
一开始,参数离目标比较远,可以设置比较大的learning rate,后来可以逐渐变小,比如:
η t = η t + 1 \eta^{t}=\frac{\eta}{\sqrt{t+1}} ηt=t+1 η
但是,我们应该“因材施教”,即每个参数设置不同的learning rate,这里介绍一种方法、
Adagrad
η t = η t + 1 \eta^{t}=\frac{\eta}{\sqrt{t+1}} ηt=t+1 η
w t + 1 = w t − η t σ t g t w^{t+1}=w^{t}-\frac{\eta^{t}}{\sigma^{t}}g^{t} wt+1=wtσtηtgt
σ t \sigma^{t} σt是过去所有微分值的root mean square(均方根)
在这里插入图片描述
化简后,得到如下结果:
在这里插入图片描述
对于上式,我们可以看到,在传统的梯度下降过程中,梯度越大,那参数下一次移动的幅度就越大,但是在adagrad中,由于分子和分母都含有梯度值,因此其分别让参数移动的幅度随着梯度值变大而变大/变小,这两者看似矛盾,其实可以这样理解:这其实是看到一个梯度的反差,在后面这一项中,体现的是现在的梯度/所有梯度的均方差,即体现出此次的梯度和之前的反差;或定量的理解,首先要知道这样一个前提:最好的步长是一次微分的绝对值/二次微分,具体的过程可以通过二次函数图像容易的证明出来,而二次微分计算量太大了,因此花费成本太高,不是我们所能接受的,因此,本方法的分母实际上是通过已经算出的一次微分来模拟二次微分,对过去的一次微分求均方根在一定程度上可以理解为对二次微分的近似。

Tip 2: Stochastic Gradient Descent

随机梯度下降方法与梯度下降相比,速度更快,具体来说,前者是随机选取一个n,计算这一个n对应的Loss函数,并以此更新参数,因此,以10个数据为例,当梯度下降法计算1次并更新参数后,随机梯度下降法已经更新了10次参数,因此更快,具体如下:
Gradient Descent L = ∑ n ( y ^ n − ( b + ∑ w i x i n ) ) 2 L=\sum_{n}(\hat{y}^{n}-(b+\sum w_{i}x_{i}^n))^{2} L=n(y^n(b+wixin))2 θ i = θ i − 1 − η ∇ L ( θ i − 1 ) \theta^{i}=\theta^{i-1}-\eta\nabla L(\theta^{i-1}) θi=θi1ηL(θi1)
Stochastic Gradient Descent
L n = ( y ^ n − ( b + ∑ w i x i n ) ) 2 L^{n}=(\hat{y}^{n}-(b+\sum w_{i}x_{i}^n))^{2} Ln=(y^n(b+wixin))2 θ i = θ i − 1 − η ∇ L n ( θ i − 1 ) \theta^{i}=\theta^{i-1}-\eta\nabla L^{n}(\theta^{i-1}) θi=θi1ηLn(θi1)

Tip 3: Feature Scaling

特征缩放的要点是让不同的特征具有相同的尺度大小,如图所示:
在这里插入图片描述
如下图所示,如果x1的尺度很小,x2的尺度很大,那么同等变化下,w1对y的影响就小得多,因此Loss对w1的梯度就平滑一些,所以画出来的Loss函数就是长椭圆形,这时对不同变量就要用不同的复杂的learning rate处理,因此学习起来会很困难,而经过特征缩放后,
在这里插入图片描述
特征缩放的方式如下:对每一个数据求mean&standard deviation,然后对每个数据减掉平均值除以标准差,得到缩放后的数据。如图:
在这里插入图片描述

Thoery of Gradient Descent

首先提出一个问题,梯度下降更新参数的时候,每更新一次Loss就会下降吗?答案显然是否定的,比如learning rate选择不喝来就会越来越大。
如下图所示,在红色的圈中找一组新的参数 θ i \theta_{i} θi让其loss最小,根据泰勒级数,可以在非常小的无穷可微的邻域内,忽略高次项得到下图中的结果,将常数用字母代换,得到下图最后一个等式;
在这里插入图片描述
而要使Loss最小即使如下图所示的两个向量内积最小,因此自然的想到两向量相反,通过数学带换得到下图最后一个公式,发现与最初思考设计的参数更新的方式是一样的,即得到了gradient descent方法。这告诉我们,梯度下降要想成立,泰勒级数需要足够精确,也即所画出的红色圈足够小,learning rate也要足够小,因为 η ( l e a r n i n g r a t e ) \eta(learning rate) η(learningrate)要和红圈半径成正比。
在这里插入图片描述
如果把泰勒级数的二次项也保留,learning rate可以设置的稍微大一点,具体来说就是一种新的方法了(牛顿法),此时计算量增大了非常多,其实是不太可取的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值