貝葉斯優化如何工作?

本文來自,Duane Rich。Answer: Duane Rich, Researcher Scientist at Lyft

問題

目標是爲一些”昂貴的“函數找到近似最小值。這些函數接受一個實數向量xx,然後計算很長時間後才返回一個標量。所以我們可以在這裏想象一個一維的情形:

在這裏插入圖片描述

點狀線表示一個我們無法確定的函數,我們僅能通過函數上的一些點來評估這個函數。但是這個評估過程是很耗時的,不妨設我們只有10次機會來評估。那麼你怎麼來找到這個函數的潛在最小點呢?

Here is a dumb idea:

隨機採樣

隨機選擇10個點進行評估。

在這裏插入圖片描述

這麼做確實有用,但是我們可能找不到最小點。或許我們可以有更好的方法。

那麼我們可以根據已知的點來選擇接下來的點麼?

貝葉斯優化(使用高斯過程)

採樣一些輸入(x)-輸出(y)(少於10),然後用它們來猜測出一個真實的函數以及所謂的高斯過程。然後用這個猜測出的函數來決定接下來在哪裏進行評估。評估這個點,然後將這個點加入我們的輸入-輸出集中,再一次推測出一個新的函數。不斷重複直到我們使用完了我們的評估機會。如果高斯過程能更好的猜測出真實的函數,那麼我麼肯定能比隨機採樣做的更好。

如果您不知道高斯過程是什麼,我可以告訴你一些重要的信息。 這是從其輸入和輸出樣本中推論出一個函數(就像我們在上面看到的那樣)的一種方式。 不僅如此,它還提供了輸出的分佈。 因此,當您猜測某個給定x處的函數輸出時,GP也會告訴我們在給定範圍內找到它的可能性。 如果您想了解更多,這裏有一些更深入的內容

接下來我們從我們那“昂貴的函數”中採樣出4個數據點,把它們交給高斯過程,我們就可以推測出其餘的函數,他們大致長這樣:

在這裏插入圖片描述

那條很粗的綠線就是推測出的真實的函數。每個綠色的條子就是標準置信區間。

那麼問題來了,有了這些猜測出來的信息。我們應該從哪個點開始檢驗呢?首先我們需要關注兩個事情:

  1. 我們應該評估我們認爲會產生低輸出值的點,也就是說,我們應該對實線低的點進行評估。
  2. 我們應該檢查那些我們把握不那麼大的區域。在上圖中,我們明顯對0.6-0.8的區間比[0.15, 0.3]小。換句話說,我們應該檢查將最大程度地減少方差的區域。

對於以上兩點是關於“探測-開發”之間的平衡。你是想去尋找新的區域還是開發現有區域中的金礦?我們將開發偏好表示爲一個函數叫做"acquisition function"。這個函數是關於xx的,它會產生一個數值來告訴我們如何在這兩種偏好之間進行選擇。這個函數的計算量很小,因此我們可以對它進行優化,然後使用這個xx來指導我們的下一個搜索目標。

講了這麼多,那麼"acquisition function"是什麼樣子的呢?其實有很多選擇,但是我會使用expectation of improvement的函數。 即,評估下一個預期改進最高的點。

如果:

  1. μ(x)\mu(x)是推測出的函數值,即綠線在xx上的值。
  2. σ(x)\sigma(x)是在xx點的輸出的標準偏差(即成比例的綠色帶子)。

那麼我們的acquisition/expectation of improvement 爲(A(x)A(x)):

在這裏插入圖片描述

其中, Φ(⋅)和N(.)N(.)分別是一個標準正態分佈的分佈函數和概率密度函數。其實理不理解這個式子並不重要。只需要知道它是對μ(x)σ(x)低的\mu(x)和高的\sigma(x)的平衡即可。

讓我來看看這個函數是怎麼工作的,你可以在下圖中看到A(x)A(x)在各個點中對應的值。

在這裏插入圖片描述

由上圖可知,我們應該檢查x=1這一點。

然後不斷重複上述過程。‘

我們遺漏了什麼?

雖然這個例子展示了這種方法的核心部分,但是並沒有展現這個方法的全貌:

  1. 通常,我們會在多個維度上進行最優化。高斯過程可以很自然的拓展到多個維度,但是隨着維度的增加太高,實驗的效率會顯著降低。
  2. 我們堅持假設我們對真實函數的評估是有噪音的。噪音可以很輕易的建模進高斯過程中。高斯過程會找到跟所有點最接近的函數。
  3. 對高斯過程的本身的參數進行微調是一種藝術。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章