轉載自:《動手學深度學習》之優化算法
另外,知乎上一篇文章也總結很好:優化算法Optimizer比較和總結
優化與深度學習
- 由于優化算法的目标函數通常是一個基于訓練資料集的損失函數,優化的目标在于降低訓練誤差。
- 由于深度學習模型參數通常都是高維的,目标函數的鞍點通常比局部最小值更常見。
梯度下降和随機梯度下降
- 使用适當的學習率,沿着梯度反方向更新自變量可能降低目标函數值。梯度下降重複這一更新過程直到得到滿足要求的解。
- 學習率過大或過小都有問題。一個合适的學習率通常是需要通過多次實驗找到的。
- 當訓練資料集的樣本較多時,梯度下降每次疊代的計算開銷較大,因而随機梯度下降通常更受青睐。
小批量随機梯度下降
- 小批量随機梯度每次随機均勻采樣一個小批量的訓練樣本來計算梯度。
- 在實際中,(小批量)随機梯度下降的學習率可以在疊代過程中自我衰減。
- 通常,小批量随機梯度在每個疊代周期的耗時介于梯度下降和随機梯度下降的耗時之間。
動量法
- 動量法使用了指數權重移動平均的思想。它将過去時間步的梯度做了權重平均,且權重按時間步指數衰減。
- 動量法使得相鄰時間步的自變量更新在方向上更加一緻。
AdaGrad算法
- AdaGrad算法在疊代過程中不斷調整學習率,并讓目标函數自變量中每個元素都分别擁有自己的學習率。
- 使用AdaGrad算法時,自變量中每個元素的學習率在疊代過程中一直在降低(或不變)。
RMSProp算法
- RMSProp算法和AdaGrad算法的不同在于,RMSProp算法使用了小批量随機梯度按元素平方的指數權重移動平均來調整學習率。
AdaDelta算法
- AdaDelta算法沒有學習率超參數,它通過使用有關自變量更新量平方的指數權重移動平均的項來替代RMSProp算法中的學習率。
Adam算法
- Adam算法在RMSProp算法的基礎上對小批量随機梯度也做了指數權重移動平均。
- Adam算法可以看做是RMSProp算法與動量法的結合。
- Adam算法使用了偏差修正。