1. 程式人生 > >(轉載) 淺談高斯過程回歸

(轉載) 淺談高斯過程回歸

ood 兩個 相關性 plot font ron 模型 如何 隨機過程

網上講高斯過程回歸的文章很少,且往往從高斯過程講起,我比較不以為然:高斯過程回歸(GPR), 終究是個離散的事情,用連續的高斯過程( GP) 來闡述,簡直是殺雞用牛刀。所以我們這次直接從離散的問題搞起,然後把高斯過程逆推出來。

這篇博客有兩個彩蛋,一個是揭示了高斯過程回歸和Ridge回歸的聯系,另一個是介紹了貝葉斯優化具體是怎麽搞的。後者其實值得單獨寫一篇博客,我在這裏就是做一個簡單介紹好了,但沒準就不寫了,想想就累。

高斯過程回歸 的 Intuition

技術分享圖片

  假設有一個未知的函數f : R–> R ,

  在訓練集中,我們有3個點 x_1, x_2, x_3, 以及這3個點對應的結果,f1,f2,f3. (如圖) 這三個返回值可以有噪聲,也可以沒有。我們先假設沒有。

  so far so good. 沒什麽驚訝的事情。

  高斯過程回歸的關鍵假設是:

給定 一些 X 的值,我們對 Y 建模,並假設 對應的這些 Y 值 服從 聯合正態分布!

(更正式的定義後面會說到)

  換言之,對於上面的例子,我們的假設是:

技術分享圖片

  一般來說,這個聯合正態分布的均值向量不用操心,假設成0 就蠻好。(講到後面你就知道為什麽了)

  所以關鍵是,這個模型的 協方差矩陣K 從哪兒來。

  為了解答這個問題,我們進行了另一個重要假設:

  如果兩個x 比較相似(eg, 離得比較近),那麽對應的y值的相關性也就較高。換言之,協方差矩陣是 X 的函數。(而不是y的函數)

  具體而言,對於上面的例子,由於x3和x2離得比較近,所以我們假設 f3和f2 的correlation 要比 f3和f1的correlation 高。  

  話句話說,我們可以假設協方差矩陣的每個元素為對應的兩個x值的一個相似性度量:

技術分享圖片

那麽問題來了,這個相似性怎麽算?如何保證這個相似性度量所產生的矩陣是一個合法的協方差矩陣?
好,現在不要往下看了,你自己想3分鐘。你也能想出來的。 提示:合法的協方差矩陣就是 (symmetric) Positive Semi-definite Matrix (。。。。。。。。。。。。思考中) 好了時間到。

  答案: Kernel functions !

  矩陣A正定是指,對任意的X≠0恒有X^TAX>0。
  矩陣A半正定是指,對任意的X≠0恒有X^TAX≥0。

  判定A是半正定矩陣的充要條件是:A的所有順序主子式大於或等於零。

  如果你了解SVM的話,就會接觸過一個著名的Mercer Theorem,(當然如果你了解泛函分析的話也會接觸過 ),這個M定理是在說:一個矩陣是Positive Semi-definite Matrix當且僅當該矩陣是一個Mercer Kernel .

  所以我們在svm裏用過的任何Kernel都能拿過來用!

  舉個栗子,在高斯過程回歸裏,一種非常常見的Kernel就是SVM裏面著名的高斯核(但是為了讓命名不是那麽混淆,文獻中一般把這個Kernel稱作 squared exponential kernel.

  具體而言就是

技術分享圖片

 回歸分析

  好了,現在可以做回歸分析了:

  如果我們現在又有了一個新的點 x*

  這個新的點對應的f* 怎麽求?(如下圖)

技術分享圖片

根據假設,我們假設 f* 和 訓練集裏的 f1, f2, f3 同屬於一個 (4維的)聯合正態分布!

也就是說,不僅 f1,f2,f3屬於 一個3 維的聯合正態分布(參數可以算出來),而且 f* 和 f1,f2,f3屬於(另一個)4維的聯合正態分布,用數學的語言來表達就是:

技術分享圖片

  首先我們來看一看,這個4 x 4 的 矩陣能不能算出來:

黃色的大K,是依據訓練集的3維聯合分布算出來的,綠色的K*, 是測試點x* 分別和每一個訓練集的x 求出來的。所以整個聯合分布我們都知道了。

  接下來的事情就好辦了,我們既然已經知道(f,f*)的聯合分布P(f, f*)的所有參數, 如何求p(f*) ?好消息是這個聯合分布是正態的,我們直接用公式就能搞出來下面的結果(using the marginalization property):

  不難求出f* 隸屬於一個1維的正態分布, 參數是:

技術分享圖片

  所以這是一種貝葉斯方法,和OLS回歸不同,這個方法給出了預測值所隸屬的整個(後驗)概率分布的。再強調一下,我們得到的是f* 的整個分布!不是一個點估計,而是整個分布啊同誌們。

In addition, 不僅可以得到 f*這一個點的分布,我們對這個未知的 函數 也可以進行推斷!換言之,如果把一個函數想成一個變量,那麽高斯過程回歸可以求出這個函數的分布來。(distribution over functions)不幸的是,我們的計算機只能存儲離散的數據,怎麽表示一個連續的函數呢?

  好辦,我們對一個區間裏面均勻地硬造出來1萬個測試點x*, 然後求出這些測試點和訓練集所對應的y(一個巨高維的向量)的聯合分布,然後在這個巨高維的聯合分布裏采樣一次,就得到了函數的(近似的)一個樣本。

技術分享圖片

  比如訓練集就三個點,測試集1萬個x,圖中的每一個紅點就分別是這些點f* 的均值,(當點很多的時候,就可以假設是一個“連續”的函數了)而藍色的線代表一個或兩個標準差的bound.

  我們如果從這個分布中采樣10次,就可以得到10個巨高維的向量,也就是從這個後驗概率中sample出來的10個函數的sample. plot出來長這個樣子:

技術分享圖片

  含有已知數據(訓練集)的地方,這些函數都離的很近(variance很低),沒有數據的時候,這個spread就比較大。

  也許你會問:我為毛要搞出來函數的分布?我為毛要關心這個variance. 在很多問題中,我們不僅僅需要知道預測值的點估計,而且要知道這個估計有多少信心在裏面(這也是貝葉斯方法的好處之一)

舉個例子:Multiple Bandit Problem假設 我們已經有了幾個油井,每個油井的價值不一樣,我們在這個二維平面上,利用高斯過程回歸,對每一個地理位置估計一個該位置對應的出油量。而開發每一口井是有成本的,在預算有限的情況下,如果想盡可能少地花錢,我們就需要定義一個效益函數,同高斯過程回歸的預測結果相結合,來指導我們下一次在哪兒打井。這個效益函數往往是 預測值 和 方差 的一個函數。以上這個例子,就是高斯過程回歸在貝葉斯優化中的一個典型應用。有時間專門寫一篇。

高斯過程

好了,現在終於可以講一講高斯過程了。

高斯過程是在函數上的正態分布。(Gaussian distribution over functions)具體而言就是
技術分享圖片

  我們具體用的時候,模型假設是醬紫的:

  我們觀察到一個訓練集 D

技術分享圖片

  給定一個測試集 X* ( X* 是一個 N* x D 的矩陣, D是每一個點的維度)我們希望得到 一個 N* 維的預測向量 f*. 高斯過程回歸的模型假設是

技術分享圖片

  然後根據貝葉斯回歸的方法,我們可以求出來 f*的後驗概率:

技術分享圖片

  This is it. 要啥有啥了。

有噪聲的高斯過程

  下面著重說一下有噪聲情況下的結果,以及此情況下和Ridge Regression的神秘聯系。

當觀測點有噪聲時候,即, y = f(x) + noise, where noise ~N(0, sigma^2)

我們有

技術分享圖片

  發現沒,唯一區別就是 K 變成 了 Ky,也就是多加了一個sigma。

  這個很像是一種regularization. 確實如此。

  • 好了,下面就說說這個 GPR的 insight,這個模型到底想幹什麽

  如果只有一個測試點,那麽輸出的f* 就是隸屬於一個1維的正態分布了,具體而言:

技術分享圖片

  再看,我們回想一下Ridge Regression (小編註:下圖argmax應為argmin

技術分享圖片

  我們仔細觀察一下上面那個藍色的框框

技術分享圖片

  所以說,ridge回歸是一種最最最最簡單的高斯過程回歸,核函數就是簡單的點積!

而高斯過程的核函數可以有很多,除了上面提到的squared exponential, 有整整一本書都在講各種kernel和對應的隨機過程

  所以高斯過程是一個非常包羅萬象的根基,類似於小無相功。

  高斯過程回歸(GPR)和貝葉斯線性回歸類似,區別在於高斯過程回歸中用核函數代替了貝葉斯線性回歸中的基函數(其實也是核函數,線性核)。

  來看看多維高斯分布的一些重要性質,第一個性質為兩個相互獨立的多維高斯分布A和B的和也是一個多維高斯分布C,且C的均值和方差都為A和B均值方差的和。第二個性質為:兩個多維高斯分布之和構成的分布C而言,在已知一部分觀察值C1的條件下,另一部分觀察值C2的概率分布是一個多維高斯分布,且可以用A和B中對應的信息來表示。

如下:

  技術分享圖片   

  由貝葉斯線性回歸和高斯過程回歸的對比可知,貝葉斯線性回歸是高斯過程回歸中的一個子集,只是它用的是線性核而已,通過兩者的公式就可以看出它們之間的關系:

  技術分享圖片

  上面是貝葉斯線性回歸,下面是高斯過程回歸。

  簡單例子:

  假設現在已經觀察到了6個樣本點,x為樣本點特征(一維的),y為樣本輸出值。現在新來了一個樣本點,要求是用高斯回歸過程來預測新來樣本點的輸出值。這些樣本點顯示如下;

  技術分享圖片

  其中前面6個點是已知輸出值的訓練樣本,其值為:技術分享圖片

  第7個點是需要預測的樣本,紅色的垂直條形線表示觀察輸出值的誤差,綠色的垂直條形線為用高斯過程回歸的誤差。

  用GPR解該問題的流程大概如下(對應前面講的一些基礎知識):

  1. 選擇適當的u(均值函數)和k(核函數),以及噪聲變量σ,其中核函數的選擇尤其重要,因為它體現了需處理問題的先驗知識,應根據不同的應用而選擇不同的核。

  2. 計算出訓練樣本的核矩陣(6*6),如下:

  技術分享圖片

  3. 計算需預測的點技術分享圖片 與訓練樣本6個點的核值向量,如下:技術分享圖片

  4. 自己和自己的核值為 技術分享圖片 且此時整個樣本的多維高斯分布表達式為: 技術分享圖片

  5. 通過前面m和D的公式,求得m=0.95,D=0.21.

  6. 畫出最終結果如下:

  技術分享圖片

  這個例子來源於論文Gaussian Processes for Regression A Quick Introduction中,它的核函數等參數選擇和基礎知識部分的不同,但這裏主要是對GPR的應用有個簡單的宏觀上的理解,讓大腦對GPR應用有個初步的印象,否則有了那麽多的公式推導但不會應用又有什麽用呢?

  http://www.cnblogs.com/tornadomeet/archive/2013/06/14/3135380.html

  http://dataunion.org/17089.html

  http://www.cnblogs.com/tornadomeet/archive/2013/06/15/3137239.html

(轉載) 淺談高斯過程回歸