2020李宏毅机器学习笔记——3.Gradient Descent(梯度下降)

一、梯度下降gradient descent

1.回顾机器学习的步骤:

  • 定义一个Model(function set)
  • 利用loss function 损失函数评估function的好坏
  • 最后利用gradient descent 方法找到最优的function。
    梯度下降法就是找到最优的参数解,使得损失函数loss function最小。
    2.在最优化(optimization)就是发现能够最小化损失函数值的这组参数W的过程。损失函数量化了一组特定权重的质量。最优化的目标是去发现能够最小化损失函数值的那一组权重。
    3.基本操作

在这里插入图片描述

  • θ n m θ ^nm θnm,上标n表示迭代次数,下标m表示第m个component(元素)
  • η表示learning rate)—可以理解为为参数移动步伐的大小

梯度下降直观图如下
gradient descent在投影到二维坐标系中可视化的样子:在这里插入图片描述

  • 红色箭头(θ1,θ2)是指在这点的梯度,梯度方向即箭头方向(从低处指向高处),梯度大小即箭头长度(表示在θi点处最陡的那条切线的导数大小,该方向也是梯度上升最快的方向)。
  • 蓝色曲线代表实际情况下参数θ1和θ2的更新过程图,每次更新沿着蓝色箭头方向loss会减小,蓝色箭头方向与红色箭头方向刚好相反,代表着梯度下降的方向。

注1:在整个gradient descent的过程中,梯度不一定是递减的(红色箭头的长度可以长短不一),但是沿着梯度下降的方向,函数值loss一定是递减的,且当gradient=0时,loss下降到了局部最小值。总结:梯度下降法指的是函数值loss随梯度下降的方向而减小。
注2:gradient梯度可以理解为高度上升最快的那个方向,它的反方向就是梯度下降最快的那个方向,于是每次update沿着梯度反方向,update的步长由梯度大小和learning rate共同决定。当某次update完成后,该点的gradient=0,说明到达了局部最小值。

二、关于Learning rate η(学习率)

从下图中可找到规律:在这里插入图片描述
gradient descent过程中,影响结果的一个很关键的因素就是learning rate的大小:

  • 若η (learning rate)太小,梯度下降速度较慢;若太大,则可能走不到最低点;所以需要将η \etaη调到一个合适的值;
  • 若维度大于3,则无法画出梯度下降的图像,但可以画出参数和损失函数的关系图;

自适应的学习速率(Adaptive Learning Rates)

手动去调learning rate是不太现实的,所以有没有什么方法去自动调节呢?
在这里插入图片描述1.调整learning rate的原则:使learning rate随着参数的update越来越小;
2.在开始的时候,距离目标点较远,learning rate大一点可以加快梯度下降速度;
3.经过一段时间后,比较接近目标点,将learning rate调小一点,让它收敛在最低点;
4. η t η^t ηt 中,t代表update次数;
5.learning rate最好可以“因材施教”,对于不同的参数,给出不同的learning rate;

三、gradient descent 的tips

3.1第一类tips就是:Adagrad(自适应梯度下降)

第一类tips就是自动调节学习率,在离最低点(最优点)远的时候,我们就把学习率设大一点),在随后逐渐离最优点越近的时候,把学习率设小一点,这样就不会使训练速度过慢或是虽然快了但却不小心越过了最优点。

Adagrad算法update到后面速度会越来越慢 它是将不同参数的learning rate分开考虑的一种算法。
在这里插入图片描述

  • 将每个参数的learning rate除上之前算出来的微分值(derivative)的root mean square(均方根);
  • w是某一个参数, g t g^t gt是偏微分的值, σ t σ ^t σt是之前所有微分值的均方根(对每一个参数而言是不一样的);
    具体计算过程如下图:
    在这里插入图片描述
    最后化简得:
    在这里插入图片描述
    你有没有发现Adagrad的表达式中,分子 g t g^t gt表示梯度越大需要步伐越大,分母却表示梯度越大 分母倒数步伐却变小了,两者似乎相互矛盾。
    像在一些书本paper里是这样解释的:
    Adagrad要考虑的是,这个gradient有多surprise,即反差有多大。
    在这里插入图片描述
    -上述的直观解释:当某一步中得到的梯度相比之前特别小(或特别大),除以 ∑ i = 0 t ( g i ) 2 \sqrt {\sum_{i=0}^t (g^i)^2} i=0t(gi)2 后,可以强调这种反差的效果;

