1. 程式人生 > >稍微深入地介紹貝葉斯優化

稍微深入地介紹貝葉斯優化

在University of Colorado Boulder的ARPG實驗室的小白一枚。最近在做貝葉斯優化(Bayesian Optimization)整定相機引數的research. 因為假期賦閒在家,便抽空寫寫所得。

像我這等小白通常想先看中文文獻入門然後再看英文進階。不過就我在接觸這類問題的時候所遇到的問題來看,入門中文教程是幾乎沒有的。如果想要真正深入地瞭解貝葉斯優化,看我的部落格肯定是不夠的,你需要翻牆去Google學術看一些相關的英文文獻。但是用我的內容入門之後再去看那些英文文獻,想必會簡單許多。

在你看了我的文章之後,如果想進一步瞭解貝葉斯優化,下面的是必讀的英文文獻。

A Tutorial on Bayesian Optimization of ExpensiveCost Functions, with Application to Active User Modeling and Hierarchical ReinforcementLearning

Eric Brochu, Vlad M. Cora and Nando de Freitas

Gaussian Processes for Machine Learningthe MIT Press, 2006

文獻2是一本厚厚的書,可以在Google上下載到。肯定無法讀完,但是其中的一些部分會非常有幫助。

Matlab 2016 a之後加入了貝葉斯優化的包,位於Statistics and Machine Learning Toolbox 裡。在網頁http://www.mathworks.com/help/stats/bayesian-optimization-algorithm.html 裡又matlab關於貝葉斯優化的介紹。

另外貝葉斯優化也有相應的c++包和python包,讀者可自行google尋找。

在網頁http://www.360doc.com/content/16/1016/23/1067368_598974485.shtml 裡有更淺顯的關於貝葉斯優化的中文介紹,入門可以一讀。

另外在網頁http://www.cnblogs.com/hxsyl/p/5229746.html 裡也有淺顯的關於高斯過程(Gaussian Process,簡稱GP)的介紹,入門可以一讀。

下面進入正題。 什麼是貝葉斯優化?貝葉斯優化其實就是在函式方程不知的情況下根據已有的取樣點預估函式最大值的一個演算法。該演算法假設函式符合高斯過程(GP). GP是多變數高斯分佈(Multivariate Gaussian Distribution)的一個延伸(我應該會抽空寫一章節講解多變數高斯分佈在Bayesian Optimization裡的應用). 我們都清楚一個隨機變數符合正態分佈時它的方差,均值,分佈函式等概念。當兩個即以上變數仍服從正態分佈,並且這些個隨機變數之間有一定影響時,我們稱這是多變數高斯分佈。當無窮多變數他們之間的任意都符合多變數高斯分佈時,可以看作是高斯過程。而這些變數都可以看作是某個函式上的取樣點,所以我們說整個函式符合高斯過程。

貝葉斯優化會選取未知函式的中數個已知點,作為先驗(prior),假設這些點是GP中的一部分,即他們服從多變數高斯分佈。根據多變數高斯分佈的一些性質,可以計算出這些點中每一個點的均值(mean)和方差(variance) 。我們不知道函式是什麼,但是我們可以獲得函式不同自變數下的因變數。舉個栗子,假設我們有y=-x*x函式,然而我們並不知道它是這個樣子,我們知道的是x=1,2,3..10所對應的y的值。如果我們想要的話,我們也可以找到x=1.5,2.5..時對應的y的值。我們取x=1,2,3..10作為prior, 獲得對應的y值。 同樣,如果我們能決定下一個取樣點,與前面已經有的點“拼接”成更高維度的一個多變數高斯分佈,我們也能計算出這個點的均值和方差。我們通過最大化收穫函式(Acquisition Function,我並沒有發現誰翻譯這個Acquisition Function,自己隨意譯的,以後簡稱AF)來獲得哪個取樣點作為下一個取樣點。

我們為什麼要找下一個取樣點呢?貝葉斯優化的目的是找到當x等於某個值的時候y得到最大. 我們隨機選取的10個點x=1..10裡很可能沒有包含那個值(對y=x*x來說就是0),那麼我們需要找下一個點x, 獲得其對應的取樣點y. 這“下一個x”,是基於我們對前面10個點的多變數高斯分佈的假設以及最大化AF而得到的,現目前為止我們認為的y的最大值最可能出現的位置(恩,,個人認為這句話我還是總結得比較好的,,)。比如現在我們找到x=0.8為“下一個x”, 那麼現在我們就有11個取樣點,x=0.8,1,2...10 和他們對應的y值。這時候這11個點服從多變數高斯分佈,我們再次最大化AF(每一次最大化AF,都需要多變數高斯分佈的資訊),得到"下一個x",如x=0.5,經過一定數量的迭代,我們可能可以得到最大點在x=0.1之類。

演算法簡化

選取m個點x1,..xm作為prior,假設他們服從多變數高斯分佈

for t=1,2...n do

  最大化AF求得下一個取樣點x0

  取樣目標函式位於x0處的值y0

  假設x0,x1....xm服從多變數高斯分佈

我們提到了Acquisition Function那麼多次了,那麼什麼是Acquisition Function呢?我們已經說AF是用來尋找下一個x的。但是AF不止一種,通常有下面幾種

Improvement-based acquisition functions

expected improvement acquisition function

Confidence bound criteria acquisition function

(有更多種類,但這是最基本的三種)

在我最開始介紹的資料裡,http://www.360doc.com/content/16/1016/23/1067368_598974485.shtml  提到的AF為第三種。第二種Acquisition Function是第一種的延伸,並且應用更為多。我應該會專門用一個章節介紹AF,下面只簡要提及其中第一種,improvement based AF.

 

                                       formula 1

式子中的phi()是標準正態分佈的累積分佈函式(輸入公式實在是不方便,phi即是第三式子括號外那東東),屬於高中內容,大家應該很熟悉,或者百度回想一下就知道了. u(x)是我們想要的下一個x的均值,分母為其對應的方差,f(x+)是我們先驗中取樣點中均值最大的取樣點的均值。從這裡我們可以簡單瞭解到要想最大化AF,即最大化IP,我們需要先驗中(先前假設的多變數高斯分佈)的資訊,即x+。 這就是為什麼我在前面說我們找到的"下一個x"是基於我們多變數高斯分佈和最大化AF共同得到的了。

下一篇文章介紹多變數高斯分佈和它在貝葉斯優化中的應用

發現CSDN顯示不出我上傳的圖片,我會在新浪部落格發表這些內容