优化算法框架
优化算法的框架如下所示:
其中,$w_i$为i时刻的权值,$\eta_i$为i时刻的优化量;$\alpha$为学习率,$m_t$为一阶动量,$V_t$为二阶动量。一阶动量和二阶动量都与梯度有关,如下所示:
一阶动量和二阶动量均是历史梯度和当前梯度的函数
优化算法
固定学习率优化算法
学习率固定的优化算法均有一个特点:不考虑二阶动量(即$M_2(g_i) = I$)
随机梯度下降(SGD)
随机梯度下降时最简单的优化算法,有:$m_t = g_t,V_t = I$,带入公式有优化公式为:$\eta_t = \alpha \cdot g_t$
带动量的随机梯度下降(SGD with Momentum)
随机梯度下降加上动量项,即考虑梯度累积,有:
SGD with Nesterov Acceleration
在计算梯度的时候向前考虑一步,即计算梯度的时候,计算再沿着上一次更新方向更新一次的权值的梯度,有:
自适应学习率优化算法
自适应学习率的优化算法考虑二阶动量,一般来说,一阶动量决定优化方向,二阶动量自适应学习率
AdaGrad
二阶动量取梯度平方和:$Vt = \sum\limits^t{i=1} g^2_i$,此时,$\eta_t = \cfrac{\alpha}{\sqrt{V_t}} \cdot m_t$,可以将$\cfrac{\alpha}{\sqrt{V_t}}$视为自适应的学习率:梯度不断累积,学习率单调下降。且梯度累积越快,学习率下降越快。
AdaDelta/RMSProp
二阶动量取梯度在一定范围内的平方和:
Adam
Adam综合使用了一阶动量项和二阶动量项,即:
Nadam
Nadam为使用了Nesterov和Adam的结合,有:
混合方法:Adam+SGD
很多论文指出Adam虽然收敛较快,但效果不如SGD,因此,《Improving Generalization Performance by Switching from Adam to SGD》提出了一种算法,前期使用Adam算法,后期使用SGD,如下图所示:
