Facebook 發布無梯度優化開源工具 Nevergrad,可應用於各類機器...

2020-12-13 雷鋒網

雷鋒網(公眾號:雷鋒網) AI 科技評論按:大多數機器學習任務——從自然語言處理、圖像分類到翻譯以及大量其他任務,都依賴於無梯度優化來調整模型中的參數和/或超參數。為了使得參數/超參數的調整更快、更簡單,Facebook 創建了一個名叫 Nevergrad(https://github.com/facebookresearch/nevergrad)的 Python 3 庫,並將它開源發布。Nevergrad 提供了許多不依賴梯度計算的優化算法,並將其呈現在標準的問答 Python 框架中。此外,Nevergrad 還包括了測試和評估工具。

Nevergrad 現已對外開放,人工智慧研究者和其他無梯度優化相關工作者馬上就可以利用它來協助自己的工作。這一平臺不僅能夠讓他們實現最先進的算法和方法,能夠比較它們在不同設置中的表現,還將幫助機器學習科學家為特定的使用實例找到最佳優化器。在 Facebook 人工智慧研究院(FAIR),研究者正將 Nevergrad 應用於強化學習、圖像生成以及其他領域的各類項目中,例如,它可以代替參數掃描來幫助更好地調優機器學習模型。

這個庫包含了各種不同的優化器,例如:

  • 差分進化算法(Differential evolution)

  • 序列二次規劃(Sequential quadratic programming)

  • FastGA

  • 協方差矩陣自適應(Covariance matrix adaptation)

  • 噪聲管理的總體控制方法(Population control methods for noise management)

  • 粒子群優化算法(Particle swarm optimization)

在此之前,使用這些算法往往需要研究者自己編寫算法的實現,這就讓他們很難在各種不同的最新方法之間進行比較,有時候甚至完全無法比較。現在,AI 開發者通過使用 Nevergrad,可以輕易地在特定的機器學習問題上對不同方法進行測試,然後對結果進行比較。或者,他們也可以使用眾所周知的基準來評估——與當前最先進的方法相比,新的無梯度優化方法怎麼樣。

Nevergrad 中所包含的無梯度優化方法可用於各類機器學習問題,例如:

  • 多模態問題,比如說擁有多個局部極小值的問題。(如用於語言建模的深度學習超參數化。)

  • 病態問題,通常在優化多個具有完全不同的動態特性的變量的時候,該問題就會出現(如,未對特定問題進行調整的丟棄和學習率)。

  • 可分離或旋轉問題,其中包括部分旋轉問題。

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

  • 離散的、連續的或混合的問題。這些問題可以包括電力系統(因為有些發電站具有可調連續輸出,而其他發電站則具有連續或半連續輸出)或者要求同時選擇每層的學習速率、權值衰減以及非線性類型的神經網絡任務。

  • 有噪聲的問題,即針對這一問題,函數被完全相同的參數調用時可以返回不同結果,例如強化學習中的不同關卡。

在機器學習中,Nevergrad 可用於調整參數,例如學習率、動量、權值衰減(或許每一層)、dropout(丟棄)算法、深度網絡每個部分的層參數及其他等。更為普遍地,非梯度方法同樣被用於電網管理(https://www.sciencedirect.com/science/article/pii/S0142061597000409)、航空(https://www.sciencedirect.com/science/article/pii/S0142061597000409)、鏡頭設計(https://www.researchgate.net/publication/222434804_Human-competitive_lens_system_design_with_evolution_strategies)以及許多其他的科學和工程應用中。

為什麼有無梯度優化的需求

在某些場景中,例如在神經網絡權重優化中,以分析法去計算函數的梯度是簡單的。然而,在其他場景中,例如當計算函數 f 的速度慢,或者域不連續的時候,函數的梯度就無法預估出來。在這些應用實例中,無梯度方法提供了解決方案。

一個簡單的無梯度解決方案是隨機搜索,它由隨機採樣大量的搜索點、對每個搜索點進行評估、選擇最佳搜索點三個步驟組成。隨機搜索在許多簡單場景中表現很好,但在高維場景中卻表現不佳。通常被用於機器學習參數調整的網格搜索,也面臨類似的限制。不過,也還有許多替代方法:其中一些來自應用數學,如序列二次規劃,它對模擬器的二次近似進行更新;貝葉斯優化也建立目標函數模型,其中包括不確定性模型;進化計算包含大量關於選擇、變異以及混合有前景的變體的工作。

這個示例展示了進化算法如何運行。在函數空間中採樣搜索點,並選擇最佳點的群落,然後在已有點的周圍推薦出新的點來嘗試優化當前的點群落。

使用 Nevergrad 生成算法基準

Facebook 研究團隊使用了 Nevergrad 實現幾個基準測試,來展示特定算法在特定情況下的表現最佳。這些眾所周知的示例對應著各種不同設置(多峰或非多峰,噪聲或非噪聲,離散或非離散,病態或非病態),並展示了如何使用 Nevergrad 來確定最佳優化算法。

在每個基準測試中,Facebook 研究團隊對不同的 X 值進行了獨立實驗。這確保了在幾個 X 值上的各個方法之間的一致排序在統計上是顯著的。除了下面的兩個基準示例,這裡(https://github.com/facebookresearch/nevergrad/blob/master/docs/benchmarks.md)還有一份更全面的清單,並附上了如何使用簡單的命令行重新運行這些基準的指南。

這個圖展示了一個噪聲優化示例

這個示例展示了使用 pcCMSA-ES 噪聲管理原理(https://homepages.fhv.at/hgb/New-Papers/PPSN16_HB16.pdf)的 TBPSA 如何在表現上勝過幾種替代方案。Facebook 研究團隊在這裡只將 TBPSA 與算法的一個有限示例進行了對比,不過,比起其他的方法,它的表現同樣更好。

Nevergrad 平臺還可以執行在很多機器學習場景中都會出現的離散目標函數。這些場景包括,舉例來說,在一組有限的選項中進行選擇(例如神經網絡中的激活函數)和在層的各個類型中進行選擇(例如,決定在網絡中的某些位置是否需要跳過連接)。

現有的替代平臺(Bbob 和 Cutest)並不包含任何離散的基準。Nevergrad 可以執行經過 softmax 函數(將離散問題轉換成有噪聲的連續問題)或連續變量離散化進行處理了的離散域。

Facebook 研究團隊注意到在這個場景中,FastGA(https://arxiv.org/abs/1703.03334)的表現最好。DoubleFastGA 對應的是 1/dim 和 (dim-1)/dim 之間的突變率,而不對應 1/dim 和 1/2。這是因為原始範圍對應於二進位域,而在這裡,他們考慮的是任意域。在幾種場景中,簡單一致的突變率混合(https://arxiv.org/abs/1606.05551)表現良好。

為研究者和機器學習科學家擴展工具箱

Faacebook 將會持續為 Nevergrad 增加功能,從而幫助研究者創建和評估新算法。最初的版本擁有基本的人工測試功能,不過 Facebook 計劃為其增加更多功能,其中包括表示物理模型的功能。在應用方面,他們將繼續讓 Nevergrad 變得更易用,並嘗試用它來對無法很好地確定梯度的 PyTorch 增強學習模型中的參數進行優化。Nevergrad 還可以幫助 A/B 測試以及作業調度等其他任務進行參數掃描。

via:https://code.fb.com/ai-research/nevergrad/ ,雷鋒網 AI 科技評論編譯。雷鋒網

雷鋒網原創文章,未經授權禁止轉載。詳情見轉載須知。

相關焦點

  • Facebook 發布無梯度優化開源工具 Nevergrad
    為了使得參數/超參數的調整更快、更簡單,Facebook 創建了一個名叫 Nevergrad(https://github.com/facebookresearch/nevergrad) 的 Python 3 庫,並將它開源發布。Nevergrad 提供了許多不依賴梯度計算的優化算法,並將其呈現在標準的問答 Python 框架中。此外,Nevergrad 還包括了測試和評估工具。
  • Facebook發布PyTorch 1.1,開源AI模型優化簡化工具BoTorch & Ax
    在此次開發者大會期間,Facebook開源了簡化模型優化的工具——BoTorch和Ax,還發布了Pytorch 1.1。Facebook F8 大會主要面向圍繞該網站開發產品和服務的開發人員及企業家,大會通常包括主題演講以及 Facebook 新產品、新工具的發布。其名稱源自 Facebook 的 8 小時黑客馬拉松競賽。
  • Facebook開源多款AI工具,支持遊戲、翻譯
    、Caffe 等深度學習框架之外,此次開源的還包括 DensePose(可用於人體姿態估計)、Translate(可翻譯 48 種語言)、ELF(可通過遊戲來教機器推理)等諸多 Facebook 內部使用的庫和模型。
  • 資源| 清華大學開源神經機器翻譯工具包THUMT
    參與:李澤南機器翻譯是自然語言處理的重要組成部分,其目的是使用計算機自動將文本翻譯成其他語言的形式。近年來,端到端的神經機器翻譯發展迅速,已經成為機器翻譯系統的新主流。近日,清華大學自然語言處理組發布了機器翻譯工具包 THUMT,為業內人士的研究和開發工作提供了便利。
  • Facebook 發布開源框架 PyTorch, Torch 終於被移植到 Python 生態...
    本周,Facebook 的 AI 研究團隊發布了一個 Python 工具包,專門針對 GPU 加速的深度神經網絡(DNN)編程。雖然 PyTorch 為機器學習應用而優化,這並不是它的唯一使用場景。比如說,相比 NumPy ,PyTorch 的張量計算可作為它對應功能的替代。PyTorch 為這些功能提供了 GPU 加速的版本。在沒有強力 GPU 加持的情況下,開發者能使用 CPU 運行。
  • 英特爾優化OpenVINO工具包;Streamlit發布開源機器學習開發框架
    【今日資訊頭條 | 英特爾發布 OpenVINO 工具包中的二進位卷積以提高深度學習性能】來源:intel英特爾發布 OpenVINO 工具包二進位OpenVINO 是英特爾提供的基於卷積神經網絡的計算機視覺開發包,目的是能夠快速的在 Intel 的硬體方案上部署和開發計算機視覺工程和方案
  • 李宏毅機器學習完整筆記正式發布
    目前項目已完全開源,包括課程內容和復現代碼,供大家使用。目錄1.李宏毅機器學習簡介2.《LeeML-Notes》李宏毅機器學習筆記3.《LeeML-Notes》學習筆記框架4.筆記內容細節展示a. 對梯度下降概念的解析b. 為什麼需要做特徵縮放c.
  • 【乾貨】去年最火的機器學習開源項目集錦(上)
    近日,Mybridge在Medium上公布了統計的2017年度最受歡迎的機器學習開源項目,包含了各類機器學習庫、開源數據集以及相關項目應用。
  • 機器之心年度盤點:2018年重大研究與開源項目
    在這篇文章中,機器之心從想法到實踐介紹了 2018 年令人矚目的研究工作,它們共同構建了機器學習的當下。我們主要按領域從模型到開源工具展開,其中算法或模型的選擇標準主要是效果和潛力,而開源工具的選擇主要憑藉 GitHub 的收藏量與效果。
  • 10 個頂尖的 Linux 開源人工智慧工具
    在這篇文章中,我們將介紹幾個頂級的開源 Linux 生態系統的人工智慧(AI)工具。
  • 面向Linux的十大開源人工智慧工具
    我們在本文中將介紹幾款面向Linux生態系統的頂尖開源人工智慧工具。本文引用地址:http://www.eepw.com.cn/article/201807/383857.htm下面列出了為支持人工智慧設計和開發的諸多平臺,你可以在Linux及其他許多作業系統上使用。切記:介紹順序不分先後。
  • 谷歌開源神經機器翻譯技術,推出tf-seq2seq框架
    陳樺 編譯自 Google官方博客量子位 報導 | 公眾號 QbitAI谷歌研究軟體工程師、谷歌大腦團隊成員Anna Goldie和Denny Britz今天撰文,宣布在「谷歌神經機器翻譯」的基礎上推出開源框架tf-seq2seq,給外部研究人員提供幫助。
  • Facebook開源DL模塊帶給我們什麼?
    開原始碼&工具 Torch iTorch fbcunn fbnn fbcuda fblualib 誰能受益根據Facebook的說法,如果您想訓練用於圖像識別、自然語言處理或其他應用程式的大規模的深度學習系統(特別是卷積網絡),fbcunn會很有幫助
  • 梯度下降優化算法綜述
    ,也是眾多機器學習算法中最常用的優化方法。AdagradAdagrad[3]也是一種基於梯度的優化算法,它能夠對每個參數自適應不同的學習速率,對稀疏特徵,得到大的學習更新,對非稀疏特徵,得到較小的學習更新,因此該優化算法適合處理稀疏特徵數據。
  • Facebook 開源增強版 LASER 庫:可實現 93 種語言的零樣本遷移
    而近日,Facebook 開源了擴展和改進後的 LASER 工具包,該工具包可應用於使用 28 種不同的字符串編寫的 90 多種語言。 LASER 開源「大禮包」中一同開源的還有多語言編碼器、PyTorch 代碼,以及面向 100 多種語言的多語言測試集。Facebook 將這項成果在其官網上進行了報導,雷鋒網(公眾號:雷鋒網) AI 科技評論編譯如下。
  • 保護隱私快速訓練,Facebook開源Opacus,用差分隱私訓練PyTorch
    近日,Facebook 開源了 Opacus 庫,支持以這種方式訓練 PyTorch 模型。近日,Facebook 開源了一個新型庫 Opacus,它支持使用差分隱私來訓練 PyTorch 模型,擴展性優於目前的 SOTA 方法。同時,Opacus 庫支持以最少代碼更改來訓練模型,且不會影響訓練性能,並允許在線跟蹤任意給定時刻的隱私預算。
  • ...首個自動圖機器學習工具包AutoGL,開源易用可擴展,支持自定義模型
    機器之心報導機器之心編輯部如何應用自動機器學習 (AutoML) 加速圖機器學習任務的處理?清華大學發布全球首個開源自動圖學習工具包:AutoGL (Auto Graph Learning),支持在圖數據上全自動進行機器學習。
  • 從淺層模型到深度模型:概覽機器學習優化算法
    而好的優化算法可以大大提高學習速度,加快算法的收斂速度和效果。該論文從淺層模型到深度模型縱覽監督學習中常用的優化算法,並指出了每一種優化算法的優點及局限性,同時其還包括了一階和二階等各種算法的形式化表達。機器之心主要對本論文選擇性地編譯了優化算法的部分,更詳細的推導及介紹請查看原論文。
  • 重磅| Facebook提出全新CNN機器翻譯:準確度超越谷歌而且還快九倍...
    選自code.facebook作者:Jonas Gehring、Michael Auli、David Grangier、Denis Yarats、Yann N. Dauphin機器之心編譯參與:吳攀、微胖、蔣思源去年穀歌在機器翻譯上取得了連續不斷的突破,谷歌的方法用到了文本處理慣用的循環神經網絡。
  • Facebook新框架Ax和BoTorch雙雙開源
    貝葉斯優化的目標是在有限的資源內找到問題的最優解。通常,貝葉斯優化用於解決黑盒優化問題,比如機器學習算法的超參數優化,A / B測試以及許多其他科學和工程問題。貝葉斯優化問題試圖在無法獲取函數形式的情況下對一些昂貴的評估黑盒函數f進行最大化。具體來說,優化技術在一系列測試點處對f進行評估,希望在少量評估之後確定接近最優值。