乾貨|通俗講解高斯過程迴歸

通俗講解高斯過程迴歸

網上講高斯過程迴歸的文章不多,且每每從高斯過程講起,我比較不覺得然:高斯過程迴歸(GPR), 終究是個離散的事情,用連續的高斯過程( GP) 來闡述,簡直是殺雞用牛刀。html

因此咱們此次直接從離散的問題搞起,而後把高斯過程逆推出來。網絡

這篇博客有兩個彩蛋,一個是揭示了高斯過程迴歸和Ridge迴歸的聯繫,另外一個是介紹了貝葉斯優化具體是怎麼搞的。dom

後者其實值得單獨寫一篇博客,我在這裏作一個簡單介紹。機器學習

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

乾貨|通俗講解高斯過程迴歸
假設有一個未知的函數f : R–> R ide

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

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

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

給定一些 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. 經過前面m和D的公式,求得m=0.95,D=0.21.

  4. 畫出最終結果以下:

乾貨|通俗講解高斯過程迴歸

這個例子來源於論文Gaussian Processes for Regression A Quick Introduction中。

它的核函數等參數選擇和基礎知識部分的不一樣,但這裏主要是對GPR的應用有個簡單的宏觀上的理解,讓大腦對GPR應用有個初步的印象,不然有了那麼多的公式推導但不會應用又有什麼用呢?

參考:

http://www.cnblogs.com/tornadomeet/archive/2013/06/14/3135380.htmlhttp://dataunion.org/17089.html

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

推薦閱讀:
【西瓜書】周志華《機器學習》學習筆記與習題探討(一)
天然語言處理中CNN模型幾種常見的Max Pooling操做
乾貨|很是詳細的神經網絡入門解釋

全是通俗易懂的硬貨!只需置頂~歡迎關注交流~

乾貨|通俗講解高斯過程迴歸

乾貨|通俗講解高斯過程迴歸

相關文章
相關標籤/搜索