您好,登錄后才能下訂單哦!
這篇文章主要介紹Adam優化算法的示例分析,文中介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們一定要看完!
Adam Optimizer是對SGD的擴展,可以代替經典的隨機梯度下降法來更有效地更新網絡權重。
請注意,Adam這個名字并不是首字母縮寫詞,實際上,作者(OpenAI的Diederik P. Kingma和多倫多大學的Jimmy Lei Ba)在論文中指出,該論文首次在ICLR 2015上作為會議論文發表,標題為Adam: A method for Stochastic Optimization, that the name is derived from adaptive moment estimation.。
作者毫不猶豫地列出了將Adam應用于非凸優化問題的許多迷人好處,我將繼續分享以下內容:
簡單地實現(我們將在本文的稍后部分中實現Adam,并且您將直接看到如何利用強大的深度學習框架以更少的代碼行使實現變得更加簡單。)
計算效率高
很少的內存需求
梯度的對角線重縮放不變(這意味著亞當將梯度乘以僅帶正因子的對角矩陣是不變的,以便更好地理解此堆棧交換)
非常適合數據和/或參數較大的問題
適用于非固定目標
適用于非常嘈雜和/或稀疏梯度的問題
超參數具有直觀的解釋,通常需要很少的調整(我們將在配置部分中對此進行詳細介紹)
簡而言之,Adam使用動量和自適應學習率來加快收斂速度。
在解釋動量時,研究人員和從業人員都喜歡使用比球滾下山坡而向局部極小值更快滾動的類比法,但從本質上講,我們必須知道的是,動量算法在相關方向上加速了隨機梯度下降,如 以及抑制振蕩。
為了將動量引入我們的神經網絡,我們將時間元素添加到過去時間步長的更新向量中,并將其添加到當前更新向量中。這樣可以使球的動量增加一定程度。可以用數學表示,如下圖所示。
動量更新方法,其中θ是網絡的參數,即權重,偏差或激活值,η是學習率,J是我們要優化的目標函數,γ是常數項,也稱為動量。Vt-1(注意t-1是下標)是過去的時間步長,而Vt(注意t是下標)是當前的時間步長。
動量項γ通常被初始化為0.9或類似于Sebastian Ruder的論文《An overview of gradient descent optimization algorithm》中提到的項。
通過將學習率降低到我們在AdaGrad,RMSprop,Adam和AdaDelta中看到的預定義時間表(schedule),可以將自適應學習率視為訓練階段的學習率調整。這也稱為學習率時間表 有關該主題的更多詳細信息,Suki Lau撰寫了一篇有關該主題的非常有用的博客文章,稱為“ Learning Rate Schedules and Adaptive Learning Rate Methods for Deep Learning.”。
在不花太多時間介紹AdaGrad優化算法的情況下,這里將解釋RMSprop及其在AdaGrad上的改進以及如何隨時間改變學習率。
RMSprop(即均方根傳播)是由Geoff Hinton開發的,如《An Overview of Gradient Descent Optimization Algorithms》所述,其目的是解決AdaGrad的學習率急劇下降的問題。簡而言之,RMSprop更改學習速率的速度比AdaGrad慢,但是RMSprop仍可從AdaGrad(更快的收斂速度)中受益-數學表達式請參見下圖
E [g2] t的第一個方程是平方梯度的指數衰減平均值。Geoff Hinton建議將γ設置為0.9,而學習率η的默認值為0.001
這可以使學習率隨著時間的流逝而適應,這很重要,因為這種現象也存在于Adam中。當我們將兩者(Momentum 和RMSprop)放在一起時,我們得到了Adam —下圖顯示了詳細的算法。
如果你聽過吳恩達老師的深度學習課程,吳恩達老師說過“Adam可以理解為加了Momentum 的 RMSprop” ,上圖的公式就是吳恩達老師這句話的由來。
以上是“Adam優化算法的示例分析”這篇文章的所有內容,感謝各位的閱讀!希望分享的內容對大家有幫助,更多相關知識,歡迎關注億速云行業資訊頻道!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。