梯度下降法
这种算法比较直白,参数的变化量完全依赖于学习率和当前batch的损失。缺点也很明显,因为batch是随机的,所以变化的方向不确定。
从梯度下降法可以看出,参数的变化量完全依赖于学习率和当前batch的损失。所以有两种改进方法,一种是改进“损失”,另外一种则是改进学习率。
momentum
momentum算法是用于改进梯度下降法的。momentum算法的公式为:
参数的变换量又两部分组成,一部分是“惯性”,另一部分是损失,可以降低batch不均匀的影响。
adagrad
adagrad是一种自动修改学习率的算法,其公式为:
其学习率为初始学习率/梯度平方的累积和。所以可以得知,越到后期,随着梯度平方的累计和越来越大,学习率就会越来越小。
adagrad可以解决学习后期学习率过大导致的震荡问题,但是adagrad又引发了一个新的问题,就是学习率会过早的减少,导致学习太慢。
RMSprop
RMSprop是adagrad的改进版,其公式为:
adagrad算法需要累计遥远的历史信息,RMSprop则仅仅使用最近的信息,一样能达到降低学习率的效果,并且不会过早衰减,节省内存,在非凸的情况下表现比adagrad更好。