Adam 優化算法詳解

2021-01-08 deephub

據牛津字典的定義,優化是指最好或最有效地利用一種情況或資源,或者簡單地使自己的事物達到最佳狀態的行為。 通常,如果可以對某事進行數學建模,則很有可能可以對其進行優化。 這在深度學習領域起著至關重要的作用(可能是整個人工智慧),因為您選擇的優化算法可能是在數分鐘,數小時或數天(有時甚至是數周)內獲得高質量結果的區別。

在這篇文章中,我們將闡述:

什麼是Adam Optimizer?在深度學習模型中使用Adam進行優化有什麼好處?Adam如何工作?什麼是Adam Optimizer?

什麼是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是如何工作的

簡而言之,Adam使用動量和自適應學習率來加快收斂速度。

Momentum (動量)

在解釋動量時,研究人員和從業人員都喜歡使用比球滾下山坡而向局部極小值更快滾動的類比法,但從本質上講,我們必須知道的是,動量算法在相關方向上加速了隨機梯度下降,如 以及抑制振蕩。

為了將動量引入我們的神經網絡,我們將時間元素添加到過去時間步長的更新向量中,並將其添加到當前更新向量中。 這樣可以使球的動量增加一定程度。 可以用數學表示,如下圖所示。

動量更新方法,其中θ是網絡的參數,即權重,偏差或激活值,η是學習率,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 [g] t的第一個方程是平方梯度的指數衰減平均值。 Geoff Hinton建議將γ設置為0.9,而學習率η的默認值為0.001

這可以使學習率隨著時間的流逝而適應,這很重要,因為這種現象也存在於Adam中。 當我們將兩者(Momentum 和RMSprop)放在一起時,我們得到了Adam —下圖顯示了詳細的算法。

如果你聽過吳恩達老師的深度學習課程,吳恩達老師說過「Adam可以理解為加了Momentum 的 RMSprop」 ,上圖的公式就是吳恩達老師這句話的由來。

參考資料

Kingma, D and Ba, J . (2015) Adam: A method for Stochastic Optimization.Ruder, S. (2017) An overview of gradient descent optimization algorithms.Duchi, J et al. (2011) Adaptive Subgradient Methods for Online Learning and Stochastic Optimization.

