SGD即随机梯度下降法,在每次更新中,计算一个Minibatch的数据,然后以Minibatch中数据的总损失对神经网络各权值求梯度来进行权值更新,作为训练中的一个step。
更新方程为:
Adagrad在每一个更新步骤中对于每一个模型参数Wi使用不同的学习速率ηi,
Wt+1,i=Wt,i−η∑tl=0g2l,i+e−−−−−−−−−−√gt,i W t + 1 , i = W t , i − η ∑ l = 0 t g l , i 2 + e g t , i
可以看到,式中学习率会除以该权值历史所有梯度的平方根,由于梯度会累加得越来越大,也就可以达到衰减学习率的效果。
其中,e是一个平滑参数,为了使得分母不为0(通常e=1e−8),另外,如果分母不开根号,算法性能会很糟糕。
其优点很明显,可以使得学习率越来越小,而且每个权值根据其梯度大小不同可以获得自适应的学习率调整。
其缺点在于需要计算参数梯度序列平方和,并且学习速率趋势会较快衰减达到一个非常小的值
为了缓解Adagrad学习率衰减过快,首先当然就是想到降低分子里的平方和项,RMSprop是通过将平方和变为加权平方和,即
也就是说平方和项随着时间不断衰减,过远的梯度将不影响学习率
此时更新公式变为
Wt+1,i=Wt,i−nrt,i+e−−−−−−√gt,i W t + 1 , i = W t , i − n r t , i + e g t , i
具体描述: