当前位置: 代码迷 >> 综合 >> 机器学习03-梯度下降(Gradient Descent)
  详细解决方案

机器学习03-梯度下降(Gradient Descent)

热度:63   发布时间:2024-01-28 06:32:41.0

东阳的学习记录,坚持就是胜利!

文章目录

    • 什么是梯度
    • 梯度下降
      • 选择合适的学习率
      • 自适应的学习率
        • Adagrad
        • 矛盾吗??
      • 反差
      • 随机梯度下降
        • 示意图
      • 特征缩放(Feature Scaling)
        • 怎么做特征缩放
    • 梯度下降的数学原理
      • 思考题
      • 如何实现梯度下降
      • 怎么确定红色圈内的最低点
        • 泰勒公式
        • 牛顿法是把二次项也考虑进来的
    • 梯度下降的问题

什么是梯度

梯度就是数学上的导数概念。
在这里插入图片描述
Gradient: Loss的法线方向
在这里插入图片描述

梯度下降

选择合适的学习率

  • 学习率过小,参数更新的太慢,导致训练时间长
  • 学习率过大,导致无法收敛,在最优解附近震荡

将参数变化和loss图像可视化
在这里插入图片描述

自适应的学习率

通常的做法:随着迭代轮数的增加,增大学习率。

  • 在训练开始时,选择一个比较大的学习率,能帮助模型更快收敛;
  • 再经过多次迭代后 ,将学习率调小,这样可以避免在最优解附近震荡;
  • eg: η t = η / t + 1 η_t = η / t + 1

学习率的选择并不能一刀切:

  • 对于不同的参数需要设置不同的学习率

Adagrad

将每个参数的学习率除以过去各个时间该参数的平方和。
在这里插入图片描述
在这里插入图片描述

矛盾吗??

在这里插入图片描述

反差

在这里插入图片描述
使用这样的学习率,可以突出改参数与之前的反差。

由下图可以看到,最好的学习率等于 / 一次微分/二次微分
在这里插入图片描述
在实际应用中,为了减少运算,通常使用过去参数的平方和来代替。

随机梯度下降

使训练更快

  • 传统的梯度下降:
    在这里插入图片描述
    传统的梯度下降,每次更新参数都需要考虑所有样本。

  • 随机梯度下降:
    在这里插入图片描述
    考虑一个样本进行梯度下降

示意图

如下图所示,随机梯度下降法,对每一个样本都进行一次梯度下降,假设有20个样本,那么在传统方法只进行了一次参数更新时,随机梯度下降方法已经进行了20次。大大缩短训练时长。
在这里插入图片描述

特征缩放(Feature Scaling)

通过特征缩放,使得不同的特征,有着同样的缩放比例。

在这里插入图片描述
gradient下降的方向并不是指向最低点,但是当特征等高线为圆时是指向最低点的,可以使训练更快。

怎么做特征缩放

  • 归一化
    在这里插入图片描述

梯度下降的数学原理

思考题

每次更新参数后,Loss一定会变小吗?这里老师举了一个我的世界的例子。(并不一定

如何实现梯度下降

在当前参数周围画一个很小的红色圈圈,在该红色圈圈内找到最低点。
在这里插入图片描述

怎么确定红色圈内的最低点

泰勒公式

在这里插入图片描述
在这里插入图片描述
即需要找到sita1, sita2的值使得L最小。
在这里插入图片描述
其中u, v是对应的偏微分大小。其中红色圈圈的半径需要足够小!!!(这个半径与学习率有关,所以需要学习率不能过大)
在这里插入图片描述

牛顿法是把二次项也考虑进来的

目前该方法并不普及,虽然可以提高参数更新的准确率,但是计算代价很高。

梯度下降的问题

  • 可能是局部最优解(local minima),也可能并不是局部最优解(saddle point)。
    在这里插入图片描述
  相关解决方案