優化器怎麼選?一文教你選擇適合不同ML項目的優化器

2021-01-07 手機鳳凰網

編輯:小舟、杜偉

為機器學習項目選擇合適的優化器不是一件簡單的事。

優化器是深度學習領域的重要組成模塊之一,執行深度學習任務時採用不同的優化器會產生截然不同的效果。這也是研究者們不遺餘力「煉丹」的原因之一。常見的優化算法包括梯度下降(變體 BGD、SGD 和 MBGD)、Adagrad、Adam、Momentum 等,如此繁多的優化器應該如何做出抉擇呢?

不久前,Lightly-ai 的機器學習工程師 Philipp Wirth 撰寫了一篇指南,總結了計算機視覺、自然語言處理和機器學習領域普遍使用的流行優化器,並就如何選擇合適的優化器給出了建議。

具體而言,這篇文章提出基於以下 3 個問題來選擇優化器:

找到相關的研究論文,開始時使用相同的優化器;

查看表 1,並一一對照自己所用數據集的屬性以及不同優化器的優缺點;

根據可用資源調整優化器。

引言

為機器學習項目選擇好的優化器不是一項容易的任務。流行的深度學習庫(如 PyTorch 或 TensorFLow)提供了多種優化器選擇,它們各有優缺點。並且,選擇不合適的優化器可能會對機器學習項目產生很大的負面影響。這使得選擇優化器成為構建、測試和部署機器學習模型過程中的關鍵一環。

上圖顯示了由於優化器不同,模型性能可能會差異很大。

選擇優化器的問題在於沒有一個可以解決所有問題的單一優化器。實際上,優化器的性能高度依賴於設置。所以根本問題是:「哪種優化器最適合自身項目的特點?

下文就圍繞這個問題分兩部分展開,第一部分簡要介紹常用的優化器,第二部分講述「三步選擇法」,幫助用戶為自己的機器學習項目挑選出最佳優化器。

常用優化器

深度學習中幾乎所有流行的優化器都是基於梯度下降。這意味著它們要反覆估計給定損失函數 L 的斜率,並沿著相反的方向移動參數(因此向下移動至假定的全局最小值)。這種優化器最簡單的示例是自 20 世紀 50 年代以來一直使用的隨機梯度下降(SGD)算法。21 世紀前 10 年,自適應梯度法(如 AdaGrad 或 Adam)變得越來越流行。

但最近的趨勢表明,部分研究轉而使用先前的 SGD,而非自適應梯度法。此外,當前深度學習中的挑戰帶來了新的 SGD 變體,例如 LARS、LAMB[6][7]。例如谷歌研究院在其最近的論文中使用 LARS 訓練一種強大的自監督模型[8]。

本文中用 w 代表參數,g 代表梯度,α為每個優化器的全局學習率,t 代表時間步(time step)。

隨機梯度下降(SGD)算法

在隨機梯度下降算法(SGD)中,優化器基於小批量估計梯度下降最快的方向,並朝該方向邁出一步。由於步長固定,因此 SGD 可能很快停滯在平穩區(plateaus)或者局部最小值上。

帶動量的 SGD

其中β<1。當帶有動量時,SGD 會在連續下降的方向上加速(這就是該方法被稱為「重球法」的原因)。這種加速有助於模型逃脫平穩區,使其不易陷入局部極小值。

AdaGrad

AdaGrad 是首批成功利用自適應學習率的方法之一。AdaGrad 基於平方梯度之和的倒數的平方根來縮放每個參數的學習率。該過程將稀疏梯度方向放大,以允許在這些方向上進行較大調整。結果是在具有稀疏特徵的場景中,AdaGrad 能夠更快地收斂。

RMSprop

RMSprop 是一個未發布的優化器,但在最近幾年中已被過度使用。其理念類似於 AdaGrad,但是梯度的重新縮放不太積極:用平方梯度的移動均值替代平方梯度的總和。RMSprop 通常與動量一起使用,可以理解為 Rprop 對小批量設置的適應。

Adam

Adam 將 AdaGrad、RMSprop 和動量方法結合到一起。下一步的方向由梯度的移動平均值決定,步長大小由全局步長大小設置上限。此外,類似於 RMSprop,Adam 對梯度的每個維度進行重新縮放。Adam 和 RMSprop(或 AdaGrad)之間一個主要區別是對瞬時估計 m 和 v 的零偏差進行了矯正。Adam 以少量超參數微調就能獲得良好的性能著稱。