相關焦點

  • 聽說你了解深度學習最常用的學習算法:Adam優化算法?
    Adam優化算法是隨機梯度下降算法的擴展式,近來其廣泛用於深度學習應用中,尤其是計算機視覺和自然語言處理等任務。本文分為兩部分,前一部分簡要介紹了Adam優化算法的特性和其在深度學習中的應用,後一部分從Adam優化算法的原論文出發,詳細解釋和推導了它的算法過程和更新規則。
  • 一文看懂各種神經網絡優化算法:從梯度下降到Adam方法
    這篇文章介紹了不同優化算法之間的主要區別,以及如何選擇最佳的優化方法。 什麼是優化算法? 優化算法的功能,是通過改善訓練方式,來最小化(或最大化)損失函數E(x)。 模型內部有些參數,是用來計算測試集中目標值Y的真實值和預測值的偏差程度的,基於這些參數,就形成了損失函數E(x)。
  • 使用Numpy進行深度學習中5大反向傳播優化算法的性能比較
    在本文中,我們將通過計算二次凸函數的最優點來數值比較主要的深度學習優化算法的性能。簡介深度學習被稱為人工智慧的未來。現在,神經網絡被稱為通用函數逼近器,也就是說,它們有能力表示這個宇宙中任何複雜的函數。計算這個具有數百萬個參數的通用函數的想法來自優化的基本數學。優化可以通過多種方式完成,但在本文中,我們將重點討論基於梯度下降的優化技術。
  • 深度學習優化入門:Momentum、RMSProp 和 Adam
    如果 f 顯著下降的唯一方向是低曲率的,那麼優化可能會變得太慢而不切實際,甚至看起來完全停止,造成局部最小值的假象。 對於現代的網絡來說,通常都含有數十億個參數,使用高階的優化方法很難計算 10 億的平方數量級的梯度。 二階優化是關於梯度本身如何變化的信息。雖然我們不能精確的計算它,但是我們可以遵循啟發式方式,以指導我們根據之前的梯度進行優化 Momentum 與 SDG 結合使用的一種常用方法叫做 Momentum。
  • 資料|MATLAB優化算法案例分析與應用(進階篇)
    from=leiphonecolumn_res0817內容簡介 · · · · · ·《MATLAB優化算法案例分析與應用(進階篇)》是深受廣大讀者歡迎的《MATLAB優化算法案例分析與應用》一書的姊妹篇,即進階篇。本書全面、系統、深入地介紹了MATLAB算法及案例應用。
  • 機器學習-頻繁模式挖掘DHP算法詳解
    前言數據挖掘領域的頻繁模式中,Apriori算法算是經典,然而該算法有如下的問題:對資料庫多次掃描候選集數量龐大為計算候選集支持度所需負載較重所以有了很多改進算法,DHP是其中一個基於散列優化的算法,主要用於縮小Ck的項集個數原理DHP算法生效於Apriori算法的剪枝步過程中。
  • 優化算法——人工蜂群算法(ABC)
    一、人工蜂群算法的介紹 人工蜂群算法(Artificial Bee Colony, ABC)是由Karaboga於2005年提出的一種新穎的基於群智能的全局優化算法
  • 科學家破解了谷歌的量子優化算法
    谷歌為此的短期目標是已經設計出了一種新型的量子增強算法,可以在有真實噪聲的情況下運行。所謂的量子近似優化算法(Quantum Approximate Optimisation Algorithm,簡稱 QAOA)是谷歌目前開發的抗噪聲量子增強算法的基礎。谷歌在量子近似優化算法中採用的這一著名方法引發了廣泛的商業興趣,並激發了全球研究界探索其新穎應用的興趣。
  • 蟻群算法即相關代碼實現詳解—matlab之智能算法
    蟻群算法即相關代碼實現詳解 一.算法背景 蟻群算法是近年來剛剛誕生的隨機優化方法,它是一種源於大自然的新的仿生類算法.由義大利學者Dorigo最早提出,螞蟻算法主要是通過螞蟻群體之間的信息傳遞而達到尋優的目的,最初又稱蟻群優化方法(Ant Colony
  • 二階梯度優化新崛起,超越 Adam,Transformer 只需一半迭代量
    然而在谷歌大腦與普林斯頓大學等研究者的努力下,二階梯度優化終於在實戰大模型上展現出獨特的優勢。研究者表示,為了縮短理論和實際優化效果之間的差距,該論文提出了一種二階優化的概念性驗證,並通過一系列重要的算法與數值計算提升,證明它在實際深度模型中能有非常大的提升。
  • 【算法系列】凸優化的應用——Python求解優化問題(附代碼)
    :無約束優化問題和約束優化問題,約束優化問題又可分為含等式約束優化問題和含不等式約束優化問題。無約束優化問題含等式約束的優化問題含不等式約束的優化問題針對以上三種情形,各有不同的處理策略:無約束的優化問題:可直接對其求導,並使其為0,這樣便能得到最終的最優解;含等式約束的優化問題:主要通過拉格朗日乘數法將含等式約束的優化問題轉換成為無約束優化問題求解;含有不等式約束的優化問題:主要通過KKT條件(Karush-Kuhn-Tucker Condition
  • 第四章 蜘蛛猴優化算法
    蜘蛛猴優化(SpiderMonkey Optimization,SMO)是一種全局優化算法,靈感來自於蜘蛛猴在覓食過程中的裂變融合社會(Fission-Fusionsocial,FFS)結構。SMO巧妙地描述了群體智能的兩個基本概念:自組織和分工。SMO作為一種基於群體智能的算法,近年來得到了廣泛的應用,並被應用於許多工程優化問題中。這一部分詳細介紹了蜘蛛猴優化算法。
  • 總結優化算法收斂性證明的兩類方法
    這篇文章中,我們總結兩類做數值優化迭代算法收斂性證明的方法,同時也討論了優化算法設計的思路。1. 簡介數值優化在工程應用中有非常重要的作用。但在使用優化算法時候,算法的收斂性是我們需要認真考慮的東西,例如我們需要知道梯度下降是一階收斂而牛頓法是二階收斂,因此一般情況下,牛頓法會比梯度下降運行更快。
  • 算法優化之道:避開鞍點
    這就是梯度下降算法(gradient descentalgorithm)。每當梯度∇f(x)不等於零的時候,只要我們選擇一個足夠小的步長η,算法就可以保證目標函數向局部最優解前進。當梯度∇f(x)等零向量時,該點稱為臨界點(critical point),此時梯度下降算法就會陷入局部最優解。
  • 【乾貨】機器學習最常用優化之一——梯度下降優化算法綜述
    原標題:【乾貨】機器學習最常用優化之一——梯度下降優化算法綜述 1新智元獲授權轉載 【新智元導讀】梯度下降算法是機器學習中使用非常廣泛的優化算法,也是眾多機器學習算法中最常用的優化方法。幾乎當前每一個先進的(state-of-the-art)機器學習庫或者深度學習庫都會包括梯度下降算法的不同變種實現。
  • 利用遺傳算法優化GANs
    遺傳算法是根據大自然中生物體進化規律而設計提出的,是根據大自然中生物體進化規律而設計提出的。是模擬達爾文生物進化論的自然選擇和遺傳學機理的生物進化過程的計算模型,是一種通過模擬自然進化過程搜索最優解的方法。在本片文章中,我們嘗試使用遺傳算法來對訓練GANs進行優化,我們的訓練模型是生成手寫數字。什麼是遺傳算法?
  • 10個梯度下降優化算法+備忘單
    在一個線性回歸問題中,我已經用梯度下降實現了SGD, momentum, Nesterov, RMSprop 以及Adam,獲取代碼(JavaScript)通過梯度下降,優化算法可以在如下三個主要方面起作用:1、修改學習率成分,α, 或2、修改梯度成分
  • 遺傳算法:組合優化算法,按照進化論的方式啟發搜索尋優解
    遺傳算法是由美國密西根大學的 Holland教授創立於20世紀六七十年代,受達爾文「進化論」思想的啟發而設計實現。遺傳算法不是通過暴力搜索解的方法,而是通過模擬種群的基因交叉和突變,經過種群一代一代的適者生存的方式尋找問題優解的方法,這在解決組合優化時解空間組合爆炸中應用廣泛。
  • 淺析基於優化算法的能量管理控制策略(二)
    優化算法可分為全局優化和實時優化,受算法本身的限制以及採樣時間、模型精度、參數定義等因素的影響,目前這種區分尚不明顯。,NN)滑模控制(Sliding ModeControl,SMC)無導數優化算法——模擬退火(Simulated Annealing,SA)無導數優化算法——遺傳算法(Genetic Algorithm,GA)無導數優化算法——粒子群算法(Particle Swarm Optimization,PSO)無導數優化算法——DIRECT
  • 機器學習算法中的7個損失函數的詳細指南
    損失函數是我們喜歡使用的機器學習算法的核心。但大多數初學者和愛好者不清楚如何以及在何處使用它們。它們並不難理解,反而可以增強你對機器學習算法的理解。那麼,什麼是損失函數,你如何理解它們的意義?在本文中,我將討論機器學習中使用的7種常見損失函數,並解釋每種函數的使用方法。