Adam真的是最好最佳化器嗎?有人認為不過是神經網路進化的結果
提到最佳化器,大多數人會想到 Adam。自 2015 年推出以來,Adam 一直是該領域的「王者」。但近日,波士頓大學的一位助理教授做出了一個假設,他認為 Adam 或許不是最佳的最佳化器,只是神經網路的訓練使其成為了最佳。
Adam 最佳化器是深度學習中最流行的最佳化器之一。它適用於很多種問題,包括帶稀疏或帶噪聲梯度的模型。其易於精調的特性使得它能夠快速獲得很好的結果,實際上,預設的引數配置通常就能實現很好的效果。Adam 最佳化器結合了 AdaGrad 和 RMSProp 的優點。Adam 對每個引數使用相同的學習率,並隨著學習的進行而獨立地適應。此外,Adam 是基於動量的演算法,利用了梯度的歷史資訊。基於這些特徵,在選擇最佳化演算法時,Adam 往往是「當仁不讓」。
但近日,波士頓大學助理教授 Francesco Orabona 提出了一種假設,他認為「不是 Adam 最佳,而是神經網路的訓練使其變成最佳」。他在一篇文章中詳述了自己的假設,原文內容如下:
我從事線上和隨機最佳化的研究已經有段時間了。2015 年 Adam 被提出的時候,我就已經身處這個領域了。Adam 由現谷歌高階研究科學家 Diederik P. Kingma 和多倫多大學助理教授 Jimmy Ba 在論文《ADAM: A METHOD FOR STOCHASTIC OPTIMIZATION》中提出。
Adam 演算法
這篇論文很好,但算不上突破,從當前標準來看更是如此。首先, 理論很脆弱:對於一種應該處理非凸函式隨機最佳化的演算法給出了 regret guarantee。其次, 實驗也很脆弱:近來完全一樣的實驗會遭到徹徹底底地拒絕。後來有人發現了證明中存在誤差,並且 Adam 演算法還無法在某些一維隨機凸函式上實現收斂。儘管有著這樣那樣的問題,Adam 依然被認為是最佳化演算法中的「王者」。
所以需要明確一點:我們都知道,Adam 不總能使你實現最佳效能,但大多數時候,人們認為可以利用 Adam 的預設引數在處理某個深度學習問題上實現至少次優的效能。換句話說,Adam 被認為是現今深度學習的預設最佳化器。那麼,Adam 成功的秘訣是什麼呢?
近年來,人們發表了大量論文,試圖解釋 Adam 及其效能。從「自適應學習率」(自適應什麼?沒人真的瞭解)到動量和尺度不變性,Adam 的方方面面都有了相應解讀。但是, 所有這些分析並沒有給出關於其效能的最終答案。
很明顯,自適應學習率等這些因素中的大多數對任何函式的最佳化過程都是有益的,但我們仍不清楚,為什麼這些因素按照這樣的組合形式就能使 Adam 成為最佳演算法。各個要素之間的均衡如此微妙,以至於解決非收斂問題所需的微小變化也被認為會帶來比 Adam 稍差的效能。
但是,這一切的可能性有多大呢?我的意思是,Adam 真的是最好的最佳化演算法嗎?在一個如此「年輕」的領域中,幾年前就實現最佳深度學習最佳化的可能性又有多大呢?對 Adam 的驚人效能是否存在另一種解釋呢?
於是,我提出了一個假設,但在解釋它之前,我們有必要簡單談談應用深度學習社群。
谷歌機器學習研究員 Olivier Bousquet 曾在一次演講中,將深度學習社群描述為一個巨型遺傳演算法:社群研究人員正以半隨機的方式探索所有演算法和架構的變體。在大型實驗中持續有效的演算法得到保留,無效的則遭到摒棄。我們需要注意的是,這一過程似乎與論文被拒與否無關:社群太大也很活躍,好的 idea 即使被拒也能得到保留並在數月後轉變成最佳實踐,例如 Loshchilov 和 Hutter 的研究《Decoupled Weight Decay Regularization》。類似地,已發表論文中的 idea 被數百人嘗試復現,而無法復現的就被殘忍拋棄。這一過程創造出了許多啟發式方法,即在實驗中一直輸出優秀結果,但壓力也在於「一直」。的確,儘管是基於非凸公式的方法,但深度學習方法的效能非常可靠。(注意,深度學習社群對「名人」有著極大的傾向性,並非所有 idea 都能得到同等的關注……)
那這一巨型遺傳演算法與 Adam 之間有什麼聯絡呢?仔細觀察深度學習社群的 idea 創造過程後,我發現了一個規律:人們建立的新架構往往最佳化演算法是固定不變的,而大多數情況下,最佳化演算法是 Adam。這是因為,Adam 是預設最佳化器。
我的假設來了: Adam 對於多年前已有的神經網路架構來說是不錯的最佳化演算法,於是人們一直建立 Adam 有效的新架構。我們可能看不到 Adam 無效的架構,因為這類 idea 早已被拋棄了!這類 idea 要求同時設計新架構和新的最佳化器,而這是非常困難的任務。也就是說,大多數情況下,社群研究人員只需改進一組引數(架構、初始化策略、超引數搜尋演算法等),而保持最佳化器為 Adam。
我確定很多人不會相信這一假設,他們會列出所有 Adam 不是最優最佳化演算法的特定問題,比如動量梯度下降是最優最佳化演算法。但是,我想指出兩點:
我並不是在描述一個自然法則,而只是陳述社群傾向,而這一傾向可能影響了一些架構和最佳化器的共同演化;
我有證據可以支援這一假設。
如果我的論斷為真,則我們預計 Adam 在深度神經網路上效果優異,但在另外一些模型上效果很糟。而這的確發生了!例如,Adam 在簡單的凸和非凸問題上表現糟糕,例如 Vaswani 等人《Painless Stochastic Gradient: Interpolation, Line-Search, and Convergence Rates》中的實驗:
現在似乎到了丟棄深度神經網路特定設定(初始化、權重、損失函式等)的時候了,Adam 失去了其適應性,其魔法一樣的預設學習率必須得到再次調整。注意,你可以將線性預測器寫成一個一層的神經網路,但 Adam 在這種情形下表現並不好。因此,深度學習架構的所有特定選擇的演化可能是為了讓 Adam 的效果越來越好,而上述簡單問題並不具備這類特性,因此 Adam 在其中喪失了光彩。
總之,Adam 可能是最好的最佳化器,因為深度學習社群僅僅在探索架構 / 最佳化器共同搜尋空間中的一小塊區域。如果真的是這樣,那麼對於一個因為專注於機器學習演算法的狹窄區域而放棄凸方法的社群而言真是頗具諷刺意味。就像 Facebook 首席 AI 科學家 Yann LeCun 所言: 「鑰匙掉在黑暗處,我們卻要在看得見的燈光下尋找。」
「新奇」假設引網友熱議
這位助理教授的假設在 reddit 上引發了網友熱議,但也只是給出了模稜兩可的觀點,誰也無法證明該假設是否成立。
有位網友認為該假設可能不完全正確但很有趣,並提出了進一步的觀點:Adam 與其他方法在簡單 MLP 上的表現孰優孰劣?與通用最佳化問題的損失表面相比,或許只是神經網路的損失表面使得它們自然地適配 Adam。如果 Adam 在 MLP 上表現更差,那麼證據就更充足了。
另一位網友也認為存在著這種可能。Adam 推出之後的大多數論文都在使用它,人們發現的其他一些高效架構也依賴於它,對於使用 NAS 或類似方法的架構來說更是如此了。但在實踐中,很多架構也能很好地適配其他最佳化器。並且,現在很多新論文也在使用 Ranger 等其他最佳化器。此外,關於 Adam 的另一種說法是,如果它真的自適應,那我們就不需要學習率查詢器(finder)和排程器(scheduler)了。
reddit 連結:
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69946223/viewspace-2741044/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 你真的知道typeof null的結果為什麼是‘object‘嗎?NullObject
- 神經網路是如何工作的?神經網路
- 增加深度,加速神經網路優化?這是一份反直覺的實驗結果神經網路優化
- 神經網路最佳化演算法:Dropout、梯度消失/爆炸、Adam最佳化演算法,一篇就夠了!神經網路演算法梯度
- 神經網路進化能否改變機器學習?神經網路機器學習
- 人工神經網路初學:是什麼以及為什麼?神經網路
- 漫畫版:什麼是神經網路?神經網路
- 神經網路最佳化篇:詳解正則化(Regularization)神經網路
- 今年測試這工資是認真的嗎?
- 你是真的程式猿嗎—>測試認證
- 神經網路最佳化篇:如何理解 dropout(Understanding Dropout)神經網路
- 人工智慧的神經網路到底是什麼?人工智慧神經網路
- 深度學習、神經網路最好的入門級教程深度學習神經網路
- IT真的是萬能的嗎?
- 人工智慧教程 - 1.1.1 什麼是神經網路人工智慧神經網路
- 圖神經網路,這到底是個什麼?神經網路
- 神經網路初始化神經網路
- 使用可進化的AutoML發現神經網路架構TOML神經網路架構
- 你以為的中臺真的是中臺嗎?
- 神經網路最佳化篇:為什麼正則化有利於預防過擬合呢?(Why regularization reduces overfitting?)神經網路
- 華為麒麟的AI效能是高通的3.5倍?這是所有手機執行神經網路的能力AI神經網路
- 神經網路原理的視覺化神經網路視覺化
- Vue中使用裝飾器,我是認真的Vue
- 基於SFLA演算法的神經網路最佳化matlab模擬演算法神經網路Matlab
- 【公式】網上說的幫助上岸是真的嗎公式
- 走過最長的路是ChatGPT的套路,信過最真的話是Adobe的FireflyChatGPT
- 為什麼我認為《變數》是最好的塔防之一變數
- 看來我是真的不適合華為系的。。。
- 為什麼說過早最佳化是萬惡之源?
- 《莎木3》真的是“設計過時”了嗎?
- 如何優化深度神經網路?優化神經網路
- TensorFlow神經網路優化策略神經網路優化
- 吳恩達《最佳化深度神經網路》課程筆記(2)– 最佳化演算法吳恩達神經網路筆記演算法
- 基於蛙跳最佳化的神經網路資料預測matlab模擬神經網路Matlab
- 14 卷積神經網路(進階)卷積神經網路
- 機器學習和神經網路的簡要框架總結機器學習神經網路框架
- 如何應對訓練的神經網路不工作?神經網路
- 神經網路:numpy實現神經網路框架神經網路框架