【乾貨】2018值得嘗試的無參數全局優化新算法,所有測試取得最優...

2021-01-09 和訊網

  【新智元導讀】本文介紹了一個名為LIPO的全局優化方法,這個方法沒有參數,而且經驗證比隨機搜索方法好。基於此,作者提出了MaxLIPO和置信域方法混合使用的優化方法,在所有測試中,都取得了最優結果,而且不需要任何參數。你還在手動調參?不如試一下更好的方法。

  有一個常見的問題:你想使用某個機器學習算法,但它總有一些難搞的超參數。例如權重衰減大小,高斯核寬度等等。算法不會設置這些參數,而是需要你去決定它們的值。如果不把這些參數設置為「良好」的值,這個算法就不會起作用。那麼你會怎麼做呢?下面我列出了我見過的人們的做法,從最常見到最不常見排序:

  猜測和檢查:聽從你的直覺,選擇感覺不錯的數字,看看它們是否工作。一直持續這樣做,直到厭倦。

  網格搜索:讓計算機嘗試在一定範圍內均勻分布的一組值。

  隨機搜索:讓計算機隨機挑選一組值。

  貝葉斯優化:使用像MATLAB的bayesopt之類的工具來自動選擇最佳參數,然後你會發現貝葉斯優化比你的機器學習算法有更多的超參數,你變得沮喪,然後回頭使用猜測和檢查或網格搜索。

  在有一個良好的初始猜測的前提下進行局部優化:這就是MITIE的方法,它使用BOBYQA算法,並有一個精心選擇的起始點。由於BOBYQA只尋找最近的局部最優解,所以這個方法是否成功很大程度上取決於是否有一個好的起點。在MITIE的情況下,我們知道一個好的起點,但這不是一個普遍的解決方案,因為通常你不會知道好的起點在哪裡。從好的方面來說,這種方法非常適合尋找局部最優解。稍後我會再討論這一點。

  絕大多數人只會用猜測和檢查的方法。但應該有更好的方法。我們都希望像貝葉斯優化這樣的黑盒子優化策略有用,但根據我的經驗,如果你沒有將其超參數設置為正確的值,那麼它還不如專業的猜測和檢查。我認識的每個使用貝葉斯優化的人都有相同的經驗。最終,如果我認為手動調參能做得更好,那麼就手動唄,而且我的大多數同事也這樣想。最終的結果是,我大部分時間都沒有使用自動化的超參數選擇工具。 我很想有一個無參數的全局優化器,可以信任地用它做超參數選擇。

  所以當我讀到Cédric Malherbe和Nicolas Vayatis在去年的機器學習國際會議上發表的Global optimization of Lipschitz /span>,即使 f(x)有多個局部極大值。論文中的關鍵思想是保持f(x)的分段線性上界,並用它來決定在每個優化步驟中用於評估的x。因此,如果你已經評估了點x ,x ,...,xt,那麼您可以在 f(x)上定義一個簡單的上界,如下所示:

  其中k是f(x)的Lipschitz常數。因此,根據Lipschitz常數的定義, U(x)f(x), x, 是正確的。作者繼而提出一個簡單的算法,稱為LIPO,該算法隨機挑選點,檢查新點的upper bound是否比迄今所見的最佳點好,如果是,則選擇它作為下一個點來評估。例如,下圖顯示了一個簡單的f(x)函數(紅色線),它相關的upper bound U(x)以綠色顯示。在這種情況下, U(x) 由4個點定義,這裡用小黑方塊表示。

  很容易看出upper bound如何幫助你選擇好的點來評估。例如,如果你選擇最大上界作為下一次迭代,那麼你已經非常接近全局最大化。作者繼續證明了這種方法的一些不錯的特性。特別是,它們都是用數學方法證明的,並且在經驗上也證明了在許多非平凡的情況下,這種方法比隨機搜索更好。他們還將該方法與貝葉斯優化等其他算法進行比較,並顯示出其競爭力。

  但是你可能會想:「等一下,我們不知道Lipschitz常數k的值!」 這不是大問題,因為它很容易估計,例如,在每次迭代之前將k設置為f(x)的最大觀察斜率。這相當於解決下面這個簡單的問題:

  Malherbe等人測試了這個k估計方法的變體,並顯示它可以工作。

  這方法很棒。我喜歡這篇論文。總結一下,它提出了一個名為LIPO的全局優化方法,這個方法沒有參數,而且經驗證比隨機搜索方法好。而且它也很簡單。所以我打算給dlib加入一些LIPO算法,我在最新的dlib v19.8版本中實踐了。

  但是,如果你想在實踐中使用LIPO,還需要解決一些問題。這篇文章接下來的部分討論了這些問題以及dlib實現如何解決這些問題。首先,如果 f(x) 有噪聲或不連續,即使只有一點點,它也不能可靠地工作,因為k會變成無窮大。在現實世界的問題中總是會發生這種情況。其次,並不是所有的超參數都同等重要,有些參數幾乎沒有關係,而另一些參數的一點小變化都會對 f(x)的輸出影響很大。所以如果每個超參數都有自己的k,那會很好。你可以通過定義上界U(x) 來解決這些問題,如下所示:

  現在,來自 f(x) 的每個sample 都有自己的噪聲項,大部分時間它的值應該是0,除非非常接近於不連續性或者存在一些隨機性。在這裡,K是一個對角線矩陣,包含「每個超參數一個Lipschitz k項」。通過這個公式,將每個σ設為0,給出與Malherbe等人所提出的相同的U(x),但是如果採取更一般的值,可以處理上面提到的問題。

  像之前那樣,我們可以通過求解一個優化問題來找到U(x)的參數:

  σ²上的的penalty使得大多數σ項恰好為0。整個算法的表現對於這裡使用的特定penalty的值是不敏感的,只要它大得合理,那麼大部分時間σ值都是0,同時仍然阻止k變成無限,這是我們想要的。也可以將它重寫為一個大的二次規劃問題,並用雙坐標下降法來解決這個問題。這裡就不再詳細討論。

  需要解決的最後一個問題是LIPO在局部最大化方面的收斂問題。所以,雖然LIPO擅長達到f(x)的最高峰值,但一旦到達,它不會非常快地向最優位置(即峰頂)進展。這是許多衍生優化算法都有的問題,包括MATLAB的貝葉斯優化工具。幸運的是,並不是所有的方法都受到這個限制。尤其是,Michael J.D.Powell撰寫了一系列有關如何將經典置信域方法應用於無梯度優化的論文。這些方法在目前所見的最佳點附近擬合一個二次曲面,然後在當前最佳點的某個距離內進行下一次迭代,成為該二次曲面的最大值。所以我們「信任」這個局部二次模型在最佳點附近的一個小區域內是準確的,因此被稱為「置信域」。上面提到的BOBYQA方法是其中之一,它對最接近的局部最優收斂性非常好,很容易只需很少的步驟找到局部最優值。

  我們可以結合這兩種方法來解決LIPO的收斂問題,LIPO將探索 f(x)並快速找到最大峰值點。然後一個Powell 置信域方法可以有效地找到該峰值的確切最大化值。把這兩者結合起來最簡單的方法是在它們之間交替,這就是dlib所做的。在偶數次迭代中,我們根據upper bound選取下一個x,而在奇數次迭代中,我們根據置信域模型選擇下一個x。我還用了一個略微不同的LIPO版本,叫做MaxLIPO。回想一下,Malherbe等人建議選擇一個upper bound大於當前最佳目標值的點。不過,我發現在每次迭代中選擇最大 upper bound點更好。這個替代版本MaxLIPO就是dlib使用的。你可以在下面的視頻中看到MaxLIPO和置信域方法混合使用的情況:

  在這個視頻中,紅線是要優化的函數,我們要找的是最大值點。每次算法從函數中抽取一個點時,我們就會用一個小框來記錄。求解器的狀態由全局上界U(x)和置信域方法所使用的局部二次模型決定。因此,我們繪製了upper bounding 模型以及當前的局部二次模型,這樣你就可以看到隨著優化的進行,它們是如何演進的。我們還用一條垂直線標註了到目前為止所看到的最佳點的位置。

  將MaxLIPO和Powell置信區間綜合方法(MaxLIPO+TR,紅色)與MATLAB貝葉斯優化工具的默認設置(藍色)相比較,貝葉斯優化在±10的-3次方精度趨於停滯,而混合方法很快就降到了±10的-17次方浮點精度。

  MaxLIPO+TR與其他方法的比較,在所有測試中,都取得了最優結果,而且不需要任何參數,使用起來非常方便。

  原文還附有使用這個優化函數的Python代碼,具體看這裡:http://blog.dlib.net/2017/12/a-global-optimization-algorithm-worth.html

  論文:Global optimization of Lipschitz /span>

    本文首發於微信公眾號:新智元。文章內容屬作者個人觀點,不代表和訊網立場。投資者據此操作,風險請自擔。

