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

2021-01-10 雷鋒網

雷鋒網 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開源物體識別工具Detectron,加速計算機視覺研究
    不久前,FAIR才開源了語音識別的工具wav2letter,戳這裡看大數據文摘介紹《快訊 | Facebook開源語音識別工具包wav2letter》。這一系列工具的開源,將使更多研究人員能使用到Facebook的平臺,進一步擴大Facebook人工智慧實驗室的影響力。
  • 谷歌幫助開發,正式支持TensorBoard | 5大開源項目
    下面,我們一個個來看~Pytorch大更新與2018年12月正式發布的Pytorch1.0相比,這次發布的1.1版本提高了性能,並增加了新的模型理解和可視化工具,來提高可用性,還提供了新的API。5大開源工具為了更好地建設AI社區,今年的F8大會上,Facebook還開源了5大工具:Ax、BoTorch、idb、Memscout、Mvfst。
  • 機器之心年度盤點:2018年重大研究與開源項目
    在這篇文章中,機器之心從想法到實踐介紹了 2018 年令人矚目的研究工作,它們共同構建了機器學習的當下。我們主要按領域從模型到開源工具展開,其中算法或模型的選擇標準主要是效果和潛力,而開源工具的選擇主要憑藉 GitHub 的收藏量與效果。
  • Facebook新框架Ax和BoTorch雙雙開源
    近日,Facebook開源了兩個新框架,旨在簡化PyTorch應用程式中的自適應實驗流程:Ax:一個易訪問的通用平臺,面向自適應實驗的理解、管理、部署和自動化。BoTorch:基於PyTorch,是一個靈活的現代庫,用於貝葉斯優化——一種高效的全局優化的概率方法。
  • 重磅| Facebook提出全新CNN機器翻譯:準確度超越谷歌而且還快九倍...
    選自code.facebook作者:Jonas Gehring、Michael Auli、David Grangier、Denis Yarats、Yann N. Dauphin機器之心編譯參與:吳攀、微胖、蔣思源去年穀歌在機器翻譯上取得了連續不斷的突破,谷歌的方法用到了文本處理慣用的循環神經網絡。
  • 保護隱私快速訓練,Facebook開源Opacus,用差分隱私訓練PyTorch
    機器之心報導編輯:小舟、陳萍隱私保護是機器學習領域的重要倫理問題之一,而差分隱私(DP)是行之有效的隱私保護手段。那麼,如何方便地使用差分隱私來訓練機器學習模型呢?近日,Facebook 開源了 Opacus 庫,支持以這種方式訓練 PyTorch 模型。
  • Facebook 發布 Detectron2:基於 PyTorch 的新一代目標檢測工具
    雷鋒網 AI 開發者按:Detectron 是 FAIR 在 2018 年初公開的目標檢測平臺,包含了大量業內最具代表性的目標檢測、圖像分割、關鍵點檢測算法,該框架主要基於 python 和 caffe2 實現,開源項目已獲得了超 2.2w 的星標數。
  • 計算機圖形也能自動可微:MIT學神的微分太極框架開源
    機器之心機器之心報導參與:一鳴、杜偉去年5月,機器之心報導了 MIT 華人學神胡淵鳴等開源的計算機圖形庫——太極。近日,這位作者聯合其他研究者推出了自動微分版本的太極——微分太極。
  • 速度、準確率與泛化性能媲美SOTA CNN,Facebook開源高效圖像...
    DeiT 方法由 Facebook AI 與索邦大學的 Matthieu Cord 教授合作開發,目前代碼已開源。論文地址:https://arxiv.org/pdf/2012.12877.pdfGitHub 地址:https://github.com/facebookresearch/deit方法圖像分類是理解一張圖像主要內容的任務,對於人類而言很簡單,但對機器來說卻很困難。
  • 【乾貨】機器學習最常用優化之一——梯度下降優化算法綜述
    【新智元導讀】梯度下降算法是機器學習中使用非常廣泛的優化算法,也是眾多機器學習算法中最常用的優化方法。幾乎當前每一個先進的(state-of-the-art)機器學習庫或者深度學習庫都會包括梯度下降算法的不同變種實現。
  • 學界| Facebook新論文介紹相似性搜索新突破:在GPU上實現十億規模
    選自arXiv.org機器之心編譯作者:吳攀相似性搜索的規模和速度一直是研究者努力想要克服的難題。近日,Facebook 人工智慧研究團隊在 arXiv 發布的新論文《Billion-scale similarity search with GPUs》宣稱在這一問題上取得了重大進展,在 GPU 上實現了十億規模級的相似性搜索。
  • 高效開源EDA工具鏈已在路上?
    報告4:高效開源EDA工具鏈已在路上(OpenROAD)UCSD的Andrew Kahng教授獲得了DARPA項目的資助,開展高效開源EDA工具鏈的研究。他認為EDA以前是關注質量,但現在該開始關注把易用性了。他參與的DARPA IDEA項目目標非常激進——24小時內全自動地完成IP、SoC晶片、PCB版的設計(圖12)。
  • 圖靈獎得主力推:PyTorch 1.3 今天發布
    機器之心報導參與:一鳴、思今天凌晨,PyTorch 開發者大會在舊金山開幕,會上發布了最新版本 PyTorch1.3。本次更新最大的亮點在於對行動裝置的支持、挑戰傳統張量的「命名張量」,以及更好的性能改進。今天,PyTorch1.3 發布了。圖靈獎得主,被譽為「深度學習三座山頭」之一的 LeCun 發推稱讚。
  • 從星際2深度學習環境到神經機器翻譯,上手機器學習這些開源項目必...
    算法:如何處理和分析數據機器學習算法可利用數據執行特定的任務,最常見的機器學習算法有如下幾種:1.監督學習。監督學習使用以及標註過的和結構化的數據,通過制定一組輸入數據集合所需的輸出,機器可以學習如何識別目標並且映射到其他的學習任務上。
  • 華為深度學習框架MindSpore正式開源:自動微分不止計算圖
    機器之心報導機器之心編輯部千呼萬喚始出來——3 月 28 日,華為的全棧全場景 AI 計算框架 MindSpore 終於正式開源了。今天發布的 MindSpore 首個開源版本為 0.1.0-alpha 版,主要由自動微分、自動並行、數據處理等功能構成。華為表示,MindSpore 具備開發算法即代碼、運行高效、部署態靈活的特點,其核心分為三層:從下往上分別是後端運行時、計算圖引擎及前端表示層。
  • 技術| 深度解讀最流行的優化算法:梯度下降
    原標題:技術 | 深度解讀最流行的優化算法:梯度下降 選自sebastianruder 機器之心編譯 參與:沈澤江我們首先會考察梯度下降法的各種變體,然後會簡要地總結在訓練(神經網絡或是機器學習算法)的過程中可能遇到的挑戰。接著,我們將會討論一些最常見的優化算法,研究它們的解決這些挑戰的動機及推導出更新規律(update rules)的過程。我們還會簡要探討一下,在平行計算或是分布式處理情況下優化梯度下降法的算法和架構。最後,我們會考慮一下其他有助於優化梯度下降法的策略。
  • 華為開源自研AI框架MindSpore!自動微分、並行加持,一次訓練,可多...
    在深度學習中,通常指對網絡模型的自動求導,通過梯度指導對網絡權重的優化。  當前主流深度學習框架中,主要有三種自動微分技術:  一是以TensorFlow為代表的基於靜態數據流圖的轉換,可利用靜態編譯技術對網絡進行性能優化,但受制於數據流圖的表達形式,不能靈活表達控制流;  二是以Pytorch為代表的基於動態圖的轉換,雖然可以使用戶可以靈活的使用控制流。
  • 計算機圖形自動可微:MIT學神微分太極框架開源,論文被ICLR接收
    機器之心報導參與:一鳴、杜偉去年5月,機器之心報導了 MIT 華人學神胡淵鳴等開源的計算機圖形庫——太極。近日,這位作者聯合其他研究者推出了自動微分版本的太極——微分太極。這一框架可以基於太極實現自動微分,在物理模擬優化方面有很高的性能和靈活性。這意味著太極從計算機圖形學進入了機器學習的領域。
  • 15 個開源的頂級人工智慧工具
    Artificial intelligence,AI是科技研究中最熱門的方向之一。以下這些開源人工智慧應用都處於人工智慧研究的最前沿。1. Caffe它是由賈揚清在加州大學伯克利分校的讀博時創造的,Caffe 是一個基於表達體系結構和可擴展代碼的深度學習框架。使它聲名鵲起的是它的速度,這讓它受到研究人員和企業用戶的歡迎。
  • Facebook開源TTS神經網絡VoiceLoop:基於室外聲音的語音合成
    本文由機器之心編輯,「機器之心」專注生產人工智慧專業性內容,適合開發者和從業者閱讀參考。點擊右上角即刻關注。目前 VoiceLoop 已在 GitHub 上開源並附有 PyTorch 實現。機器之心對論文摘要進行了編譯。論文與GitHub連結請見文中。