Framework

A#Optimization Algorithm

SGD -> SGDM -> NAG ->AdaGrad -> AdaDelta -> Adam -> Nadam

Framework

Before we begin, we should define some definition:

+ **The parameters wait to be optimized:** $\theta$ + **target function:** $f(\theta)$ + **Gradient:** $g_t=\nabla f(\theta)$ + **First order momentum:** $m_t$ + **Second order momentum:** $V_t$ + **calculate current Gradient:**$\eta_t=\alpha \cdot\frac{m}{\sqrt{V_t}}$ + **Update:** $\theta_{t+1}=\theta_{t}-\eta_t$

SGD

the most simple optimization algorithm

Update:
Because SGD doesn’t use momentum, so
$m_t=g_t,V_t=I^2$

SGDM(SGD with Momentum)

$m_t=\beta_1\cdot m_{t-1}+(1-\beta_1)\cdot g_t$

$\eta_t=\alpha\cdot g_t$

t时刻的下降方向,不仅由当前点的梯度方向决定,而且由此前累积的下降方向决定

Nesterov Accelerated Gradient(NAG)

Alt text
NAG在步骤1,不计算当前位置的梯度方向,而是计算如果按照累积动量走了一步,那个时候的下降方向:
然后用下一个点的梯度方向,与历史累积动量相结合,计算步骤2中当前时刻的累积动量。

AdaGrad

The beginning of using Second order momentum
Alt text
Alt text二阶动量越大,学习率就越小。
也存在一些问题:因为$\sqrt{V_t} $是单调递增的,会使得学习率单调递减至0,可能会使得训练过程提前结束,即便后续还有数据也无法学到必要的知识。

AdaDelta / RMSProp

由于AdaGrad单调递减的学习率变化过于激进,我们考虑一个改变二阶动量计算方法的策略:不累积全部历史梯度,而只关注过去一段时间窗口的下降梯度。这也就是AdaDelta名称中Delta的来历。

Alt text

Adam

Adam 运用上了一阶动量和二阶动量

Alt text

Nadam

…继续进化,加上Nesterov
Alt text

-------------End of this passage-------------