下面从导数的角度来分析,
1.在单个参数的情况下,我们比较两个点的梯度大小,只和一阶导数有关,为了找到最优解,我们移动的步伐大小和二阶导数有关。
下图中计算出来的梯度的绝对值越大,说明距离最低点越远;
在这里插入图片描述
2.多个参数的时候,计算出来的梯度的绝对值越大距离最低点越远,跨参数的时候不一定成立;
在这里插入图片描述
Adagrad想要做的事情就是,在不增加任何额外运算的前提下,想办法去估测二次微分的值。
在这里插入图片描述
我们对这两个维度分别进行一阶导数和二阶导数的求导,对采样点进行均方根就能近似的表示二阶导数的大小,比如左图就比较平稳,值就小,右图比较陡峭,值就大。这就是公式中采用均方根的理由。

  • 将每个参数一次微分的绝对值除以二次微分,能更好的反应此时所在位置和最低点的距离;
  • ∑ i = 0 t ( g i ) 2 \sqrt {\sum_{i=0}^t (g^i)^2} i=0t(gi)2 可以反映二次微分的大小(二次微分越大/越小的函数, ∑ i = 0 t ( g i ) 2 \sqrt {\sum_{i=0}^t (g^i)^2} i=0t(gi)2 ​ 也越大/越小),,故用它取代二次微分(由于一次微分之前已经计算过了,这样做还可以减少计算量)

3.2随机梯度下降(Stochastic Gradicent Descent)

在这里插入图片描述

  • 在Gradient Descent 中,每更新updata一次参数需要loss function计算所有样本的error的平方和 。而SGD是而是这个随机样本点的error平方。

  • GD是训练一组数据更新一次参数,SGD是一个example就更新一次参数。
    那这样做的优势何在呢?
    对比可见:
    在这里插入图片描述

  • 随机梯度下降收敛速度更快

3.3特征缩放(Feature Scaling)

Feature scaling就是把input feature的range弄成一样的。
在这里插入图片描述
为什么要 Feature scaling?
举个例子吧
在这里插入图片描述

  • 图中左侧是在 Feature scaling之前,w1对L的影响较小,而w2对L的影响较大,图为椭圆形,收敛较慢;
  • 图中右侧是在 Feature scaling之后,图为圆形,则收敛较快,updata参数会更有效率;

那具体又如何 scaling?
在这里插入图片描述

  • 就是用它去减均值,然后在除于标准差;

(Gradient Descent Theory)

在这里插入图片描述

当然上述是错误的,如果learning rate 太大,那updata后L反而可能会更大
在这里插入图片描述

  • 在起始点的某个范围之内(圆圈内),寻找是的loss function 最小的点,再以该点为起始点,重复上面的步骤

我们寻找梯度的过程进行解释,从起始点开始,以起始点为中心,画一个圆,在这个圆内寻找最佳的方向和移动步伐

数学警告

利用泰勒展开公式:
二元泰勒级数
在这里插入图片描述
利用泰勒展开公式将我们的损失函数进行处理:
在这里插入图片描述
那下面又如何确定最小的L呢?
在这里插入图片描述

为了使乘积最小,我们把他们类比为上图中的向量,是最小既是两个向量夹角180,以圆的半径为长度所形成的步伐是最优的。

再进行化简即可得到我们梯度下降的公式:
在这里插入图片描述

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

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值