神經網絡中自適應的梯度下降優化算法(二)

Adagrad(Adaptive gradient algorithm)

Adagrad算法可以針對不同的參數自適應的採用不同的更新頻率,對低頻出現的特徵採用低的更新率,對高頻出現的特徵採用高的更新率,因此,對於稀疏的數據它表現的很好,很好的提升了SGD的魯棒性,在Google的通過Youtube視頻識別貓的神經網絡訓練中有很好的表現。

梯度更新規則:

神經網絡中自適應的梯度下降優化算法(二)

g(t,i)表示在t時刻目標函數對θ(i)的偏導數。SGD的每個參數的更新過程如下:

神經網絡中自適應的梯度下降優化算法(二)

Adagrad的每個參數更新過程如下:

神經網絡中自適應的梯度下降優化算法(二)

G(t)是一個對角矩陣,對角線上的每個元素是t時刻前所有θ(i)的梯度的平方和。ε通常取值在1e-8量級,它的存在是為了避免除數為0。一個有趣的現象是,如果沒有平方根操作,算法的表現就非常糟糕。

Adagrad的主要缺點是,它的分母是平方梯度的累積,它的值會一直增加,最終導致學習率衰減到非常小,從而使得學習算法無法進行下去。

TensorFlow實現:

tf.train.AdagradOptimizer(learning_rate, initial_accumulator_value=0.1, use_locking=False, name='Adagrad')

Adadelta

Adadelta算法主要解決Adagrad的缺陷,它不再累加過去所有的梯度,而是僅累積過去固定個數的梯度。

Adadelta不是採用平方梯度的簡單累加,而是採用歷史平方梯度的衰減的平均。

神經網絡中自適應的梯度下降優化算法(二)

γ通常等於0.9

神經網絡中自適應的梯度下降優化算法(二)

分母相當於梯度的均方根(root mean squared, RMS),即將所有值平方求和,求其均值,再開平方,就得到均方根值。

神經網絡中自適應的梯度下降優化算法(二)

梯度更新規則:

神經網絡中自適應的梯度下降優化算法(二)
神經網絡中自適應的梯度下降優化算法(二)

將學習率η設置為

神經網絡中自適應的梯度下降優化算法(二)

,我們就不需要提前設定學習率。

RMSprop

RMSprop是Geoff Hinton提出的一種自適應學習率的方法,它與Adadelta方法都是為了解決Adagrad學習率急劇下降問題的。它與Adadelta方法是一致的。

梯度更新規則

神經網絡中自適應的梯度下降優化算法(二)
神經網絡中自適應的梯度下降優化算法(二)

超參數設定值:

Hinton建議設定γ=0.9, 學習率η=0.001。

TensorFlow實現:

tf.train.RMSPropOptimizer.__init__(learning_rate, decay, momentum=0.0, epsilon=1e-10, use_locking=False, name='RMSProp')

Adam:Adaptive Moment Estimation

Adam也是對不同的參數自適應設置不同的學習率。它對歷史梯度和歷史平方梯度同時採用指數梯度衰減(exponentially decaying average)。

梯度更新規則

神經網絡中自適應的梯度下降優化算法(二)

Adam作者觀察到,如果m(t)和v(t)初始化為零向量,並且衰減率很小時(比如β1和β2都非常接近於1時),在開始的迭代中,m(t)和v(t)總是向零偏移,所以需要做偏移校正。

神經網絡中自適應的梯度下降優化算法(二)

然後用校正後的值進行梯度更新:

神經網絡中自適應的梯度下降優化算法(二)

Adam作者建議β1=0.9,β2=0.999,ε=10^{-8}

神經網絡中自適應的梯度下降優化算法(二)

,在實踐中,Adam比其它算法的效果要好。

TensorFlow實現:

tf.train.AdamOptimizer(learning_rate=0.001, beta1=0.9, beta2=0.999, epsilon=1e-08, use_locking=False, name='Adam')

Adamax

Adam更新規則中的梯度縮放與歷史梯度的L2範數成反比。

神經網絡中自適應的梯度下降優化算法(二)

我們可以把這個規則泛化到Lp範數。

神經網絡中自適應的梯度下降優化算法(二)

當p值增大的時候,Lp的值往往會變得不穩定,所以在實踐中L1和L2使用的比較普遍。但是Adamax作者發現L∞可以收斂到一個穩定值。

神經網絡中自適應的梯度下降優化算法(二)

然後我們可以採用u(t)代替

神經網絡中自適應的梯度下降優化算法(二)

來更新Adam中的梯度。

神經網絡中自適應的梯度下降優化算法(二)

同時u(t)不需要做零偏校正。默認取值建議:

神經網絡中自適應的梯度下降優化算法(二)


分享到:


相關文章: