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

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

什么是梯度

梯度就是数学上的导数概念。
机器学习03-梯度下降(Gradient Descent)
Gradient: Loss的法线方向
机器学习03-梯度下降(Gradient Descent)

梯度下降

选择合适的学习率

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

将参数变化和loss图像可视化
机器学习03-梯度下降(Gradient Descent)

自适应的学习率

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

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

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

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

Adagrad

将每个参数的学习率除以过去各个时间该参数的平方和。
机器学习03-梯度下降(Gradient Descent)
机器学习03-梯度下降(Gradient Descent)

矛盾吗??

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

反差

机器学习03-梯度下降(Gradient Descent)
使用这样的学习率,可以突出改参数与之前的反差。

由下图可以看到,最好的学习率等于/一次微分/二次微分
机器学习03-梯度下降(Gradient Descent)
在实际应用中,为了减少运算,通常使用过去参数的平方和来代替。

随机梯度下降

使训练更快

  • 传统的梯度下降:
    机器学习03-梯度下降(Gradient Descent)
    传统的梯度下降,每次更新参数都需要考虑所有样本。

  • 随机梯度下降:
    机器学习03-梯度下降(Gradient Descent)
    考虑一个样本进行梯度下降

示意图

如下图所示,随机梯度下降法,对每一个样本都进行一次梯度下降,假设有20个样本,那么在传统方法只进行了一次参数更新时,随机梯度下降方法已经进行了20次。大大缩短训练时长。
机器学习03-梯度下降(Gradient Descent)

特征缩放(Feature Scaling)

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

机器学习03-梯度下降(Gradient Descent)
gradient下降的方向并不是指向最低点,但是当特征等高线为圆时是指向最低点的,可以使训练更快。

怎么做特征缩放

  • 归一化
    机器学习03-梯度下降(Gradient Descent)

梯度下降的数学原理

思考题

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

如何实现梯度下降

在当前参数周围画一个很小的红色圈圈,在该红色圈圈内找到最低点。
机器学习03-梯度下降(Gradient Descent)

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

泰勒公式

机器学习03-梯度下降(Gradient Descent)
机器学习03-梯度下降(Gradient Descent)
即需要找到sita1, sita2的值使得L最小。
机器学习03-梯度下降(Gradient Descent)
其中u, v是对应的偏微分大小。其中红色圈圈的半径需要足够小!!!(这个半径与学习率有关,所以需要学习率不能过大)
机器学习03-梯度下降(Gradient Descent)

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

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

梯度下降的问题

  • 可能是局部最优解(local minima),也可能并不是局部最优解(saddle point)。
    机器学习03-梯度下降(Gradient Descent)