之前做了那麼多準備工作,現在開始,終於要正式講我們的主要內容,高斯過程迴歸Gaussian process regression (GPR),當然很多情況下也會叫做kriging(一般geostatistics裡面那麼稱呼)。

在開始令人煩躁的推導之前,我們先來介紹一下高斯過程迴歸吧!

什麼?高斯過程迴歸,這不就之前說了那麼多的高斯過程然後再加個迴歸嘛,這還需要介紹麼?似乎也不能說錯,可是也絕非如此簡單的哦!

追本溯源來講,一切要叢現在的熱門詞彙“機器學習”開始說起。話說機器學習的分類,熟悉的小夥伴你,一定知道,大致分為:

Supervised learning, 監督學習,其本質就是就是從給定的訓練資料中學習中一個對映函式,即當新的資料來到時可是直接代入到之前學習得到的對映函式中,直接獲得一個預測結果。學習的訓練集要求是輸入與輸出,當然更直接的說就是特徵和目標,而其中的目標是由人為的標註的。監督學習中主要可以包括,迴歸regression和分類classification。所謂迴歸就是人為標註的目標是連續的,比如說迴歸天氣溫度(34度,23度,這些連續的實數哦),所謂分類就是輸出是離散的,比如說分類天氣狀況(晴,陰,雨)。這些的學習都算是監督學習,其實也就是這個學習的開始都有個明確的目標(連續也好,離散也罷)。

Unsupervised learning, 無監督學習,相比於監督學習,這裡的訓練集沒有人為標註的結果。常見的就有聚類cluster。舉個例子,給你一大堆手機,這年頭的手機去掉logo,誰都不知道誰是誰,對,給你一堆去掉logo的手機去訓練,把最相似的聚在一起(聚類),然後要求就是再給你一個手機,你就可以自動把他歸進之前聚好的類別中。這裡所謂的聚類是不知道明確要求的歸類,而之前所說的分類是已知明確標籤的,比如智慧機和非智慧機。

Semi-supervised learning,半監督學習,其實就是介於兩者之間的學習。不過這個純屬學者刻意人為定義的,主要還是前面兩者。

其他,現在似乎還有好多新的名詞(發展迅速啊),比如增強學習。

最早的時候我們也說到過, 高斯過程是一種機器學習的方法,所以說GPR就是其中監督學習中的迴歸,當然對應的也該有高斯過分類Gaussian process classification(GPC)。

Gaussian process regression的匯出——權重空間視角下的貝葉斯的方法

言歸正傳, 我們現在還是回到GPR吧。這節的標題是GPR從簡單的貝葉斯線性迴歸開始,其實GPR兩種不同的匯出方式,而下面要介紹的這一種絕對不是簡單的匯出方式,但卻是深度基於了貝葉斯的東西哦!說到貝葉斯,這個其實是個大的話題哦,有機會可以單獨聊一聊,這裡就預設聰明的你對貝葉斯有一定的瞭解了哦,是吧。

啊?恩?哦?算是吧!

“沒錯,貝葉斯嘛,這個我知道,不就是先驗,後驗,似然什麼的啦!”

“對對對,我知道,我知道,就是用先驗的知識去更有效的對後驗進行更為有效的推斷嘛!”

“什麼是先驗,後驗呀?”

“先驗嘛,就是事先給定或者之前就知道的呀,後驗嘛,就是根據先驗可以得出後來的一些內容嘛”

“哦,這樣子啊!”

“對呀,就像你要是對一個人事先有一定了解,那麼自然你對他的一些行為有更多的推斷準確性嘍!”

“Soga”

好吧,這大致就是所謂的貝葉斯啦,至於具體的還是要看看你討厭的公式的哦,不過這裡暫時不做深入討論啦。畢竟知乎上已經有各路大神的各種科普也好,學術也罷的各種文章啦,偶就不獻醜啦,我還是開始我的正題吧。

1。 基本版:從簡單的貝葉斯線性迴歸開始

來來來,回憶一下,什麼是迴歸呢?什麼是線性迴歸呢?

迴歸分析

