ML/DL学习笔记3——梯度下降Gradient Descent

课程链接

什么是梯度?

    梯度的本意是一个向量(矢量),表示某一函数在该点处的方向导数沿着该方向取得最大值,即函数在该点处沿着该方向(此梯度的方向)变化最快,变化率最大(为该梯度的模)。

    通俗的来说梯度是要解决这么一个问题
    函数在变量空间(变量的维度可能很高)的某一点,沿着那个方向有最大的变化率?梯度退化到xoy平面的二维空间,其实就是导数的概念。

    需要注意如下几点:
    1.梯度是一个向量,既有大小又有方向。
    2.梯度的方向是最大方向导数的方向。
    3.梯度的模是方向导数的最大值。

    为什么说梯度方向与等高线切线方向垂直
    推导了一下附上截图哈哈(字有点丑-_-)
在这里插入图片描述
回顾

    前面预测宝可梦cp值的例子里,已经初步介绍了Gradient Descent的用法:
在这里插入图片描述
在这里插入图片描述

    红色箭头是指在( θ 1 \theta_1 θ1, θ 2 \theta_2 θ2)这点的梯度,梯度方向即箭头方向(从低处指向高处),梯度大小即箭头长度(表示在 θ i \theta^i θi点处最陡的那条切线的导数大小,该方向也是梯度上升最快的方向)

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

    初始随机在三维坐标系中选取一个点,这个三维坐标系的三个变量分别为( θ 1 \theta_1 θ1, θ 2 \theta_2 θ2,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反
    而会变大)
在这里插入图片描述

当参数有很多个的时候(>3),其实我们很难做到将loss随每个参数的变化可视化出来(因为最多只能可视化出三维的图像,也就只能可视化三维参数),但是我们可以把update的次数作为唯一的一个参数,将loss随着update的增加而变化的趋势给可视化出来(上图右半部分)

所以做gradient descent一个很重要的事情是,要把不同的learning rate下,loss随update次数的变化曲线给可视化出来,它可以提醒你该如何调整当前的learning rate的大小,直到出现稳定下降的曲线

Adaptive Learning rates(自适应学习率)

手动去调节学习率是一件很麻烦的事情我们需要一种自动调节学习率的方法

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

因为在起始点的时候,通常是离最低点是比较远的,这时候步伐就要跨大一点;而经过几次update以后,会比较靠近目标,这时候就应该减小learning rate,让它能够收敛在最低点的地方

举例:假设到了第t次update,此时:
在这里插入图片描述
这种方法使所有参数以同样的方式同样的learning rate进行update,而最好的状况是每个参数都给他不同的learning rate去update

Adagrad
Adagrad就是将不同参数的learning rate分开考虑的一种算法(adagrad算法update到后面速度会越来越慢,当然这只是adaptive算法中最简单的一种)
在这里插入图片描述
这里的w是function中的某个参数,t表示第t次update, g t g^t gt表示Loss对w的偏微分,而 σ t \sigma^t

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值