字幕組雙語原文:數學之美:貝葉斯優化
英語原文:The Beauty of Bayesian Optimization, Explained in Simple Terms
翻譯:季一帆、Icarus、
問題定義:給定函數f(x),該函數計算成本高、甚至可能不是解析表達式,同時假定函數導數未知。
你的任務:找到函數得全局最小值。
這無疑是一項艱巨的任務,比機器學習中的其他優化問題還要困難。一般得優化問題可以通過以下三種方式求解:
梯度下降方法依賴函數求導,通過數學方法快速估計表達式。函數的評估成本很低得優化場景下,可以在很短時間內獲得輸入x的許多結果,然後使用簡單的網格搜索選擇較好結果。使用粒子群或模擬退火等非梯度優化方法。然而,這些方法並不適用上述定義的問題,對定義問句的優化受到以下幾個方面的限制:
計算成本高。理想情況下,我們可以多次執行函數以確定其最優解,但我們的優化問題中計算過多採樣是不現實的。導數未知。 正是因為導數可知,梯度下降及類似方法廣泛應用於深度學習或某些機器學習算法。導數能夠直到優化方向——不幸的是,在我們問題定義中沒有導數。要找到全局最小值,即使對於梯度下降這樣的方法也不是容易的事情。因此,我們的模型需要某種機制避免陷入局部最小值。解決方案:貝葉斯優化。該方法提供了一個優雅的框架可用於來解決上述定義的問題,並且能夠在儘可能少的步驟中找到全局最小值。
讓我們構造一個函數c(x)或者一個接收輸入x的模型,如下圖所示為c(x)的形狀。當然,優化器並不知道該函數,稱之為「目標函數」。
貝葉斯優化通過代理優化的方式來完成任務。一般來說,surrogate mother是指為另一個人生育孩子的代孕婦女——在本文的情況中,則是指目標函數的近似。
代理函數通過採樣點模擬構造(見下圖)。
根據代理函數,我們大致可以確定哪些點是可能的最小值。然後再這些點附近做更多的採樣,並隨之更新代理函數。
每一次迭代,我們都會繼續觀察當前的代用函數,通過採樣了解更多感興趣的區域,並更新函數。需要注意的是,代用函數在數學上的表達方式將大大降低評估成本(例如y=x是一個成本較高的函數的近似值,y=arcsin((1-cosx)/sin x)在一定範圍內)。
經過一定的迭代次數後,我們註定要到達一個全局最小值,除非函數的形狀非常詭異(就是它的上下波動很大很瘋狂),這時應該問一個比優化更好的問題:你的數據有什麼問題?
花點時間驚嘆一下這種方法的妙處。它不對函數做任何假設(除了它首先是可優化的),不需要導數的信息,並且能夠通過巧妙地使用不斷更新的逼近函數來進行常識性的推理。我們原來的目標函數的昂貴評估根本不是問題。
這是一種基於代用的優化方法。那麼,到底是什麼讓它成為貝葉斯的呢?
貝葉斯統計和建模的本質是根據新的信息更新前(前)信念,以產生一個更新的後('後')信念。這正是本案例中代償優化的作用,所以可以通過貝葉斯系統、公式和思想來最好地表示。
讓我們仔細看看代用函數,通常用高斯過程來表示,它可以被認為是擲骰子,返回與給定數據點(如sin、log)擬合的函數,而不是1到6的數字。這個過程會返回幾個函數,這些函數都附有概率。
左圖:四個數據點的幾個高斯過程生成的函數。右圖:函數匯總。來源:Oscar Knagg,圖片免費分享。
Oscar Knagg的這篇文章對GP的工作原理有很好的直觀認識。
為什麼用高斯過程,而不是其他的曲線擬合方法來模擬代用函數,有一個很好的理由:它是貝葉斯性質的。一個GP是一個概率分布,就像一個事件最終結果的分布(例如拋硬幣的1/2機會),但在所有可能的函數上。
例如,我們可以將當前的數據點集定義為40%可由函數a(x)表示,10%可由函數b(x)表示,等等。通過將代用函數表示為一個概率分布,它可以通過固有的概率貝葉斯過程與新信息進行更新。也許當引入新的信息時,數據只有20%可以用函數a(x)表示。這些變化是由貝葉斯公式來支配的。
這將是很難甚至不可能做到的,比如說,對新數據點進行多項式回歸擬合。
代用函數--表示為概率分布,即先驗--被更新為 "獲取函數"。這個函數負責在勘探和開發的權衡中提出新的測試點。
剝削力求在代用模型預測的目標好的地方採樣。這就是利用已知的有希望的點。但是,如果我們已經對某一區域進行了足夠的探索,那麼不斷地利用已知的信息就不會有什麼收穫。探索力求在不確定性較高的地點進行採樣。這就確保了空間的任何主要區域都不會未被探索--全局最小值可能恰好就在那裡。
一個鼓勵過多的開發和過少探索的獲取函數將導致模型只停留在它首先發現的最小值(通常是局部的--"只去有光的地方")。一個鼓勵相反的獲取函數將不會首先停留在一個最小值,本地或全球。在微妙的平衡中產生良好的結果。
acquisition 函數,我們將其表示為a(x),必須同時考慮開發和探索。常見的獲取函數包括預期改進和最大改進概率,所有這些函數都是在給定先驗信息(高斯過程)的情況下,衡量特定投入在未來可能得到回報的概率。
讓我們把這些東西整合起來。貝葉斯優化可以這樣進行。
1.初始化一個高斯過程 "代用函數 "的先驗分布。
2.選擇幾個數據點x,使在當前先驗分布上運行的獲取函數a(x)最大化。
3.評估目標成本函數c(x)中的數據點x,得到結果,y。
4.用新的數據更新高斯過程先驗分布,以產生一個後驗(它將成為下一步的先驗)。
5.重複步驟2-5進行多次迭代。
6.解釋當前的高斯過程分布(這是非常便宜的),以找到全局最小值。
貝葉斯優化就是把概率論的思想放在代入優化的思想後面。這兩種思想的結合創造了一個強大的系統,從醫藥產品的開發到自主汽車,都有很多應用。
但在機器學習中,最常見的是貝葉斯優化用於超參數優化。例如,如果我們要訓練一個梯度提升分類器,從學習率到最大深度再到最小雜質分割值,有幾十個參數。在這種情況下,x代表模型的超參數,c(x)代表模型的性能,給定超參數x。
使用貝葉斯優化的主要動機是在評估輸出非常昂貴的情況下。首先,需要用參數建立整個樹的合集,其次,它們需要通過多次預測來運行,這對於合集來說是非常昂貴的。
可以說,神經網絡評估給定參數集的損失更快:簡單的重複矩陣乘法,速度非常快,尤其是在專用硬體上。這也是使用梯度下降的原因之一,它使反覆查詢了解其走向。
綜上所述:
代用優化利用代用函數或近似函數通過抽樣來估計目標函數。貝葉斯優化將代用優化置於概率框架中,將代用函數表示為概率分布,可以根據新的信息進行更新。獲取函數用於評估在當前已知的先驗條件下,探索空間中某一點會產生 "好 "收益的概率,平衡探索與開發主要在目標函數評估成本很高的時候使用貝葉斯優化,常用於超參數調整。(這方面有很多庫,比如HyperOpt)。感謝您的閱讀!
雷鋒字幕組是一個由AI愛好者組成的翻譯團隊,匯聚五五多位志願者的力量,分享最新的海外AI資訊,交流關於人工智慧技術領域的行業轉變與技術創新的見解。
團隊成員有大數據專家,算法工程師,圖像處理工程師,產品經理,產品運營,IT諮詢人,在校師生;志願者們來自IBM,AVL,Adobe,阿里,百度等知名企業,北大,清華,港大,中科院,南卡羅萊納大學,早稻田大學等海內外高校研究所。
如果,你也是位熱愛分享的AI愛好者。歡迎與雷鋒字幕組一起,學習新知,分享成長。