1. 程式人生 > 實用技巧 >建神經網路模型,哪種優化演算法更好?35000次測試告訴你丨圖賓根大學出品

建神經網路模型,哪種優化演算法更好?35000次測試告訴你丨圖賓根大學出品

蕭簫 發自 凹非寺
量子位 報道 | 公眾號 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

本文系網易新聞•網易號特色內容激勵計劃簽約賬號【量子位】原創內容,未經賬號授權,禁止隨意轉載。

一鍵三連「分享」、「點贊」和「在看」

科技前沿進展日日相見~