李宏毅机器学习--梯度下降

梯度下降review

在这里插入图片描述
首先给定一个参数初始值,然后沿着参数梯度方向的反方向走 η \eta η距离更新参数,知道找到损失函数L的最小点为止。

学习率的调整

在这里插入图片描述
如果设置的学习率刚好的话,如红色的线,可以顺利高效地找到最低点;如果学习率设置的太小,如蓝色的线,会走得很慢,但是在足够多的迭代次数后也会找到最低点;如果学习率设置的太大,如绿色和黄色的线,永远无法到达最低点。所以学习率的设置至关重要。
虽然这样的可视化可以很直观观察,但可视化也只是能在参数是一维或者二维的时候进行,更高维的情况已经无法可视化了。

可视化设置学习率的大小

在这里插入图片描述

虽然参数在超过二位之后无法画出上图,但是可以画出损失函数随参数梯度下降的变化,如上图。如果学习率太小,如蓝色的线,损失函数变化缓慢;如果学习率太大,如绿色的图,损失函数下降很快,但是停止不动了;学习率刚刚好就如红色的图。根据可视化图来设置学习率的大小。

Adaptive learning rate(自适应学习率)

主要思想:随着update参数次数的增加,学习率会越来越小。如下:
η t = η t t + 1 , g t = ∂ L ( θ t ) ∂ w \eta^{\mathrm{t}}=\frac{\eta^{\mathrm{t}}}{\sqrt{\mathrm{t}+1}}, \mathrm{g}^{\mathrm{t}}=\frac{\partial \mathrm{L}\left(\theta^{\mathrm{t}}\right)}{\partial \mathrm{w}} ηt=t+1 ηt,gt=wL(θt)
w t + 1 ← w t − η t g t \mathrm{w}^{\mathrm{t}+1} \leftarrow \mathrm{w}^{\mathrm{t}}-\eta^{\mathrm{t}} \mathrm{g}^{\mathrm{t}} wt+1wtηtgt

Adagrad

主要思想:不用参数应用不同的learning rate。
w t + 1 ← w t − η t σ t g t \mathrm{w}^{\mathrm{t}+1} \leftarrow \mathrm{w}^{\mathrm{t}}-\frac{\eta^{\mathrm{t}}}{\sigma^{\mathrm{t}}} \mathrm{g}^{\mathrm{t}} wt+1wtσtηtgt
其中, σ t \sigma^{t} σt是之前参数所有微分的均方根:
σ t = 1 t + 1 ∑ i = 0 t ( g i ) 2 \sigma^{t}=\sqrt{\frac{1}{t+1} \sum_{i=0}^{t}\left(g^{i}\right)^{2}} σt=t+11i=0t(gi)2
η t \eta^{\mathrm{t}} ηt σ t \sigma^{t} σt带入参数更新的式子,得到:
w t + 1 ← w t − η ∑ i = 0 t ( g i ) 2 g t w^{t+1} \leftarrow w^{t}-\frac{\eta}{\sqrt{\sum_{i=0}^{t}\left(g^{i}\right)^{2}}} g^{t} wt+1wti=0t(gi)2 ηgt
【注】:对Adagrad矛盾点的解释(在梯度大的时候,走的步伐应该大,但是Adagrad除以均方根又使步伐变小)
在这里插入图片描述
在这里插入图片描述
对于 ∑ i = 0 t ( g i ) 2 \sqrt{\sum_{\mathrm{i}=0}^{\mathrm{t}}\left(\mathrm{g}^{\mathrm{i}}\right)^{2}} i=0t(gi)2 就是希望再尽可能不增加过多运算的情况下模拟二次微分。(如果计算二次微分,在实际情况中可能会增加很多的时间消耗)

Stochastic gradient descent(随机梯度下降)

梯度下降随机梯度下降
L = ∑ n ( y ^ n − ( b + ∑ w i x i n ) ) 2 \mathrm{L}=\sum_{\mathrm{n}}\left(\hat{\mathrm{y}}^{\mathrm{n}}-\left(\mathrm{b}+\sum\mathrm{w}_{\mathrm{i}} \mathrm{x}_{\mathrm{i}}^{\mathrm{n}}\right)\right)^{2} L=n(y^n(b+wixin))2 L = ( y ^ n − ( b + ∑ w i x i n ) ) 2 \mathrm{L}=\left(\hat{\mathrm{y}}^{\mathrm{n}}-\left(\mathrm{b}+\sum \mathrm{w}_{\mathrm{i}}\mathrm{x}_{\mathrm{i}}^{\mathrm{n}}\right)\right)^{2} L=(y^n(b+wixin))2
θ i = θ i − 1 − η ∇ L ( θ i − 1 ) \theta^{\mathrm{i}}=\theta^{\mathrm{i}-1}-\eta \nabla \mathrm{L}\left(\theta^{\mathrm{i}-1}\right) θi=θi1ηL(θi1) θ i = θ i − 1 − η ∇ L ( θ i − 1 ) \theta^{\mathrm{i}}=\theta^{\mathrm{i}-1}-\eta \nabla \mathrm{L}\left(\theta^{\mathrm{i}-1}\right) θi=θi1ηL(θi1)

损失函数不需要处理训练集所有的数据,选取一个例子,就可以赶紧update 梯度。特点是快,常规梯度下降法走一步要处理到所有二十个例子,但随机算法此时已经走了二十步(每处理一个例子就更新)。
在这里插入图片描述

Feature Scaling(特征缩放)

比如有个函数: y = b + w 1 x 1 + w 2 x 2 y=b+w_1x_1+w_2x_2 y=b+w1x1+w2x2
两个输入的分布的范围很不一样,建议把他们的范围缩放,使得不同输入的范围是一样的。
在这里插入图片描述
如果两个输入的分布范围差别比较大,如下图
在这里插入图片描述
对于左边的情况,上面讲过这种狭长的情形不过不用Adagrad的话是比较难处理的,两个方向上需要不同的学习率,同一组学习率会搞不定它。而右边情形更新参数就会变得比较容易。左边的梯度下降并不是向着最低点方向走的,而是顺着等高线切线法线方向走的。但绿色就可以向着圆心(最低点)走,这样做参数更新也是比较有效率。
做法:
在这里插入图片描述
【有点类似于标准正态分布的过程 ~ (0, 1)】

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值