上一个章节说了SGD和动量版本的SGD,这个优化算法目前也是比较常用的一个优化算法,但是它还是存在一些问题的,因此后面又出了几个不同的算法,比如AdaGrad、RMSProp、Adam等算法。
1、SGD存在的问题
使用相同的学习率对每个参数更新。需要选择足够小的学习率使得自变量在梯度较大的维度上不发散。这样会导致自变量在梯度较小的维度上迭代太慢了。动量法是为了让自变量的更新方向更加一致,从而降低发散可能。
2、AdaGrad
因为SGD存在不同的参数使用同一个学习率会造成一些问题,有的参数已经更新到最优值,另外一些参数还没有更新到最优值,这样在一次更新会造成之前已经更新到最优值的参数不稳定,因此在AdaGrad这个算法里就想给每个参数都以不同的学习率进行更新,在每个维度的梯度值来调整 各个维度上的学习率。
核心思想:利用了梯度的累计平方值,如果历史梯度频繁更新,那么一开始梯度会急剧减小,更新非常快。如果有些参数的更新比较慢,那么学习率比较大,更新的较快。
表示第t时间步的梯度,
表示第t时间步的梯度平