(英語:Regression Analysis)是一種統計學上分析資料的方法,目的在於瞭解兩個或多個變數間是否相關、相關方向與強度,並建立數學模型以便觀察特定變數來預測研究者感興趣的變數。更具體的來說,迴歸分析可以幫助人們瞭解在只有一個自變數變化時因變數的變化量。一般來說,透過迴歸分析我們可以由給出的自變數估計因變數的條件期望。

簡單的說, 額,這個好像已經說的夠具體的了吧!比如看雲識天氣,什麼樣的雲就意味著之後有什麼樣的天氣,這是如果我們好好分析歷史天氣資訊,那麼就可以迴歸出這個雲的情況和之後天氣變化的關係了嘍!

至於什麼是線性迴歸嘛,那就很好解釋了嘛,也就是說自變數和因變數的關係是線性的嘍。好吧,最終還是要來看看公式了哈!

Standard Linear Regression with Gaussian noise

f(\bm{x}) = \bm{x}^T\bm{w}, y = f(\bm{x}) + \varepsilon

這裡

\bm{x}

是維的輸入

\bm{x}=[x_1,x_2,\cdots,x_p]^T

\bm{w}

是個權重向量

\bm{w} = [w_1,w_2,\cdots, w_p]^T

f

是個函式,對應的

y

是才是真正的target value。這裡當然我們假設這個Noise是i。i。d。(independent identically distributed)高斯分佈,以零為均值和以

\sigma_n^2

為方差。

當我們給出一系列觀測點以及訓練集,

\mathcal{D} = (X, \bm{y}) = \{(\bm{x}_i, y_i) | \bm{x}_i \in \mathbb{R}^n, y_i \in \mathbb{R}, i = 1,\cdots,n \}

。結合我們的噪聲假設高斯分佈假設,可以很快得到Likelihood,也就是似然函式。什麼不知道什麼似然函式麼?出門左轉,然後翻翻這個專欄之前的文章好好學習一下哦!

Likelihood function

\begin{align}\label{eq:BayesianLikelihood} p(\bm{y}| X, \bm{w}) & = \prod_{i=1}^n p(y_i | \bm{x}_i, \bm{w}) = \frac{1}{(2\pi\sigma_n^2)^{n/2}}\exp\left(-\frac{1}{2\sigma_n^2}(\bm{y}-X^{\mathrm{T}}\bm{w})^{\mathrm{T}} (\bm{y}-X^{\mathrm{T}}\bm{w}) \right) \nonumber \\ & = \mathcal{N}(X^{\mathrm{T}}\bm{w}, \sigma_n^2 \mathbf{I}_n). \end{align}

(1)

下面我們就也要結果這個似然函式和所謂的先驗以及貝葉斯公式去得到一個權重的後驗分佈了哦!首先,根據貝葉斯公式,

\begin{equation}\label{eq:BayesRule} p(\bm{w}|\mathcal{D}) = \frac{p(\bm{y}|X, \bm{w})p(\bm{w})}{p(\bm{y}|X)} = \frac{p(\bm{y}|X, \bm{w})p(\bm{w})}{\int p(\bm{y}|X, \bm{w})p(\bm{w})d \bm{w}}\propto p(\bm{y}|X, \bm{w})p(\bm{w}), \end{equation}

(2)

這裡

\propto

表示忽略常係數比例相同。比如(2)中第二個等號後,分母是一個積分,換言之也就是個常數,因而才是最後的式子。現在需要先驗上場了,我們對這個權重有一些事先了解,即

\bm{w} \sim \mathcal{N}(\bm{0}, \Sigma_p)

因而利用公式(2)的貝葉斯公式我們可以計算得到

\begin{align}\label{eq:BayesianWight} p(\bm{w}|\mathcal{D}) & \propto \exp \left( -\frac{1}{2\sigma_n^2}(\bm{y}-X^{\mathrm{T}}\bm{w})^{\mathrm{T}} (\bm{y}-X^{\mathrm{T}}\bm{w}) \right)\exp \left(-\frac{1}{2}\bm{w}^{\mathrm{T}}\Sigma_p^{-1}\bm{w} \right) \nonumber \\ & \propto \exp \left( -\frac{1}{2}(\bm{w}-\bm{\mu}_w)^{\mathrm{T}} \Sigma_w^{-1}(\bm{w}- \bm{\mu}_w)\right), \end{align}

