李宏毅机器学习笔记 Day5 梯度下降法的优化

1,112 阅读3分钟

复习梯度下降法

在回归问题中。我们需要找到最佳function,评判标准就是Loss(params)小越好。为了找到最小的Loss值,我们需要梯度下降法。

  1. 随机选取起始参数w。
  2. 求出微分值dL/dw,引入学习率η。
  3. 更新参数w = w - η * (dL/dw)
  4. 重复2/3步知道找到最优解,即微分等于0的点。(线性回归只有全局最优解,不考虑局部最优解的情况)

自适应学习率

在之前的学习中,我们的学习率η一直是固定值。

但是最适合的学习率并不是一成不变的,在实际情况中,不同的参数需要各自不同的学习率,并且我们通常都需要随着训练次数的增加而改变学习率的值。

  • 通常刚开始,初始点会里全局最优解比较远,这时候需要的学习率就比较大。
  • 更新参数一段时间之后,较为靠近最优解,学习率应该适当减小。
  • 因此,我们简单地令η = η/(更新次数+1)^1/2即可做到随着参数的更新而自动更新学习率。

Adagrad算法

adagrad4.png 定义:每个参数的学习率η都把他除以之前微分的均方根来进行更新。

自适应学习率.png 如图,对比了普通的梯度下降法和Adagrad算法的差异。

Adagrad最终呈现的结果

分母约掉之后,更新参数的式子变得十分简洁。 adagrad.png

最终式中分母的含义

我们可以直观地看出,微分值越大,乘以的微分会使参数更新步长变得更大;但同时分母均方根的存在又会在微分值越大时令步长变小。这么看似乎两个因素中和了一下步长。 adagrad的矛盾之处.png

adagrad分母的含义.png 实际上,我们知道最好的步长是:一次微分/二次微分 但由于计算二次微分计算量过大,所以我们希望用均方根的形式模拟二次微分,在计算量不增大过多的同时模拟出最佳步长的情况。

以上,Adagrad算法。

随机梯度下降法

定义:损失函数不需要处理完训练集全部的数据再更新参数,而是每处理完一组单独的个体数据之后就即可更新参数。

这种梯度下降法显然随机性更大,精度不高,但是下降得更快。例如训练集中有20组数据,正常梯度下降法处理完20组数据后下降一次,而随机梯度下降法这时候已经下降了20次。

特征缩放

如果不同维度的输入特征数值量级差距过大,则会导致不同的特征值对输出结果的影响权重不同,这时需要对不同维度的特征值进行缩放,以平衡各类特征值的影响权重。

特征缩放.png

梯度下降停止的各类情况

梯度下降法停止的各种情况.png

  1. 是局部极值点也是全局极值点
  2. 仅是局部极值点
  3. 鞍点
  4. 人为定义微分值小于一定数值就停止,所以在过于平缓的微分非零点也可能停止更新参数。