1. 程式人生 > >機器學習-高斯過程,隨機過程迴歸

機器學習-高斯過程,隨機過程迴歸

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

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

  • 先說一說 高斯過程迴歸 的 Intuition:

    gaussian1

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

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

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

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

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

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

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

gaussian2

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

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

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

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

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

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

gaussian3

那麼問題來了,這個相似性怎麼算?如何保證這個相似性度量所產生的矩陣是一個合法的協方差矩陣? 
好,現在不要往下看了,你自己想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.

  具體而言就是

gaussian4

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

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

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

gaussian5

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

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

gaussian6

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

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

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

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

gaussian7

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

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

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

gaussian8

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

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

gaussian9

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

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

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

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

  我們觀察到一個訓練集 D

gaussian11

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

gaussian12

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

gaussian13

  This is it. 要啥有啥了。

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

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

我們有

gaussian14

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

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

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

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

gaussian15

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

gaussian16

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

gaussian17

  所以說,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