AdamW

Loshchilov 和 Hutter 在自適應梯度方法中確定了 L2 正則化和權重下降的不等式,並假設這種不等式限制了 Adam 的性能。然後,他們提出將權重衰減與學習率解耦。實驗結果表明 AdamW 比 Adam(利用動量縮小與 SGD 的差距)有更好的泛化性能,並且對於 AdamW 而言,最優超參數的範圍更廣。

LARS

LARS 是 SGD 的有動量擴展,可以適應每層的學習率。LARS 最近在研究界引起了關注。這是由於可用數據的穩定增長,機器學習的分布式訓練也變得越來越流行。這使得批處理大小開始增長,但又會導致訓練變得不穩定。有研究者(Yang et al)認為這些不穩定性源於某些層的梯度標準和權重標準之間的不平衡。因此他們提出了一種優化器,該優化器基於「信任」參數η<1 和該層梯度的反範數來重新調整每層的學習率。

如何選擇合適的優化器?

如上所述,為機器學習問題選擇合適的優化器可能非常困難。更具體地說,沒有萬能的解決方案,只能根據特定問題選擇合適的優化器。但在選擇優化其之前應該問自己以下 3 個問題

類似的數據集和任務的 SOTA 結果是什麼?

使用了哪些優化器?

為什麼使用這些優化器?

如果您使用的是新型機器學習方法,那麼可能存在一篇或多篇涵蓋類似問題或處理了類似數據的優秀論文。通常,論文作者會進行廣泛的交叉驗證,並且給出最成功的配置。讀者可以嘗試理解他們選擇那些優化器的原因。

例如:假設你想訓練生成對抗網絡(GAN),以對一組圖像執行超解析度。經過一番研究後,你偶然發現了一篇論文 [12],研究人員使用 Adam 優化器解決了完全相同的問題。威爾遜等人[2] 認為訓練 GAN 並不應該重點關注優化問題,並且 Adam 可能非常適合這種情況。所以在這種情況下,Adam 是不錯的優化器選擇。

此外,你的數據集中是否存在可以發揮某些優化器優勢的特性?如果是這樣,則需要考慮優化器的選擇問題。

下表 1 概述了幾種優化器的優缺點。讀者可以嘗試找到與數據集特徵、訓練設置和項目目標相匹配的優化器。某些優化器在具有稀疏特徵的數據上表現出色,而有一些將模型應用於先前未見過的數據時可能會表現更好。一些優化器在大批處理量下可以很好地工作,而另一些優化器會在泛化不佳的情況下收斂到極小的最小值。

舉例而言:如果你需要將用戶給出的反饋分類成正面和負面反饋,考慮使用詞袋模型(bag-of-words)作為機器學習模型的輸入特徵。由於這些特徵可能非常稀疏,所以決定採用自適應梯度方法。但是具體選擇哪一種優化器呢?參考上表 1,你會發現 AdaGrad 具有自適應梯度方法中最少的可調參數。在項目時間有限的情況下,可能就會選擇 AdaGrad 作為優化器。

最後需要考慮的問題:該項目有哪些資源?項目可用資源也會影響優化器的選擇。計算限制或內存限制以及項目時間範圍都會影響優化器的選擇範圍。

如上表 1 所示,可以看到每個優化器有不同的內存要求和可調參數數量。此信息可以幫助你估計項目設置是否可以支持優化器的所需資源。

舉例而言:你正在業餘時間進行一個項目,想在家用計算機的圖像數據集上訓練一個自監督的模型(如 SimCLR)。對於 SimCLR 之類的模型,性能會隨著批處理大小的增加而提高。因此你想儘可能多地節省內存,以便進行大批量的訓練。選擇沒有動量的簡單隨機梯度下降作為優化器,因為與其他優化器相比,它需要最少的額外內存來存儲狀態。

