SGD:隨機梯度下降
SGD+Momentum: 基于動量的SGD(在SGD基礎上做過優(yōu)化)
SGD+Nesterov+Momentum:基于動量,兩步更新的SGD(在SGD+Momentum基礎上做過優(yōu)化)
Adagrad:自適應地為各個參數(shù)分配不同學習速率
Adadelta: 針對Adagrad問題,優(yōu)化過的算法(在Adagrad基礎上做過優(yōu)化)
RMSprop:對于循環(huán)神經(jīng)網(wǎng)絡(RNNs)是最好的優(yōu)化器(在Adadelta基礎上做過優(yōu)化)
Adam:對每個權值都計算自適應的學習速率(在RMSprop基礎上做過優(yōu)化)
Adamax:針對Adam做過優(yōu)化的算法(在Adam基礎上做過優(yōu)化)
那么,我們應該選擇使用哪種優(yōu)化算法呢?
如果輸入數(shù)據(jù)是稀疏的,選擇任一自適應學習率算法可能會得到最好的結果。選用這類算法的另一個好處是無需調整學習率,選用默認值就可能達到最好的結果。
如果你的數(shù)據(jù)輸入量很小,那就選一種自適應學習速率的方法。這樣你就不用對學習速率進行調優(yōu),因為你的數(shù)據(jù)本來就小,NN學習耗時也小。這種情況你更應該關心網(wǎng)絡分類的準確率。
RMSprop, Adadelta, 和 Adam 非常相似,在相同的情況下表現(xiàn)都很好。
偏置校驗讓Adam的效果稍微比RMSprop好一點
進行過很好的參數(shù)調優(yōu)的SGD+Momentum算法效果好于Adagrad/Adadelta
如果你關心的是快速收斂和訓練一個深層的或者復雜的神經(jīng)網(wǎng)絡,你應該選擇一個自適應學習率的方法。
結論:到目前(2016.04)為止,如果你不知道為你的神經(jīng)網(wǎng)絡選擇哪種優(yōu)化算法,就直接選Adam吧?。↖nsofar, Adam might be the best overall choice.[2])