(3)

這裡

\bm{\mu}_w = \sigma_n^{-2}( \sigma_n^{-2}\bm{XX}^{\mathrm{T}} + \Sigma_p^{-1} )^{-1}\bm{Xy}, \Sigma_w = (\sigma_n^{-2}\bm{XX}^{\mathrm{T}} + \Sigma_p^{-1} )^{-1}

。事實上,這其實就是高斯分佈以

 \bm{\mu}_w

為均值以

\Sigma_w

為協方差矩陣,

p(\bm{w}|\mathcal{D}) \sim \mathcal{N}(\bm{\mu}_w, \Sigma_w).

(4)

這個公式只要有心算一算還是不難得出的。事實上,如果你仔細觀察一下就會發現,這其實就是一個高斯先驗在一個高斯似然下是一個高斯 後驗,並且均值方差可以直接表示出來,其實就是所謂的共軛先驗:

https://

zhuanlan。zhihu。com/p/26

193492

現在基於先驗和似然,我們給出了權重的後驗分佈,那麼利用這個後驗分佈,我們自然就可以對測試集進行預測了呀!這裡其實需要利用一個全機率的思想,即

p(f_* | \bm{z}, \mathcal{D})

可以表示為所有可能的引數與其對應的後驗分佈的積分(還是貝葉斯的思想,形式上有點像連續版的全機率公式麼,積分事實上就是連續型的求和嘛!)

\begin{align}\label{eq:predictiveBayesianLinear} p(f_* | \bm{z}, \mathcal{D}) & = \int p(f_* | \bm{z}, \bm{w})p(\bm{w}|\mathcal{D})d\bm{w} \nonumber \\ & = \mathcal{N}(\bm{z}^{\mathrm{T}}\bm{\mu}_w, \bm{z}^{\mathrm{T}}\Sigma_w \bm{z}). \end{align}

(5)

這個公式事實上用的還是是多維高斯分佈的性質哦!因而現在預測分佈仍然是一個高斯的,並且預測的均值以測試點與後驗均值的乘積構成,而預測的方差由測試點和後驗方差的二次型構成。當然最後若是考慮上noise,那麼最後預測的target,

y_*

的預測分佈就是

\begin{equation} p(y_* | \bm{z}, \mathcal{D}) = \mathcal{N}(\bm{z}^{\mathrm{T}}\bm{\mu}_w, \bm{z}^{\mathrm{T}}\Sigma_w \bm{z} + \sigma^2_n \mathbf{I}). \end{equation}

最後偶自己做了個花花綠綠的圖,打算用簡潔的圖來總結一下之前的說敘述的那麼一大堆哈!

Gaussian process regression的匯出——權重空間視角下的貝葉斯的方法

2。 升級版——把輸入投影到特徵空間

或許聰明的你會問到,你說了那麼多,說到底這不就是個線性的模型哦,也就是輸入輸出的關係是線性的呀,也就是說這個輸出可以表示成輸入的線性組合外加一個noise。可問題來了,要是輸入輸出的關係不是線性的怎麼辦呀?

辦法不是沒有,最簡單的方法就是將輸入投影到特徵空間,具體的來講就是先用一些基函式(什麼,不知道什麼基函式?回憶一下線性代數,用一組基可以表示一個線性空間中的任一量,比如多項式函式,就是用1,x,x^2,。。。。。這組基表示的)將輸入投影到高維的空間,然後再應用之前的Bayesian linear regression去處理就好啦!

Gaussian process regression的匯出——權重空間視角下的貝葉斯的方法

這種投影到高維feature space的方法其實非常常用,比如上圖在分類問題中的應用。其實就是說有些問題我們在低維空間中特徵不明顯,我們無法得出結論,那麼試著一提升維度,有時候特徵就可以變的明顯,就好比對一個人瞭解,若是你只是透過簡歷看一個人,那麼你看到人一定就是個平面的人,但是若是你透過家庭,事業,透過現實接觸等一系列的方面去了解一個人,那麼這就是個升維後特徵明顯的人了哈!

在正式進入下面討論前,先高能預警一下,這裡需要很多公式哦,外加還有一些泛涵和實變的東西,不一定可以講的很明白,畢竟一個概念後面需要好多概念去支撐,所以若是實在不明白就挑一點看的明白的看,然後關注一下結論就好啦!

