复习梯度下降法
在回归问题中。我们需要找到最佳function,评判标准就是Loss(params)小越好。为了找到最小的Loss值,我们需要梯度下降法。
- 随机选取起始参数w。
- 求出微分值dL/dw,引入学习率η。
- 更新参数w = w – η * (dL/dw)
- 重复2/3步知道找到最优解,即微分等于0的点。(线性回归只有全局最优解,不考虑局部最优解的情况)
自适应学习率
在之前的学习中,我们的学习率η一直是固定值。
但是最适合的学习率并不是一成不变的,在实际情况中,不同的参数需要各自不同的学习率,并且我们通常都需要随着训练次数的增加而改变学习率的值。
- 通常刚开始,初始点会里全局最优解比较远,这时候需要的学习率就比较大。
- 更新参数一段时间之后,较为靠近最优解,学习率应该适当减小。
- 因此,我们简单地令η = η/(更新次数+1)^1/2即可做到随着参数的更新而自动更新学习率。
Adagrad算法
定义:每个参数的学习率η都把他除以之前微分的均方根来进行更新。
如图,对比了普通的梯度下降法和Adagrad算法的差异。
Adagrad最终呈现的结果
分母约掉之后,更新参数的式子变得十分简洁。
最终式中分母的含义
我们可以直观地看出,微分值越大,乘以的微分会使参数更新步长变得更大;但同时分母均方根的存在又会在微分值越大时令步长变小。这么看似乎两个因素中和了一下步长。
实际上,我们知道最好的步长是:一次微分/二次微分
但由于计算二次微分计算量过大,所以我们希望用均方根的形式模拟二次微分,在计算量不增大过多的同时模拟出最佳步长的情况。
以上,Adagrad算法。
随机梯度下降法
定义:损失函数不需要处理完训练集全部的数据再更新参数,而是每处理完一组单独的个体数据之后就即可更新参数。
这种梯度下降法显然随机性更大,精度不高,但是下降得更快。例如训练集中有20组数据,正常梯度下降法处理完20组数据后下降一次,而随机梯度下降法这时候已经下降了20次。
特征缩放
如果不同维度的输入特征数值量级差距过大,则会导致不同的特征值对输出结果的影响权重不同,这时需要对不同维度的特征值进行缩放,以平衡各类特征值的影响权重。
梯度下降停止的各类情况
- 是局部极值点也是全局极值点
- 仅是局部极值点
- 鞍点
- 人为定义微分值小于一定数值就停止,所以在过于平缓的微分非零点也可能停止更新参数。