临界点其实不一定是在训练神经网络过程中遇到的最大阻碍。
随着对参数的不断更新,Loss值会不断下降,直至几乎没有变化,不再下降。当参数更新到临界点时,意味着gradient非常小,所以要认定参数是否到达临界点应当确认gradient值是否很小。当Loss不再下降时,且gradient没有很小,则说明此时参数并未到达临界点。
训练停滞小的梯度
Loss几乎不再变化,但gradient却还在变化,可以发生了锯齿现象。
梯度下降法的锯齿现象是指在优化过程中参数更新呈现来回震荡的趋势,导致迭代路径形成类似锯齿的形状。这种现象通常发生在目标函数具有高频振荡特性或学习率设置过高时,参数更新可能超过最优解并反复震荡。
学习率也可以理解为步长,如果太大会产生震荡的效果,但是如果太小则很难靠近真正的Loss值最小的点。
学习率应当为每一个参数量身定做。
如果在某一个方向上变化十分平坦(坡度很小),则我们希望学习率可以变大一些,如果在某一个方向上非常陡峭(坡度很大),我们希望学习率可以变小一些。
原先的式子:
可以自动调整学习率的式子:
i表示第i个参数(某一个参数),t代表的是参数的迭代次数,是学习率。
Root Mean Square
当在一条坡度较小的曲线上时,算出的均方根较小所以学习率(红框)就大,步伐大;反之在一条坡度较大的曲线上时,算出的出的均方根较小所以学习率(红框)就小,步伐小。
以上所考虑的是同一个参数,其梯度的大小(变化率)是固定差不多的值。
RMSProp
但是实际上,情况会十分复杂,就算是同一个参数、同一个方向,也想要学习率可以动态调整。
第一步,与均方根的方法相同。第二步 ,均方根中每一个gradient都有同等的重要性,但在RMSProp中,可以自己调整现在的这个gradient的权重。
学习率调整机制(Learning Rate Scheduling)
为防止出现大幅波动的情况,引入学习率调整机制。
此时的与时间有关。
Learning Rate Decay
随着时间的不断进行,随着参数不断的更新,让其越来越小,因为一开始距离终点很远,随着参数的不断更新,距离终点你越来越近,所以把学习率减小,让参数的更新慢下来。
Warm Up
Warm Up的思想是让先变大再变小。
总结
Momentum和都是考虑到过去所以的gradient,它们会不会相互抵消呢,其实他们在使用过去所有gradient的方式不同。Momentum是直接将所有的gradient通通加起来,所有它有考虑方向,也有考虑gradient的正负号。但是均方根就不考虑gradient方向了,它只考虑的是gradient的大小。所有它们不会互相抵消掉。