首先,我們考慮一個簡單的基函式

 \phi(\|\bm{x}-\bm{x}_i \|)

,這裡

\phi

是一個non-linear的函式,

\| \bm{x} - \bm{x}_i \|

是多維的向量與它自己在相應的方向上投影(什麼投影,這個也是linear algebra的知識哦,Projection (linear algebra))的距離,這裡的距離是Hilbert space(這其實就是個非常完美的空間,詳情Hilbert space - Wikipedia)上定義的。

現在我們依舊給定n個訓練點,這個每個點都用這個基函式表示, 則

\begin{equation} f(\bm{x}) = \sum^n_{i=1}w_i\phi(\|\bm{x}-\bm{x}_i \|) = \bm{\phi}(\bm{x})^{\mathrm{T}}\bm{w}, \end{equation}

其中

\bm{\phi}(\bm{x}) = [\phi(\|\bm{x}-\bm{x}_1 \|), \cdots, \phi(\|\bm{x}-\bm{x}_n \|)]^{\mathrm{T}}

。 當然整體的模型還是之前的模型哦,其他的假設都還是一樣,即:

\begin{equation} y =\bm{\phi}(\bm{x})^{\mathrm{T}}\bm{w}+ \varepsilon. \end{equation}

下面我們構造一個大的矩陣

\Phi(X)

為所有的訓練輸入,

\Phi(X) = \begin{bmatrix} \phi(\|\bm{x}_1-\bm{x}_1 \|) & \cdots & \phi(\|\bm{x}_1-\bm{x}_n \|)\\ \vdots & \ddots & \vdots\\ \phi(\|\bm{x}_n-\bm{x}_1 \|) & \cdots & \phi(\|\bm{x}_n-\bm{x}_n \|) \end{bmatrix} = \begin{bmatrix} \bm{\phi}(\bm{x}_1)^{\mathrm{T}} \\ \vdots \\ \bm{\phi}(\bm{x}_n)^{\mathrm{T}} \end{bmatrix}.

接下去的分析步驟其實根之前說的Bayesian linear regression是一樣的哦,只不過,這裡我們用

\Phi = \Phi(X)

去替代基本版中的

X

以及

\phi(\bm{z})

去替代

\bm{z}

。因而對應的預測分佈是