相關焦點

  • 關於深度學習優化器 optimizer 的選擇,你需要了解這些
    在很多機器學習和深度學習的應用中,我們發現用的最多的優化器是 Adam,為什麼呢?>在 keras 中也有 SGD,RMSprop,Adagrad,Adadelta,Adam 等,詳情:https://keras.io/optimizers/我們可以發現除了常見的梯度下降,還有 Adadelta,Adagrad,RMSProp 等幾種優化器,都是什麼呢,又該怎麼選擇呢?
  • 光伏功率優化器應用案例深度分析
    本文以山東某2MW山地電站為例,就光伏功率優化器應用效果進行分析。在安裝豐郅光伏功率優化器後,優化區域發電量提升92%,平均每個組串每天多發電7.07度。該電站組件間間距不足形成遮擋,周圍樹木和電線桿也對部分組件形成遮擋,因為是山地電站,不同組串採光也有差異。
  • AdaBelief:一個有「信仰」的優化器
    這篇論文整個過程很有趣,一開始以為只是篇優化器論文,論文介紹很明白,但結果挖到後面,卻發現事情出現了反轉。AdaBelief 也算最近看的很有意思的論文,作者分析做的很好,實驗效果也挺好,大家關注度也比較高,而且後面還有意外驚喜。
  • 谷歌大腦新型優化器LAMB加速大批量訓練
    選自arXiv作者:Yang You、Jing Li等機器之心編輯部去年,谷歌發布了基於雙向 Transformer 的大規模預訓練語言模型 BERT 並開源。該模型參數量非常大——3 億,訓練時間也很長。
  • Adam 或許不是最佳的深度學習優化器
    Adam 的名聲也伴隨著強烈的情感:閱讀 r/MachineLearning on Reddit上的帖子就足以看出人們對捍衛他們最喜歡的優化器的熱情。這種熱情你可以在宗教、體育和政治中看到。 然而,這一切的可能性有多大?我是說,Adam 是最佳優化算法的可能性有多大?幾年前,在一個如此年輕的領域,我們達到深度學習優化的頂峰的可能性有多大?
  • 自Adam 出現以來,深度學習優化器發生了什麼變化?
    選自medium作者:Phúc Lê機器之心編譯參與:高璇、王淑婷Adam 自出道以來,就一直是最流行的深度學習優化器,哪怕現在其實已經有幾種可能更好用的優化器……如果將 Adam 優化出現以來產生的關於優化過程的有趣想法按時間順序排列的話,結果如下:
  • 直接對梯度下手,阿里提出新優化技巧,一行代碼即可改善現有優化器
    只需一行代碼即可嵌入現有的 DNN 優化器中,還可以直接對預訓練模型進行微調。優化技術對於深度神經網絡 (DNN) 的高效訓練至關重要。以往的研究表明,使用一階和二階統計量(如平均值和方差)在網絡激活或權重向量上執行 Z-score 標準化(如批歸一化 BN 和權重標準化 WS)可以提升訓練性能。
  • 7 Papers & Radios | EMNLP 2020最佳論文;新型優化器AdaBelief
    然後 ego 智能體利用這些潛在動態來影響其他智能體,有目的地指導制定適合共同適應的策略。在多個模擬域和現實世界曲棍球遊戲中,該方法優於其他方法,並學會影響其他智能體。本研究中學習和利用潛在意圖的方法流程圖。學習和影響潛在意圖(LILI)算法。air hockey 實驗的學習結果。推薦:CoRL 2020 最佳論文。
  • 谷歌大腦新型優化器LAMB加速大批量
    谷歌大腦去年,谷歌發布了基於雙向 Transformer 的大規模預訓練語言模型 BERT 並開源。近日,來自谷歌大腦的研究者提出了一種新型優化器 LAMB,有效降低 BERT 預訓練時間,76 分鐘即可完成 BERT 預訓練!3.【新聞 | 2019全球AI人才分布圖:美國佔44%,中國人才淨流入】來源:jfgagne.ai
  • 35000次測試告訴你
    現在,最全面的優化算法分析來了。在運行了35000次測試後,它給出了非常全面的優化器算法分析介紹,並告訴你如何用這些基準測試,為自己的深度學習模型選擇最好的優化方案。優化方法具體都有哪幾種?從下圖這份密密麻麻的圖表來看,迄今為止,提出的優化算法已經有130種左右。
  • 35000次測試告訴你丨圖賓根大學...
    在運行了35000次測試後,它給出了非常全面的優化器算法分析介紹,並告訴你如何用這些基準測試,為自己的深度學習模型選擇最好的優化方案。優化方法具體都有哪幾種?從下圖這份密密麻麻的圖表來看,迄今為止,提出的優化算法已經有130種左右。
  • 你的神經網絡不work? 這37個原因總有一款適合你!
    之前,曾經好多次我都搞混了圖像的寬度和高度,還有的時候,我手誤輸入一堆多餘的零,還有,曾經發生過多次重複輸入同一批次數據的情況……總之,記得仔細檢查一開始幾個批次輸入和輸出情況,儘可能保證看起來正常。2.
  • 安木寧空氣優化器—與自然同行,帶您踏上洗肺之旅
    而安木寧空氣優化器,就把這種森林精華搬到了我們身邊。安木寧不僅從檜木,還有像絲柏、楄栢等35種以上100%純天然的草木中抽取精油與精華水,製成了具有獨特消臭、除菌、精神安定作用的PCK凝膠。這種凝膠具有天然深林的獨特香味,能有效的緩解生活中緊張、焦慮的情緒,讓使用者仿佛置身於山林中,享受著自然的洗禮。
  • 相同查詢在不同RDS for MySQL的性能差異
    【IT168 技術】相同查詢在數據量相近的情況下在不同 RDS for MySQL 實例上有不同的性能表現,容易引發用戶對 RDS for MySQL 實例的性能差異性的疑慮,本文分享下近期碰到的一個原因比較隱蔽但很常見的案例。  1.
  • 一條查詢SQL在MySQL中是怎麼執行的
    Server層:包含連接器、查詢緩存、分析器、優化器、執行器等,涵蓋了MySQL的大部分核心服務功能,以及所有的內置函數,所有的跨存儲引擎的功能都在這一層實現,比如存儲過程、觸發器、視圖等,存儲引擎層:負責數據的存儲和提取,其架構模式是插件式的,支持InnoDB、MyISAM、Memory等多個存儲引擎。
  • 一文教你如何在飛機上選擇最適合自己的座位,飛機選座小妙招
    有人說他坐的地方噪音太大,有人說上廁所走出去很不方便……今天我們就來聊一聊飛機選座的這些事其實很多人坐飛機都沒有選座位的概念,基本是默認機選座位,也就是系統隨機分配座位所以就出現了上面的一些問題。飛機機艙那如何選擇合適的座位,小管家給大家整理了一些飛機選座的小妙招~~
  • 如何高效快速準確地完成ML任務,這4個AutoML庫了解一下
    只需要很少的工作,AutoML 就能通過快速有效的方式,為你的 ML 任務構建好網絡模型,並實現高準確率。簡單有效!數據預處理、特徵工程、特徵提取和特徵選擇等任務皆可通過 AutoML 自動構建。auto-sklearn 可能最適合剛接觸 AutoML 的用戶。除了發現數據集的數據準備和模型選擇之外,該庫還可以從在類似數據集上表現良好的模型中學習。表現最好的模型聚集在一個集合中。圖源:《Efficient and Robust Automated Machine Learning》在高效實現方面,auto-sklearn 需要的用戶交互最少。
  • 櫥櫃門板怎麼選?5種不同材料分析介紹,幫你更好的選擇
    櫥櫃門板怎麼選?5種不同材料分析介紹,幫你更好的選擇不知道大家有沒有聽說過這樣一句話"窮比廳堂,富比廚房",其實意思很簡單,我覺得富裕就是吃飽穿暖,那麼廚房作為給我們提供做飯的地方,櫥櫃佔據著非常重要的位置,今天就主要來說說關於櫥櫃門板的選擇,市面上可以選擇的門板材質非常多,不同的材質有著不同的優缺點,一起來分析比較一下吧!
  • 一文帶你跨過這37個坑
    本文由機器之心編輯,「機器之心」專注生產人工智慧專業性內容,適合開發者和從業者閱讀參考。點擊右上角即刻關注。調整損失權重如果你的損失由幾個更小的損失函數組成,那麼確保它們每一個的相應幅值都是正確的。這可能會涉及到測試損失權重的不同組合。21. 監控其它指標有時損失並不是衡量你的網絡是否被正確訓練的最佳預測器。如果可以的話,使用其它指標來幫助你,比如精度22.
  • 保溫杯怎麼選?諾狐教你辨別保溫杯
    但是市面上的保溫杯花樣眾多,從幾十塊到幾百塊不等,看得人眼花繚亂,不知該如何選擇。尤其是前段時間,央視曝光了19款不合格的保溫杯,熱水進毒水出,讓人細思極恐。你家的保溫杯安全嗎?快來諾小狐教你如何挑選保溫杯。