10個梯度下降優化算法

梯度下降是一種尋找函數極小值的優化方法,在深度學習模型中常常用來在反向傳播過程中更新神經網絡的權值。
優化算法演化圖

在這裏插入圖片描述

梯度下降法優化器對梯度部分使用的是指數移動平均值(EMA),對學習率部分使用均方根(RMS)。

爲什麼要對梯度取指數移動平均?

我們需要使用一些數值來更新權重。我們唯一有的數值呢就是當前梯度,所以讓我們利用它來更新權重。

但僅取當前梯度值是不夠好的。我們希望我們的更新是(對模型來說,是)“更好的指導”。讓我們考慮(每次更新中)包括之前的梯度值。

將當前梯度值和過去梯度信息的結合起來一種方法是,我們可以對過去和現在的所有梯度進行簡單的平均。但這意味着每個梯度的權重是相等的。這樣做是反直覺的,因爲在空間上,如果我們正在接近最小值,那麼最近的梯度值可能會提供更有效的信息。
因此,最安全的方法是採用指數移動平均法,其中最近的梯度值的權重(重要性)比前面的值高。

爲什麼要把學習速率除以梯度的均方根呢?

這個目的是爲了調整學習的速率。調整爲了適應什麼?答案是梯度。我們需要確保的是,當梯度較大時,我們希望更新適當縮小(否則,一個巨大的值將減去當前的權重!)
爲了到達這種效果,讓我們學習率α除以當前梯度得到一個調整學習速率。

請記住,學習率成分必須始終是正的(因爲學習率成分,當乘以梯度成分,後者應該有相同的符號)。爲了確保它總是正的,我們可以取它的絕對值或者它的平方。當我們取當前梯度的平方,可以再取平方根"取消"這個平方。

但是就像動量的思路一樣,僅僅採用當前的梯度值是不夠好的。我們希望我們的訓練中的(每次)更新update都能更好的指導(模型)。因此,我們也需要使用之前的梯度值。正如上面所討論的,我們取過去梯度的指數移動平均值(‘mean
square’) ,然後取其平方根(‘root’) ,也就是’均方根’(RMS)。除了 AdaGrad
(採用累積的平方梯度之和)之外,本文中所有的優化器都會對學習速率部分進行優化。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章