每個 AI 工程師都應該知道的深度學習優化器類型

已發表: 2020-12-01

目錄

介紹

深度學習在靈活性、更高的準確性和工業應用中的廣泛可能性方面是機器學習的一大進步。 無論是聊天應用程序、語法自動更正、不同語言之間的翻譯、假新聞檢測,還是基於一些初始措辭的自動故事寫作,深度學習幾乎在每個領域都有應用。

有了這麼多的使用,這些算法在最少的資源下運行變得很重要,這樣我們就可以降低經常性成本並在更短的時間內提供有效的結果。 優化器是一種更新各種參數的方法或算法,可以以更少的努力減少損失。 讓我們看看一些流行的深度學習優化器,它們可以提供可接受的結果。

從世界頂級大學學習AI ML 課程獲得碩士、Executive PGP 或高級證書課程以加快您的職業生涯。

梯度下降 (GD)

這是最基本的優化器,直接使用損失函數和學習率的導數來減少損失並達到最小值。 這種方法也被用於神經網絡的反向傳播,其中更新的參數在不同層之間共享,具體取決於何時達到最小損失。 很容易實現和解釋結果,但它有各種問題。

計算整個數據集梯度時會更新權重,這會減慢處理速度。 它還需要大量內存來存儲這些臨時數據,使其成為一個資源匱乏的進程。 儘管該算法背後的想法非常適合,但需要對其進行調整。

隨機梯度下降

這是 GD 方法的更改版本,其中模型參數在每次迭代時更新。 這意味著在每個訓練樣本之後,都會測試損失函數並更新模型。 這些頻繁的更新導致在更短的時間內收斂到最小值,但其代價是增加了方差,這會使模型超出所需位置。

但與前一種技術相比,這種技術的一個優點是內存需求低,因為現在不需要存儲損失函數的先前值。

小批量梯度下降

這種 GD 方法的另一個變體是小批量,其中模型參數以小批量更新。 這意味著在每 n 個批次之後,模型參數將被更新,這確保了模型以更少的步驟向最小值前進,而不會經常脫軌。 這導致模型中的內存使用量減少和方差低。

閱讀:機器學習項目理念

基於動量的梯度下降

讓我們回顧一下我們用來更新參數的方法。 基於損失函數的一階導數,我們正在反向傳播梯度。 更新的頻率可以是在每次迭代、一個批次或最後一次之後,但我們沒有考慮參數中有多少更新。

如果這個歷史元素包含在下一次更新中,那麼它可以加速整個過程,這就是動量在這個優化器中的含義。 這個歷史元素就像我們的大腦如何記憶事物一樣。 如果你走在一條街上並且你走了很遠的距離,那麼你會確定你的目的地在前面一段距離,你會提高你的速度。

該元素取決於先前的值、學習率和一個名為 gamma 的新參數,該參數控制此歷史更新。 更新規則類似於 w = w – v,其中 v 是歷史元素。

Nesterov 加速梯度 (NAG)

基於動量的 GD 通過最早收斂到最小值來推動當前使用的優化器,但它引入了一個新問題。 這種方法需要大量的 u 形轉彎,並且在最小山谷中進出振盪,從而增加了總時間。 花費的時間仍然比正常的 GD 少,但這個問題也需要修復,這是在 NAG 中完成的。

這裡採用的方法是首先使用歷史元素進行參數更新,然後只計算可以向前或向後移動它的導數。 這被稱為前瞻方法,它更有意義,因為如果曲線接近最小值,那麼導數可以使其緩慢移動,從而減少振盪,從而節省更多時間。

另請閱讀:您應該知道的深度學習技術

阿達格勒

到目前為止,我們只關注模型參數如何影響我們的訓練,但我們還沒有討論在整個訓練過程中被賦予恆定值的超參數。 一個這樣重要的超參數是學習率,改變它可以改變訓練的速度。

對於大多數值為零的稀疏特徵輸入,我們可以提供更高的學習率,這將提高由這些稀疏特徵導致的衰減梯度。 如果我們有密集的數據,那麼我們可以有更慢的學習。

解決方案是有一個自適應學習率,可以根據提供的輸入而改變。 Adagrad 優化器試圖通過與梯度的更新歷史成比例地衰減學習率來提供這種自適應性。

這意味著當有較大的更新時,歷史元素會被累積,因此會降低學習率,反之亦然。 這種方法的一個缺點是學習率急劇下降,一段時間後它接近於零。

RMSProp

這是對 Adagrad 優化器的改進。 這旨在通過採用梯度的指數平均值而不是梯度平方的累積和來降低學習率的激進性。 自適應學習率保持不變,因為現在指數平均會在更新較少的情況下懲罰較大的學習率,而在更新次數較多的情況下會懲罰較小的學習率。

亞當

自適應矩估計結合了 RMSProp(均方根道具)和基於動量的 GD 的強大功能。 在 Adam 優化器中,動量 GD 保存更新歷史的能力和 RMSProp 提供的自適應學習率使 Adam 優化器成為一種強大的方法。 它還引入了兩個新的超參數 beta1 和 beta2,它們通常保持在 0.9 和 0.99 左右,但您可以根據您的用例更改它們。

必讀:深度學習中的正則化

結論

在本文中,我們按照易用性的順序研究了 8 種深度學習優化器,以及下一個優化器如何克服一個優化器的限制,依此類推。 這裡提到的一個或其他優化器有更多修改,但這些是您在尋求復雜解決方案之前應該考慮的基本修改。

在其中選擇一個贏家對於用例和您正在處理的問題非常主觀,但肯定可以將 Adam Optimizer 排在首位,因為它與動量概念相結合,改變了模型參數的更新方式並適應不斷變化的不同場景的學習率,可以有效處理任何類型的輸入。

總體趨勢表明,對於相同的損失,這些優化器收斂於不同的局部最小值。 雖然自適應學習優化器收斂於更尖銳的最小值,但其他類型的技術收斂於更平坦的最小值,這更適合泛化。 這些技術只能在一定程度上有所幫助,因為隨著深度神經網絡變得越來越大,需要更有效的方法才能獲得良好的結果。

如果您對掌握機器學習和 AI 感到好奇,請通過我們的 IIIT-B 和利物浦約翰摩爾斯大學的機器學習和 AI 理學碩士來提升您的職業生涯。

優化器如何進行深度學習?

雖然目前神經網絡都是炒作,但優化器對於神經網絡的學習來說更為基礎。 雖然神經網絡可以自行學習,而無需先前的知識,但優化器是一個與神經網絡一起運行的程序,可以讓它學習得更快。 簡而言之,它通過改變神經網絡的參數來實現這一點,從而使使用該神經網絡的訓練變得更快、更容易。 這些優化器允許神經網絡實時工作,訓練只需幾分鐘。 沒有他們,培訓很容易需要幾天時間。

為什麼深度學習算法難以優化?

深度學習系統通常被認為難以優化,因為它們龐大而復雜,通常涉及多層和非線性。 優化器需要處理一個龐大的系統,這並不容易理解。 一些深度學習工具僅提供有限數量的可調整參數,這限制了它們的實用性。 然而,有一些有效的方法可以優化深度學習模型並提高它們的泛化能力。

深度學習中有哪些不同的優化器?

在深度學習中,優化器用於調整模型的參數。 優化器的目的是調整模型權重以最大化損失函數。 損失函數被用作衡量模型執行情況的一種方式。 訓練神經網絡模型時必須使用優化器。 有多種不同的優化器可用於深度學習模型。 一些最流行的優化器是 RMSprop、動量和 Adam