本文經AI新媒體量子位(公眾號ID:QbitAI)授權轉載,轉載請聯繫出處。
想要優化自己的神經網絡,卻不知道哪種優化器更適合自己?
又或者,想知道深度學習中梯度下降的算法到底都有哪些?
現在,最全面的優化算法分析來了。
它整理了自1964年以來,幾乎所有的優化方法 (約130種),將它們進行了分類。
此外,它還給出了幾種基準測試方法,並用它分析了1344種可能的配置方案。
在運行了35000次測試後,它給出了非常全面的優化器算法分析介紹,並告訴你如何用這些基準測試,為自己的深度學習模型選擇最好的優化方案。
優化方法具體都有哪幾種?
從下圖這份密密麻麻的圖表來看,迄今為止,提出的優化算法已經有130種左右。
目前他們還看不出來區別,但在測試結果中可以發現,這些優化器明顯能被分成兩類,一種適用於VAE(變分自編碼器),另一種則不適用於VAE。
而從這些優化器中的常用參數來看,α0表示初始學習率,αlo和αup代表上下界,∆t表示切換衰減樣式的周期,k表示衰減因子。
可以看出,這些學習率的參數主要可以被分為常數、梯度下降、平滑下降、周期性、預熱、超收斂等幾種。
那麼,130多種優化器,哪種才是最適用的?而對這些參數進行調整,到底能對優化器起到多大的作用?
用基準測試方法來測測,就知道了。
8種基準測試方法
如下圖,作者提出了8種優化任務,在這些任務上面進行測試,以得到對比結果。
從圖中看來,無論是數據集(MNIST、CIFAR-10等)、模型(VAE、CNN、RNN等),還是任務(分類、NLP等)和標準(損失率、精度)都不一樣。
此外,batchsize也考慮在內(看來實驗機器性能不錯)。製作這些測試的目的在於,多角度考量出這些優化方法的合理性。
測試按照下圖流程走,整體算下來,共有1344種配置,共運行接近35000次。
為了得知哪種優化方法更合適,這樣做也是很拼了。
如何選擇適合自己的優化方法?
那麼,具體如何選擇適合的優化方法呢?
下圖是作者隨機選取的14個優化器。
下圖是這些優化器在上面8種基準測試下的表現結果。
其中,紅色的I表示誤差範圍。可以看出,在一定誤差範圍內,某一類優化方法的性能幾乎非常相似:它們在各種基準測試上的表現都不錯。
為了驗證這些測試方法的穩定性,作者特意對其中一些算法進行了參數調整,下圖是經典算法RMSProp和RMSProp(2)的調優結果。
可見,不同的參數能給優化算法的性能帶來不小的波動變化。
更直接地,如果增加(性能)預算,從下圖可以看出,性能的改進也會有所增加。(圖中橙色為所有灰線的中值)
也就是說,即使優化算法的性能不錯,合理調參仍然不可或缺。
那麼,到底有多少優化器存在「改進參數,竟然能大幅增加優化能力」的問題呢?
還不少。
從下圖來看,綠色表示優化過後,優化算法能更好地運行。
換而言之,只要某種優化算法的結果是一片綠,那麼它原來的默認參數就真的很糟糕……
例如,AMSGrad、Mom、NAG的默認參數都存在很大的改進空間。相比而言,AMSBound由於自適應,默認參數都還非常不錯,不需要再有大改進。
對這些優化器進行評估後,研究者們得出以下幾個結論:
1、優化器的性能,在不同的任務中有很大差異;
2、事實上,大部分優化器的性能驚人地相似,目前尚沒有「最通用」的優化方法;
3、對優化器進行(參數)微調,其實和選擇優化器一樣重要、甚至更重要。
不過,雖然這份表格已經非常詳細,還是有細心的網友發現了盲點:像SWA這樣非常簡單高效的方法,還是在分析時被遺漏了。
當然,就提出的幾種基準測試來說,已經適合用於分析大部分優化器的選擇方案。
目前,作者已經在ArXiv論文頁面,開源了基準測試方法的Code,感興趣的小夥伴可戳論文地址查看~
作者介紹
這幾位作者都來自於德國圖賓根大學。
Robin M. Schmidt,計算機專業研究生,主要研究方向是人工智慧,感興趣的方向在深度學習、強化學習及優化上。
Philipp Hennig,機器學習教授,兼任馬普所科學家,曾於海德堡大學和帝國理工學院修讀物理,並在劍橋大學獲得機器學習博士學位。
Frank Schneider,機器學習博士生,研究領域是機器學習的優化方法。目前在鑽研深度學習的超參數,使深度神經網絡的訓練自動化。
論文地址:
https://arxiv.org/abs/2007.01547