\begin{equation}\label{eq:predictiveBasisFunction} p(f_* | \bm{z}, \mathcal{D}) = \mathcal{N}(\bm{\phi}_*^{\mathrm{T}}\bm{\mu}

(6)

這裡

 \bm{\phi}_* = \bm{\phi}(\bm{z}), \bm{\mu}

對於公式(6)為了方便起見,還可以做一下魔法般的變化:

\begin{align}\label{eq:predictiveBasisFunctionKernel} p(f_* | \bm{z}, \mathcal{D}) = \mathcal{N} (& \bm{\phi}_*^{\mathrm{T}}\Sigma_p \Phi (K+ \sigma^2_n \mathbf{I})^{-1}\bm{y}, \nonumber \\ & \bm{\phi}_* ^{\mathrm{T}}\Sigma_p \bm{\phi}_* - \bm{\phi}_*^{\mathrm{T}}\Sigma_p \Phi (K+ \sigma^2_n \mathbf{I})^{-1} \Phi ^{T} \Sigma_p \bm{\phi}_*). \end{align}

(7)

這裡

K = \Phi^{\mathrm{T}} \Sigma_p \Phi

當然嚴謹的你,一定會問,為什麼這兩個看上去那麼不一樣的式子為什麼是一樣的呢?來來來,下面就是答案。GO,Go,go,

首先從均值的角度看,

\begin{align} \sigma^{-2}_n \Phi (K + \sigma^2_n \mathbf{I}) & = \sigma^{-2}_n \Phi (\Phi^{\mathrm{T}} \Sigma_p \Phi + \sigma^2_n \mathbf{I}) \nonumber \\ & = \sigma^{-2}_n \Phi \Phi^{\mathrm{T}} \Sigma_p \Phi + \Phi \nonumber \\ & = (\sigma^{-2}_n \Phi \Phi^{\mathrm{T}} + \Sigma^{-1}_p )\Sigma_p \Phi. \end{align}

所以

\sigma^{-2}_n (\sigma^{-2}_n \Phi \Phi^{\mathrm{T}} + \Sigma^{-1}_p )^{-1} \Phi = \Sigma_p \Phi (K + \sigma^2_n I)^{-1}

(當然這裡還假設了這裡所有的矩陣都是可逆的哈),因而我們可以得到:

\begin{align} \bm{\phi}_*^{\mathrm{T}}\bm{\mu}

接下去,從方差的角度看,利用矩陣代數里面重要的公式:Woodbury matrix identity,其中令

A^{-1} = \Sigma_p, C^{-1} = \sigma^2_n \mathbf{I},U = \Phi, V = \Phi^{\mathrm{T}}

,則

\Sigma

,因而可以得到

\bm{\phi}_* ^{\mathrm{T}}\Sigma

同時,仔細觀察一下這個公式(7)的形式,其中這些

\bm{\phi}_*^{\mathrm{T}}\Sigma_p \Phi, \bm{\phi}_* ^{\mathrm{T}}\Sigma_p \bm{\phi}_*,\Phi ^{T} \Sigma_p \bm{\phi}_*

,不難發他們都有著不變的形式,即

\bm{\phi}(\bm{x})^{\mathrm{T}} \Sigma_p \bm{\phi}(\bm{x}

這裡的

\bm{x}

\bm{x}

都可以是訓練輸入或者測試輸入。

毫無疑問,這個統一的形式具有重要對整個模型有著重要意義,因為它表示出了一種輸入點的關係,因而在偉大數學家們[1]的定義下,它被記做:

k(\bm{x}, \bm{x}

這裡

k( \cdot, \cdot )

被稱作是kernel,或者也可以叫做covariance function,這個就是之前我們說過的GP中的kernel。當然更為深入的研究之後你會發現,其實kernel還可以更一般化的表示為內積(這裡有一些reproduced kernel的知識,Reproducing kernel Hilbert space)

\begin{align}\label{eq:kernelInnerProduct} k(\bm{x}, \bm{x}

這裡,如果我們考慮點積作為一種特殊的內積的話,利用之前的

\psi(\bm{x})

,這裡有個kernel的簡單表示式。由於

\Sigma_p

是個半正定的矩陣(什麼是半正定?Positive-definite matrix),因而我們可以定義

\Sigma_p = (\Sigma^{1/2}_p)^2

。利用大名鼎鼎的SVD分解(什麼,這個也不知道麼,出門左轉,看看之前的文章,或者看wiki, Singular value decomposition),

\Sigma_p = UDU^{\mathrm{T}}

,這裡D是個對角矩陣,因而

\Sigma^{1/2}_p = UD^{1/2}U^{\mathrm{T}}

現在我們可以定義,

\psi(\bm{x}) = \Sigma^{1/2}_p \phi(\bm{x})

,所以最後可以得到

k(\bm{x}, \bm{x}

好了,做到這裡,你是不是也發現了,這裡的kernel是不是已經包含了特徵空間的所有資訊了,因而這個集成了所有特徵空間資訊的kernel是一種原來方法的簡單替代,將之前的一個複雜問題轉化成了一個考慮kernel的問題,這也就是之前在說GP的過程中再三強調kernel的重要性拉!

或許,你還是在疑惑,我們討論了那麼多的公式,這些東西跟我們的主人公GPR有什麼關係?

Gaussian process regression的匯出——權重空間視角下的貝葉斯的方法

其實,仔細想想,推導的最後是不是出現這個所謂的kernel了呢?對吧,因而其實所有的推導就在說明一個事實,GP可以作為上述如此複雜的推導的一個簡單抽象,GP的處理實際上也基於了上述一些複雜的東西。可以這麼說,這些複雜的東西其實是內在的核心,而GP是你所看到的成品。當然,在下一節,我們將會給出GPR在函式空間下,又簡單,又好看,又通俗易懂的具體結果哈!

參考文獻:

[1] Rasmussen, Carl Edward, and Christopher KI Williams。

Gaussian processes for machine learning

。 Vol。 1。 Cambridge: MIT press, 2006。