Gradient-Descent

成本函數評估緩慢時的優化

  • January 31, 2016

梯度下降和許多其他方法對於尋找成本函數中的局部最小值很有用。當成本函數可以在每個點快速評估時,無論是數值還是分析,它們都是有效的。

我有什麼在我看來是不尋常的情況。我的成本函數的每次評估都很昂貴。我試圖找到一組參數,以最小化 3D 表面對地面真實表面的影響。每當我更改參數時,我都需要針對整個樣本群組運行算法以測量其效果。為了計算梯度,我需要獨立更改所有 15 個參數,這意味著我必須重新生成所有表面並與樣本隊列進行比較,每個梯度的次數太多,而且在優化過程中肯定會發生太多次。

我已經開發出一種方法來規避這個問題並且目前正在對其進行評估,但令我驚訝的是,我在文獻中沒有發現太多關於昂貴的成本函數評估的信息。這讓我想知道我是否讓問題變得更加困難,並且可能已經有更好的方法可用。

所以我的問題基本上是這樣的:當評估緩慢時,有沒有人知道優化成本函數的方法,無論是凸的還是非凸的?或者,我是否首先通過重新運行算法並與樣本隊列進行多次比較來做一些愚蠢的事情?

TL; 博士

我建議使用 LIPO。它可證明是正確的,並且可證明比純隨機搜索 (PRS) 更好。它實現起來也非常簡單,並且沒有超參數。我沒有進行過將 LIPO 與 BO 進行比較的分析,但我的預期是 LIPO 的簡單性和效率意味著它將勝過 BO。

(另請參閱:貝葉斯超參數優化有哪些缺點?

貝葉斯優化

貝葉斯優化類型的方法構建高斯過程代理模型來探索參數空間。主要思想是更接近的參數元組將具有相似的函數值,因此點之間的協方差結構的假設允許算法對接下來最值得嘗試的最佳參數元組進行有根據的猜測。該策略有助於減少功能評估的次數;實際上,BO 方法的動機是在“使用整個 buffalo”的同時,盡量減少函數評估的次數,以便很好地猜測接下來要測試的點。有不同的品質因數(預期改進、預期分位數改進、改進概率……)用於比較接下來要訪問的點。

將此與網格搜索進行對比,網格搜索永遠不會使用其先前功能評估中的任何信息來告知下一步要去哪裡。

順便說一句,這也是一種強大的全局優化技術,因此不對錶面的凸度做出任何假設。此外,如果函數是隨機的(例如,評估有一些固有的隨機噪聲),這可以直接在 GP 模型中解釋。

另一方面,您必須在每次迭代中至少擬合一個 GP(或幾個,選擇“最佳”,或對替代方案進行平均,或完全貝葉斯方法)。然後,該模型用於進行(可能數千)預測,通常以多啟動局部優化的形式,觀察到評估 GP 預測函數比優化下的函數便宜得多。但是即使有這種計算開銷,即使是非凸函數也可以通過相對少量的函數調用來優化。

關於該主題的一篇被廣泛引用的論文是Jones 等人 (1998),“Efficient Global Optimization of Expensive Black-Box Functions”。但是這個想法有很多變化。

隨機搜索

即使成本函數的評估成本很高,隨機搜索仍然很有用。隨機搜索很容易實現。研究人員唯一的選擇是設置概率 $ p $ 你希望你的結果位於某個分位數 $ q $ ; 其餘的使用基本概率的結果自動進行。

假設你的分位數是 $ q = 0.95 $ 你想要一個 $ p=0.95 $ 模型結果排在首位的概率 $ 100\times (1-q)=5 $ 所有超參數元組的百分比。所有的概率 $ n $ 嘗試的元組不在該窗口中 $ q^n = 0.95^n $ (因為它們是從同一分佈中獨立隨機選擇的),因此至少一個元組在該區域中的概率是 $ 1 - 0.95^n $ . 綜上所述,我們有

$$ 1 - q^n \ge p \implies n \ge \frac{\log(1 - p)}{\log(q)} $$

在我們的具體情況下產生 $ n \ge 59 $ .

這個結果是大多數人推薦的原因 $ n=60 $ 嘗試隨機搜索的元組。值得注意的是 $ n=60 $ 與使用中等數量的參數時使用基於高斯過程的方法獲得良好結果所需的實驗數量相當。與高斯過程不同,查詢元組的數量不會隨著要搜索的超參數的數量而變化;事實上,對於大量的超參數,基於高斯過程的方法可能需要多次迭代才能取得進展。

由於您對結果有多好有一個概率表徵,因此該結果可以成為說服您的老闆相信進行額外實驗將產生邊際收益遞減的有說服力的工具。

LIPO 及其變體

這是一個令人興奮的到來,如果它不是的,對我來說肯定是新的。它通過在函數上設置知情界限和從最佳界限採樣以及使用二次近似之間交替進行。我仍在研究所有細節,但我認為這是非常有希望的。這是一篇不錯的博客文章,論文是 Cédric Malherbe 和 Nicolas Vayatis “ Lipschitz 函數的全局優化”。

引用自:https://stats.stackexchange.com/questions/193306

comments powered by Disqus