(責任編輯:何一華 HN110)

相關焦點

  • 【乾貨】機器學習最常用優化之一——梯度下降優化算法綜述
    原標題:【乾貨】機器學習最常用優化之一——梯度下降優化算法綜述 1新智元獲授權轉載 不過最終其會和全量梯度下降算法一樣,具有相同的收斂性,即凸函數收斂於全局極值點,非凸損失函數收斂於局部極值點。
  • 第四章 蜘蛛猴優化算法
    在[3]中,Dhar和Arora應用蜘蛛猴優化算法(SMO)設計和優化了一個模糊規則庫;Sharma等人[4]將SMO應用於IEEE-14、30和33測試總線系統中,在適當分配3和5個電容器的情況下,解決最優電容器配置和尺寸問題;Wu等人[5]將SMO用於稀疏線性陣列的合成。
  • BERT輕量化:最優參數子集Bort
    鄭集楊 發自 凹非寺 量子位 報導 | 公眾號 QbitAI近期,亞馬遜 Alexa 團隊發布了一項研究成果:研究人員對BERT模型進行參數選擇,獲得了BERT的最優參數子集——Bort。FPTAS助力「瘦身」首先需要明確的是,這並不是研究人員第一次嘗試給BERT「瘦身」了。因為BERT的規模大,推理速度慢,並且預處理過程複雜,所以先前已經有部分研究人員便嘗試對其進行瘦身,取得了一定的成果:保持了其前身的相同性能、簡化了預訓練過程同時減少了推理時間。
  • ECCV 2020 | 利用全局優化算法處理事件相機運動估計問題
    文章關注的是 事件相機運動估計 問題 ,並提出了基於BnB的全局優化算法,將其應用在朝地面看的事件相機運動估計上 進行實驗驗證,取得了很好的效果。  其原理是基於當使用正確的參數將事件轉換到參考幀時,其形成的圖片(IWE, Imageof Warped Events)是最清晰的。[2]和[3]中列舉了用於表徵圖片清晰的目標函數,包括對比度,像素亮度平方和,熵等。  基於BnB的全局優化算法
  • 淺析基於優化算法的能量管理控制策略(二)
    優化算法可分為全局優化和實時優化,受算法本身的限制以及採樣時間、模型精度、參數定義等因素的影響,目前這種區分尚不明顯。,NN)滑模控制(Sliding ModeControl,SMC)無導數優化算法——模擬退火(Simulated Annealing,SA)無導數優化算法——遺傳算法(Genetic Algorithm,GA)無導數優化算法——粒子群算法(Particle Swarm Optimization,PSO)無導數優化算法——DIRECT
  • BERT輕量化:最優參數子集Bort,大小僅為BERT-large16%
    FPTAS助力「瘦身」首先需要明確的是,這並不是研究人員第一次嘗試給BERT「瘦身」了。因為BERT的規模大,推理速度慢,並且預處理過程複雜,所以先前已經有部分研究人員便嘗試對其進行瘦身,取得了一定的成果:保持了其前身的相同性能、簡化了預訓練過程同時減少了推理時間。
  • 優化算法——人工蜂群算法(ABC)
    一、人工蜂群算法的介紹 人工蜂群算法(Artificial Bee Colony, ABC)是由Karaboga於2005年提出的一種新穎的基於群智能的全局優化算法
  • 應用改進的算法,優化波浪能轉換裝置陣列,提升系統發電效率
    差分進化算法全局搜索能力強並且計算時間少;同時,差分進化算法在精度和收斂速度上沒法兩全且可能會陷入局部解,為了使優化結果更準確,引入了自適應變異算子的概念對差分進化算法進行改進,改進後的算法收斂速度相對較快而且結果準確度高。結合改進算法,分別針對不同浮子數目的陣列進行優化與對比分析。
  • 貝葉斯優化之美:精妙算法背後的直覺
    你的任務是,找出全局最小值。當然,這個任務挺難的,比機器學習中的其他優化問題要難得多。例如,梯度下降可以獲得函數的導數,並利用數學捷徑來更快地計算表達式。另外,在某些優化場景中,函數的計算成本很低。如果可以在幾秒鐘內得到數百個輸入值x的變量結果,簡單的網格搜索效果會更好。另外,還可以使用大量非傳統的非梯度優化方法,如粒子群算法或模擬退火算法(simulated annealing)。
  • [算法系列]最優化問題綜述
    3 求解算法3.1 無約束優化算法3.1.1 梯度下降法梯度下降法是最早最簡單,也是最為常用的最優化方法。梯度下降法實現簡單,當目標函數是凸函數時,梯度下降法的解是全局解。一般情況下,其解不保證是全局最優解,梯度下降法的速度也未必是最快的。
  • 自我代碼提升之啟發式算法(番外篇)
    對預測類問題,如果要確保找出最優的解,那麼可能需要遍歷嘗試所有可能的選擇,在絕大多數場景下,面對指數增長的搜索空間,幾乎是不可取的。在這種背景下,啟發式算法應運而生,其目標在於,在有限的時間和資源下(可接受的範圍內),尋找出能夠解決問題的可行解,可行解和通常不是全局最優解,但可能是一個較為優秀的局部最優解。
  • 「乾貨」在拉斯維加斯,程式設計師如何靠bandits算法幹掉老虎機
    AB測試:從埋點到棄療AB測試棄療第一步:不管是使用頻率學派還是貝葉斯學派的方法,我們需要決策還是要走AB測試的一整個流程,但是很多時候使用AB測試來做所有決策的機會成本太高,人力成本太高(數據科學家太貴),較差的版本帶來的損失等等原因讓使用AB測試做數據驅動淪為了一句口號。
  • 聽說你了解深度學習最常用的學習算法:Adam優化算法?
    Adam優化算法和其他優化算法在多層感知機模型中的對比  事實上,Insofar、RMSprop、Adadelta和Adam算法都是比較類似的優化算法,他們都在類似的情景下都可以執行地非常好。但是Adam算法的偏差修正令其在梯度變得稀疏時要比RMSprop算法更快速和優秀。Insofar和Adam優化算法基本是最好的全局選擇。
  • 算法優化之道:避開鞍點
    這就是梯度下降算法(gradient descentalgorithm)。每當梯度∇f(x)不等於零的時候,只要我們選擇一個足夠小的步長η,算法就可以保證目標函數向局部最優解前進。當梯度∇f(x)等零向量時,該點稱為臨界點(critical point),此時梯度下降算法就會陷入局部最優解。
  • 中國科大多參數量子精密測量獲得重要進展:達到海森堡極限最優測量
    來自中國科大的消息顯示,近日,中國科大郭光燦院士團隊李傳鋒、項國勇研究組與香港中文大學袁海東教授在多參數量子精密測量研究中取得重要實驗進展,完全解決了量子比特么正演化算法中三個參數之間的精度制衡問題,實現了三個參數同時達到海森堡極限的最優測量。
  • 乾貨| 電動汽車電控系統參數匹配及優化
    乾貨 | 電動汽車電控系統參數匹配及優化 2018-06-13 11:24 來源: 東方網 導讀:為了提高純電動汽車的動力性設計指標,研究了純電動汽車電控參數在設計過程中
  • 引入Powerball 與動量技術,新SGD優化算法收斂速度與泛化效果雙...
    自適應算法(比如AdaGrad、RMSProp、Adam)通常在前期可以獲得較好的收斂性能,然而最近研究表明自適應算法在優化中容易收斂到局部極小值,在測試集上泛化性能較差。因此許多計算機視覺與自然語言處理方面的研究仍然採用SGD用於訓練網絡。另一方面,相比於自適應方法SGD在收斂速度方面有所欠缺。因此,如何使得SGD可以在非凸條件下有效逃離鞍點並取得更好的收斂效果成為了熱點研究領域。
  • 帶你從不同角度了解強化學習算法的分類
    基於這個觀點有兩個RL算法的分支:無模型和基於模型。· 模型RL算法根據環境的學習模型來選擇最佳策略。· 無模型RL算法通過代理反覆測試選擇最佳策略。兩種算法都各有優缺點,如下表所示:基於價值VS 基於政策RL算法的另一種分類方法是考慮算法優化了價值函數還是策略。在深入了解之前,我們先了解策略和價值功能。
  • 基於遺傳算法的工廠AGV路徑優化研究
    路徑規劃,並加入物料類型選擇的循環套,通過多次實驗確定最合理的控制參數,從而產生AGV運輸多種類型物料的最優路徑結果。遺傳算法是模仿自然界生物進化機制發展起來的隨機全局搜索優化方法,具有算法效率高、魯棒性強、可實現並行搜索等特點 [3] ,被廣泛用於解決路徑規劃等領域的問題。
  • 擬合目標函數後驗分布的調參利器:貝葉斯優化
    這就像統計學裡面的抽樣定理,即我們從樣本參數出發估計總體參數,且希望構建出的估計量為總體參數的相合、無偏估計。下面我們繪製了另外一張非線性目標函數曲線圖。我們發現對於給定的目標函數,在饋送了所有的觀察樣本後,它將搜尋到最大值。即尋找令目標函數最大的參數(arg max)。