[ 路丁前言 ] 优化计算方法的架构以下所显示:$$w_{t 1} = w_t - eta_t \eta_t = cfrac{alpha}{sqrt{V_t}} cdot m_t$$在其中,$w_i$为i時刻的权重值,$eta_i$为i時刻的提升量;$alpha$为学习率,$m_t$为一阶角动量,$V_t$为二阶角动量。二阶角动量取梯度方向平方和:$V_t = sumlimits^t_{i=1} g^2_i$,这时,$eta_t = cfrac{alpha}{sqrt{V_t}} cdot m_t$,能够 将$cfrac{alpha}{sqrt{V_t}}$视作响应式的学习率:梯度方向持续积累,学习率简单降低。且梯度方向积累越快,学习率下
优化计算方法架构
优化计算方法的架构以下所显示:
$$
w_{t 1} = w_t - eta_t
eta_t = cfrac{alpha}{sqrt{V_t}} cdot m_t
$$
在其中,$w_i$为i時刻的权重值,$eta_i$为i時刻的提升量;$alpha$为学习率,$m_t$为一阶角动量,$V_t$为二阶角动量。一阶角动量和二阶角动量都和梯度方向相关,以下所显示:
$$
m_t = M_1(g_1,g_2,...,g_t)
V_t = M_2(g_1,g_2,...,g_t)
g_t = abla f(w_t)
$$
一阶角动量和二阶角动量均是历史时间梯度方向和当今梯度方向的涵数
优化计算方法
固定不动学习率优化计算方法
学习率固定不动的优化计算方法均有一个特性:不考虑到二阶角动量(即$M_2(g_i) = I$)
任意梯度下降(SGD)
任意梯度下降时非常简单的优化计算方法,有:$m_t = g_t,V_t = I$,带到公式计算有提升公式计算为:$eta_t = alpha cdot g_t$
推动量的任意梯度下降(SGD with Momentum)
任意梯度下降再加角动量项,即考虑到梯度方向积累,有:
$$
g_t = abla f(w_t)
m_t = eta cdot m_{t-1} (1-eta)cdot g_t
eta_t = alpha cdot m_t
$$
SGD with Nesterov Acceleration
在预估梯度方向的情况下往前考虑到一步,即测算梯度方向的情况下,测算再顺着上一次升级方位升级一次的权重值的梯度方向,有:
$$
g_t = abla f(w_t alpha cdot m_{t-1})
m_t = eta cdot m_{t-1} (1-eta)cdot g_t
eta_t = alpha cdot m_t
$$
响应式学习率优化计算方法
响应式学习率的优化计算方法考虑到二阶角动量,一般来说,一阶角动量决策提升方位,二阶角动量响应式学习率
AdaGrad
二阶角动量取梯度方向平方和:$V_t = sumlimits^t_{i=1} g^2_i$,这时,$eta_t = cfrac{alpha}{sqrt{V_t}} cdot m_t$,能够 将$cfrac{alpha}{sqrt{V_t}}$视作响应式的学习率:梯度方向持续积累,学习率简单降低。且梯度方向积累越快,学习率降低越快。
AdaDelta/RMSProp
二阶角动量取梯度方向在一定范畴内的平方和:
$$
V_1 = g^2_1
V_t = eta cdot V_{t-1} (1-eta) cdot g_t^2
$$
Adam
Adam综合性应用了一阶角动量项和二阶角动量项,即:
$$
g_t = abla f(w_t)
m_1 = g_1,V_1 = g_1^2
m_t = eta_1 cdot m_{t-1} (1-eta_1)cdot g_t
V_t = eta_2 cdot V_{t-1} (1-eta_2) cdot g_t^2
$$
Nadam
Nadam为应用了Nesterov和Adam的融合,有:
$$
g_t = abla f(w_t cfrac{alpha}{sqrt{V_{t-1}}} cdot m_{t-1})
m_1 = g_1,V_1 = g_1^2
m_t = eta_1 cdot m_{t-1} (1-eta_1)cdot g_t
V_t = eta_2 cdot V_{t-1} (1-eta_2) cdot g_t^2
$$
混和方式:Adam SGD
许多毕业论文强调Adam尽管收敛性较快,但实际效果比不上SGD,因而,《Improving Generalization Performance by Switching from Adam to SGD》明确提出了一种优化算法,早期应用Adam优化算法,中后期应用SGD,如下图所显示:
评论