當前位置:
首頁 > 科技 > 拯救萬千學子於水深火熱之中!Facebook開源無梯度優化工具

拯救萬千學子於水深火熱之中!Facebook開源無梯度優化工具

乾明 發自 凹非寺

量子位 出品 | 公眾號 QbitAI

機器學習啥最苦?十有八九找參數!

不少研究生,都被卡在這個環節上,久久不能畢業。

現在,聖誕節前,有了一個好消息!

Facebook宣布,開源自家一直在使用的無梯度優化工具:Nevergrad

並「信誓旦旦」表示,這能讓調整模型參數和超參數的過程變得更快、更容易。

但在Twitter上,彷彿起到了相反的效果。

有人看到這個消息之後,立馬「梗」上心頭:

NeverGraduate嗎?

也有人調侃稱,這絕對是那些博士讀了6年的人心中的噩夢。

不過,調侃歸調侃,人家可是貨真價實的NeverGradient。

大多數人還是用轉發、點贊表達了自己的態度。

這是個什麼東東?

簡單來說, 這是一個Python 3庫,裡面有很多不需要進行梯度計算的演算法。這些演算法有:

差分進化

序列二次規劃

FastGA

協方差矩陣自適應

用於雜訊管理的種群控制方法

粒子群優化

……

它們都呈現在了一個標準的ask-and-tell Python框架中,同時,Facebook還配備了相關的測試和評估工具。

有沒有一種熱淚盈眶的感覺?

先別急……來看看效果怎麼樣。

拿起來就能用

就先從上面提到的演算法來說吧。之前這些演算法都是定製的,想要比較一個任務中各種演算法的性能?要麼行不通,要麼得花大力氣。

Facebook表示,有了Nevergrad,這些都不是問題。只要有用得著它的地方,拿起來就能用。

不僅能夠比較不同方法的性能,還能與那些常用基準上的最先進水平進行比較,以及幫你為特定的用例找最好的優化方法。

應用場景很感人

先說Facebook的情況。博文中說,自家的研究團隊已經在強化學習、圖像生成以及各種各樣的項目中使用Nevergrad了。

而且,Nevergrad的無梯度優化,還能廣泛運用於各種機器學習問題。比如:

多模態問題,比如有幾個最小值的問題。 (例如,語言建模深度學習的超參數化。)

病態問題,在試圖優化幾個具有非常不同動態的變數時,通常會出現這種問題。(例如,沒有針對具體問題重新標定dropout和學習率。)

可分離或旋轉的問題,包括部分旋轉的問題。

部分可分離問題,可以考慮通過幾個變數塊來解決。 例子包括對深度學習或其他形式設計的架構搜索,以及多任務網路的參數化。

離散、連續或混合的問題。這些任務需要同時選擇每層的學習速率、每層的權重衰減以及每層的非線性類型。

有雜訊的問題,當使用完全相同的參數調用函數時,函數可以返回不同的結果,例如強化學習中的獨立事件。

來,總結一下。

在機器學習中,Nevergrad可來調整超參數,如學習速率、動量、權重衰減(可能是每層)、 dropout和深層網路的每一部分的層參數等。

但從無梯度方法的角度來說,它也可以應用到電網管理、航空、鏡頭設計以及許多其他科學和工程中。

為了證明Nevergrad的能力。Facebook的團隊使用 Nevergrad 實現了幾個基準測試。

硬核示例:用Nevergrad生成演算法基準

不同的例子對應於不同的設置(是否多模態,是否有雜訊,是否離散,是否病態) ,並展示了如何使用Nevergrad確定最佳優化演算法。

在每個基準測試中,他們對不同的x值進行了獨立的實驗。這確保了方法之間在幾個x值上的一致排名具有統計學意義。

雜訊最優化示例

這個示例顯示,使用pcCMSA - ES的雜訊管理方法的TBPSA優於其他幾種替代方案。

具體怎麼比較的,Facebook在GitHub上開源了,傳送門在文末。

Nevergrad也可以處理離散的目標函數,在許多機器學習案例中都會遇到這個問題。

例如,在有限的選項集(如神經網路中的激活函數)之間進行選擇,以及在不同類型的層之間進行選擇(例如,決定在網路中的某個位置是否需要跳過連接)。

現有的一些工具,比如Bbob和Cutest不包含任何離散的基準測試。但Nevergrad可以處理離散域。

方法有兩個,一是通過softmax函數(將離散問題轉化為有雜訊的連續問題),二是通過連續變數的離散化。

Facebook還專門做了一個測試。

如上圖,測試中FastGA在這種情況下表現最好。有一點,DoubleFastGA對應於1/dim和( dim - 1 ) / dim之間的突變率,而不是1/dim和1/2。這是因為,原始範圍對應的是一個二進位域,而在這裡,Facebook考慮的是任意域。

好,到此,該說的都說了。

請收好傳送門吧~

傳送門

Nevergrad項目地址:

https://github.com/facebookresearch/nevergrad

博客地址:

https://code.fb.com/ai-research/nevergrad/

雜訊最優化示例項目地址:

https://github.com/facebookresearch/nevergrad/blob/master/docs/benchmarks.md

作者系網易新聞·網易號「各有態度」簽約作者

加入社群

量子位AI社群開始招募啦,歡迎對AI感興趣的同學,在量子位公眾號(QbitAI)對話界面回復關鍵字「交流群」,獲取入群方式;

此外,量子位專業細分群(自動駕駛、CV、NLP、機器學習等)正在招募,面向正在從事相關領域的工程師及研究人員。

進專業群請在量子位公眾號(QbitAI)對話界面回復關鍵字「專業群」,獲取入群方式。(專業群審核較嚴,敬請諒解)

誠摯招聘

量子位正在招募編輯/記者,工作地點在北京中關村。期待有才氣、有熱情的同學加入我們!相關細節,請在量子位公眾號(QbitAI)對話界面,回復「招聘」兩個字。

好看嗎?

喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 量子位 的精彩文章:

BigGAN學會「七十二變」:跟著視頻模仿動物,看到啥就能變啥
Waymo無人駕駛計程車上線:科技感爆棚,還比Uber便宜

TAG:量子位 |