進階最佳化

Nesterov 加速梯度(Nesterov accelerated gradient)

單純的動量累積過去梯度形成的速度,這加快了進展、卻也容易衝過頭,因為它是對「自己當前所站之處」的坡度反應。Nesterov 加速梯度加上了一點點先見之明:先用動量走到一個前瞻點,再在那裡量梯度,於是這個方法能感覺到前方有一道牆、在衝過頭之前先煞車。光是改變「在哪裡求梯度」這一點,結果就帶來可證明更快的收斂率。

更新是 v <- mu v - eta grad L(theta + mu v),接著 theta <- theta + v,因此梯度是在前瞻位置 theta 加 mu v、而非在 theta 本身求的。對平滑凸目標而言,這個方法達到 t 平方分之一階的收斂率,相對於一般梯度下降的 t 分之一階,而這個速率正好匹配一階方法已知的下界,這也是它被稱為最優加速的原因。

Nesterov 的方案是最佳化中加速的典範概念,並是許多加速與近端演算法(包括 FISTA)的基礎。在深度學習中,前瞻形式是對一般動量一個小而通常有益的調整,不過當動量係數 mu 被推到接近一時它會變得敏感,那時它可能放大雜訊、而非抑制它。

v_{t} = \mu v_{t-1} - \eta\nabla L(\theta_t + \mu v_{t-1}),\qquad \theta_{t+1} = \theta_t + v_t

梯度在前瞻點 theta + mu*v 處求值。

加速並非神奇地用了曲率:Nesterov 的方法仍是一階的、只用梯度,卻可證明勝過單純的梯度下降,說明光靠巧妙的外推就能達到一階方法的最優速率。

又称
NAGNesterov momentumNesterov 動量