深度學習優化函式詳解(5)-- Nesterov accelerated gradient (NAG)
阿新 • • 發佈:2019-01-05
深度學習優化函式詳解系列目錄
上一篇文章講解了猶如小球自動滾動下山的動量法(momentum)這篇文章將介紹一種更加“聰明”的滾動下山的方式。動量法每下降一步都是由前面下降方向的一個累積和當前點的梯度方向組合而成。於是一位大神(Nesterov)就開始思考,既然每一步都要將兩個梯度方向(歷史梯度、當前梯度)做一個合併再下降,那為什麼不先按照歷史梯度往前走那麼一小步,按照前面一小步位置的“超前梯度”來做梯度合併呢?如此一來,小球就可以先不管三七二十一先往前走一步,在靠前一點的位置看到梯度,然後按照那個位置再來修正這一步的梯度方向。如此一來,有了超前的眼光,小球就會更加”聰明“, 這種方法被命名為Nesterov accelerated gradient 簡稱 NAG。
↑這是momentum下降法示意圖
↑這是NAG下降法示意圖
看上面一張圖仔細想一下就可以明白,Nesterov動量法和經典動量法的差別就在B點和C點梯度的不同。
公式推導
上圖直觀的解釋了NAG的全部內容。
第一次看到NAG的梯度下降公式的時候我是懵的,梯度下降的流程比較明白,公式上不太理解。後來推導了好半天才得到NAG的公式,下面就把我推導的過程寫出來。我推導公式的過程完全符合上面NAG的示意圖,可以對比參考。
記 為第t次迭代梯度的累積
引數更新公式
公式裡的 就是圖中B到C的那一段向量, 就是C點的座標(引數)
代表衰減率, 代表學習率。
實驗
實驗選擇了學習率 , 衰減率
↑ 這是Nesterov方法
↑ 這是動量法(momentum)
沒有對比就沒有傷害,NAG方法收斂速度明顯加快。波動也小了很多。實際上NAG方法用到了二階資訊,所以才會有這麼好的結果。