Gradient descent
1 回顾
在实际模型中,我们需要对参数进行处理,使用梯度下降法。
梯度下降过程
实际要求:
θ=argmaxL(θ)
L为损失函数,θ为参数
选取相应参数:θ1,θ2
随机选取初始值:θ0=θ10θ20
梯度下降:
梯度:
算法过程:
Gradient:loss的等高线的法线方向
2 调节你的学习率
学习率:梯度下降的步长,也是决定学习器的学习速度
如图,如果学习率太小,会导致学习的速度会很慢很慢,学习率太大,可能会导致略过极小值,学习率要合适。确保损失函数为稳定的下降。
图2-1 学习率
调节学习率比较繁琐,但是有自动的方法帮我们调节,经常学习率是要随着参数的不断更新,学习率要不断调节小。即靠近目标时,要调节为较小的学习率,为了使目标收敛。举例: 学习率的一种选择方法。
实际中,不同参数选择不同学习率。
3 adagrad
每一个参数的学习率都除以之前的微分值的方均根。
Vanilla gradient descent:w是某一个参数
Adagrad: g偏微分,σ过去所有参数的方均根。
图3-1 adagrad
如图可知,学习率为ηtσt,整体学习率会越来越小,速度也越来越慢。
注意:如图3-2在一般梯度下降中,随着梯度越大,移动的步长也就会越大。
但在adagrad,梯度越大,可能会出现反差,即移动的步长反而会减小。而Adagrad使用之中,求均值的分母会被约掉。
图3-2
最好的步长发现是一次微分与二次微分的比值的绝对值。 最好的步长与微分的大小成正比。
多参数:单参数选取最好的步长方法不一定成立,最好的步长发现是一次微分与二次微分的比值的绝对值。
使用一次微分估计二次微分吗,所以该式子可以反映出二次微分的大小,不用直接计算。
图3-2 二次微分
4 随机梯度下降Stochastic gradient dsecent
每次进行随机取样本,只取一个,进行计算loss function,梯度。由于每次只考虑一个样本,速度将会变快。使用时,可以进行特称缩放,将各个参数分布特征转化为相似分布特征。否则,数值较大的参数会对loss影响较大。
如何做特征缩放呢,可以求整个样本的平均值与方差,计算:
这样可以使分布均值为0,方差为1。
5 其他
可以使用泰勒级数把loss function简化。在小范围内可以更快速地计算出结果。
图5-1泰勒级数用于分析梯度下降
实际发现,为了让损失函数最小,即让上图中的两个∆θ之和最小,可知,该值最小应与u、v反方向。
梯度下降问题:局部最优值与驻点。
图5-2 驻点与局部最优