Gradient Descent

Review

下图是将gradient descent在投影到⼆维坐标系中可视化的
在这里插入图片描述
红色箭头是指在(θ1,θ2) 这点的梯度,梯度方向即箭头方向(从低处指向高处),梯度大小即箭头长度(表示在θ点处最陡的那条切线的导数大小,该方向也是梯度上升最快的方向) ;蓝色曲线代表实际情况下参数θ1和θ2的更新过程图,每次更新沿着蓝色箭头方向loss会减小,蓝色箭头方向与红色箭头方向刚好相反,代表着梯度下降的方向。

因此,在整个gradient descent的过程中,梯度不⼀定是递减的(红色箭头的长度可以长短不⼀),但是沿着梯度下降的方向,函数值loss⼀定是递减的,且当gradient=0时,loss下降到了局部最小值,总 结:梯度下降法指的是函数值loss随梯度下降的方向减小

Tip 1:Tuning your learning rates

在这里插入图片描述

  • 如果learning rate刚刚好,就可以像上图中红色线段⼀样顺利地到达到loss的最小值
  • 如果learning rate太小的话,像上图中的蓝色线段,虽然最后能够⾛到local minimal的地方,但是它可能会走得非常慢,以至于你⽆法接受
  • 如果learning rate太⼤,像上图中的绿色线段,它的步伐太⼤了,它永远没有办法走到特别低的地方,可能永远在这个“山谷 ”的口上振荡而无法走下去
  • 如果learning rate非常⼤,就会像下图中的⻩色线段,⼀瞬间就飞出去了,结果会造成update参数以后,loss反而会越来越大

当参数有很多个的时候(>3),我们很难做到将loss随每个参数的变化可视化出来(因为最多只能可视化出三维的图像,也就只能可视化三维参数),但是我们可以把update的次数作为唯⼀的⼀个参数,将loss随着update的增加而变化的趋势给可视化出来(上图右半部分) 所以做gradient descent⼀个很重要的事情是,要把不同的learning rate下,loss随update次数的变化曲线给可视化出来,它可以提醒你该如何调整当前的learning rate的大小,直到出现稳定下降的曲线

Adaptive Learning Rates(适应性学习率)

最基本、最简单的大原则是:learning rate通常是随着参数的update越来越小的

  • 首先,刚开始我们离 destination 还很远,所以采用较大的 learning rate
  • 一段时间后,我们离 destination 比较近了,所以减小 learning rate
  • 重要的是,每个不同的参数给他不同的 learning rate(如 Adagard)

Adagrad

Divide the learning rate of each parameter by the root mean square(均方根) of its previous derivatives
Adagrad就是将不同参数的 learning rate分开考虑的⼀种算法(Adagrad算法update到后⾯速度会越来越慢)

在这里插入图片描述
w是function中的某个参数,t表⽰第t次update, 表⽰Loss对w的偏微分,⽽ 是之前所有Loss对w偏微分的⽅均根(根号下的平⽅均值),这个值对每⼀个参数来说都是不⼀样的
在这里插入图片描述
我们在做gradient descent的时候,希望的是当梯度值即微分值越大的时候(此时斜率越大,还没有接近最低点)更新的步伐要更大⼀些,但是Adagrad的表达式中,分母表示梯度越大步伐越大,分子却表示梯度越大步伐越小,两者似乎相互矛盾
在这里插入图片描述
可以这样理解:Adagrad要考虑的是,这个gradient有多surprise,即反差有多大,假设t=4的时候与前面的gradient反差特别⼤,那么分子与分母之间的大小反差就会比较大,它们的商就会把这一反差效果体现出来
在这里插入图片描述
gradient越大,离最低点越远这件事情在有多个参数的情况下是不一定成立的
如下图所示,w1和w2分别是loss function的两个参数,loss的值投影到该平⾯中以颜⾊深度表示大小,分别在w2和w1处垂直切一刀(这样就只有另一个参数的gradient会变化),对应的情况为右边的两条曲线,可以看出,比起a点,c点距离最低点更近,但是它的gradient却越⼤
在这里插入图片描述
对于⼀个⼆次函数来说,任意⼀点,它迈出最好的步伐长度是⼀步迈到最小值点,联系该函数的⼀阶和⼆阶导数,可以发现the best step不仅跟⼀阶导数(gradient)有关,还跟⼆阶导数有关。
再来回顾Adagrad的表达式:分子就是⼀次微分,而分母反映了⼆次微分的大小,所以Adagrad想要做的事情就是,在不增加任何额外运算的前提下,想办法去估测⼆次微分的值。
在这里插入图片描述

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

随机梯度下降的⽅法可以让训练更快速,传统的gradient descent的思路是看完所有的样本点之后再构建loss function,然后去update参数;而stochastic gradient descent的做法是,看到⼀个样本点就update⼀次,因此它的loss function不是所有样本点的error平方和,⽽是这个随机样本点的error平方
在这里插入图片描述
stochastic gradient descent与传统gradient descent的效果对比如下:
在这里插入图片描述

Tip 3: Feature Scaling(特征归一化)

Make different features have the same scaling
左边的error surface表示,w1对y的影响比较小,所以w1对loss是有比较小的偏微分的,因此在w1的方向上图像是比较平滑的;w2对y的影响比较大,所以w2对loss的影响比较大,因此在w2的方向上图像是比较sharp的;如果x1和x2的值,它们的scale是接近的,那么w1和w2对loss就会有差不多的影响⼒,loss的图像接近于圆形
在这里插入图片描述
如何做feature scaling如下图
在这里插入图片描述

Gradient Descent的限制

在gradient即微分值接近于0的地方就会停下来,而这个地方不一定是global minima,它可能是local minima,可能是saddle point鞍点,甚至可能是⼀个loss很高的plateau平缓高原
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值