2020李宏毅机器学习笔记-Gradient Descent

Gradient Descent 梯度下降

最优化(optimization)。最优化就是发现能够最小化损失函数值的这组参数W的过程。

最优化的目标是去发现能够最小化损失函数值的那一组权重。

梯度告诉我们损失函数在每个维度上的斜率,所以我们可以使用梯度进行权重更新:梯度会告诉权重W和方向。

 

 

L : loss function 损失函数

θ:parameters(上标表示第几组参数,下标表示这组参数中的第几个参数)

 

gradient descent在投影到二维坐标系中可视化的样子:

红色箭头(θ1,θ2)是指在这点的梯度,梯度方向即箭头方向(从低处指向高处),梯度大小即箭头长度(表示在θi点处最陡的那条切线的导数大小,

该方向也是梯度上升最快的方向)。蓝色曲线代表实际情况下参数θ1和θ2的更新过程图,每次更新沿着蓝色箭头方向loss会减小,蓝色箭头方向与红色箭头方向刚好相反,

代表着梯度下降的方向。因此,在整个gradient descent的过程中,梯度不一定是递减的(红色箭头的长度可以长短不一),但是沿着梯度下降的方向,函数值loss一定是递减的,

且当gradient=0时,loss下降到了局部最小值,总结:梯度下降法指的是函数值loss随梯度下降的方向减小。

gradient梯度可以理解为高度上升最快的那个方向,它的反方向就是梯度下降最快的那个方向,于是每次update沿着梯度反方向,update的步长由梯度大小和learning rate共同决定,

当某次update完成后,该点的gradient=0,说明到达了局部最小值。

 

关于learning rate η (学习率):

 

gradient descent过程中,影响结果的一个很关键的因素就是learning rate的大小:

     1.如果learning rate刚刚好,就可以像下图中红色线段一样顺利地到达到loss的最小值

     2.如果learning rate太小的话,像下图中的蓝色线段,虽然最后能够走到local minimal的地方,但是它可能会走得非常慢,以至于你无法接受

     3.如果learning rate太大,像下图中的绿色线段,它的步伐太大了,它永远没有办法走到特别低的地方,可能永远在这个“山谷”的口上振荡而无法走下去

     4.如果learning rate非常大,就会像下图中的黄色线段,一瞬间就飞出去了,结果会造成update参数以后,loss反而会越来越大(这一点在上次的demo中有体会到,

        当lr过大的时候,每次更新loss反而会变大)。

重要:

所以做gradient descent一个很重要的事情是,要把不同的learning rate下,loss随update次数的变化曲线给可视化出来,

它可以提醒你该如何调整当前的learning rate的大小,直到出现稳定下降的曲线。

 

Adaptive Learning rates(适应性学习率):

显然这样手动地去调整learning rates很麻烦,因此我们需要有一些自动调整learning rates的方法。

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

这种方法使所有参数以同样的方式同样的learning rate进行update,而最好的状况是每个参数都给他不同的learning rate去update。

直观解释:

因为在起始点的时候,通常是离最低点是比较远的,这时候步伐就要跨大一点;而经过几次update以后,会比较靠近目标,

这时候就应该减小learning rate,让它能够收敛在最低点的地方。

 

 

Adagrad

Adagrad就是将不同参数的learning rate分开考虑的一种算法(adagrad算法update到后面速度会越来越慢,当然这只是adaptive算法中最简单的一种)。

这里的w是function中的某个参数,t表示第t次update,表示Loss对w的偏微分,而是之前所有Loss对w偏微分的方均根(根号下的平方均值),

这个值对每一个参数来说都是不一样的。

化简得到adagrad的最终表达式:

Adagrad中contradiction(似乎有矛盾)的解释:

 

但是Adagrad的表达式中,分子gt表示梯度越大需要步伐越大,分母却表示梯度越大 分母倒数步伐却变小了,两者似乎相互矛盾。
在一些paper里是这样解释的:Adagrad要考虑的是,这个gradient有多surprise,即反差有多大。它们的商就会把这一反差效果体现出来

 

gradient越大,离最低点越远这件事情在有多个参数的情况下是不一定成立的​​​​​​:

如下图所示,w1和w2分别是loss function的两个参数,loss的值投影到该平面中以颜色深度表示大小,分别在w2和w1处垂直切一刀(这样就只有另一个参数的gradient会变化),

对应的情况为右边的两条曲线,可以看出,比起a点,c点距离最低点更近,但是它的gradient却越大。

原因:

 

它不仅跟一阶导数(gradient)有关,还跟二阶导数有关,因此我们可以通过这种方法重新比较上面的a和c点,就可以得到比较正确的答案。

所以Adagrad想要做的事情就是,在不增加任何额外运算的前提下,想办法去估测二次微分的值。

 

Stochastic Gradicent Descent(随机梯度下降)

随机梯度下降的方法可以让训练更快速,传统的gradient descent的思路是看完所有的样本点之后再构建loss function,然后去update参数;

而stochastic gradient descent的做法是,看到一个样本点就update一次,因此它的loss function不是所有样本点的error平方和,而是这个随机样本点的error平方。

 

Stochastic Gradient Descent(SGD)与传统Gradient Descent(GD)的效果对比如下:

 

Feature Scaling(特征放缩)

Make different feature have the same scaling.

特征缩放,当多个特征的分布范围很不一样时,最好将这些不同feature的范围缩放成一样

 

原因:

 y = b + w1*x1 + w2*x2,假设x1的值都是很小的,比如1,2...;x2的值都是很大的,比如100,200...

如果对w1和w2都做一个同样的变动,那么w1的变化对y的影响是比较小的,而w2的变化对y的影响是比较大的。

 

左边的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 descent的限制是:它在gradient即微分值接近于0的地方就会停下来,而这个地方不一定是global minima,

它可能是local minima,可能是saddle point鞍点,甚至可能是一个loss很高的plateau平缓高原。

 

 

 

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
的2020机器学习笔记中,有一个关于注意力机制(Attention)的部分。这部分内容主要介绍了生成模型(Generation)、注意力(Attention)、生成的技巧(Tips for Generation)以及指针网络(Pointer Network)。在生成模型中,主要讲述了如何生成一个有结构的对象。接下来介绍了注意力机制,包括一些有趣的技术,比如图片生成句子等。在生成的技巧部分,提到了一些新的技术以及可能遇到的问题和偏差,并给出了相应的解决方案。最后,稍微提到了强化学习。其中还提到了在输出"machine"这个单词时,只需要关注"机器"这个部分,而不必考虑输入中的"学习"这个部分。这样可以得到更好的结果。另外,还提到了关于产生"ei"的方法,其中有研究应用了连续动态模型自注意力(Self-attention)来学习位置编码的方法。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* [2020机器学习笔记-Condition Generation by RNN&Attention](https://blog.csdn.net/zn961018/article/details/117593813)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *3* [机器学习学习笔记:Self-attention](https://blog.csdn.net/weixin_44455827/article/details/128094176)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值