關於高斯過程(Gaussian process,下稱 GP)通常長這樣:

高斯分佈推廣到無限維,就是高斯過程。它由平均值函數和共變異數函數決定。核決定了函數的形狀。觀測資料後可以得到後驗。

每句話都對,但讀完之後其實什麼也沒學到——因為沒有一句話是可以驗證的。“推廣到無限維”具體是怎麼推的?“核決定形狀”能不能算出來?後驗憑什麼有閉式解?

這篇文章的目標是把這幾件事全部算到底。核心論點只有一個:

GP 裡幾乎所有東西,都是多元高斯的條件化公式的直接後果。

所以我們不急著定義 GP。先花足夠的篇幅把多元高斯的條件分佈推匯出來,之後你會發現剩下的部分幾乎不需要新想法。


1. 一切都從條件化開始

1.1 多元高斯與它的幾何

dd 維隨機向量 xN(μ,Σ)\mathbf{x}\sim N(\boldsymbol\mu,\Sigma) 的密度為

p(x)=(2π)d/2Σ1/2exp ⁣(12(xμ)Σ1(xμ))(1)p(\mathbf{x})=(2\pi)^{-d/2}|\Sigma|^{-1/2} \exp\!\Big(-\tfrac12(\mathbf{x}-\boldsymbol\mu)^\top\Sigma^{-1}(\mathbf{x}-\boldsymbol\mu)\Big) \tag{1}

指數里的二次型 (xμ)Σ1(xμ)=c(\mathbf{x}-\boldsymbol\mu)^\top\Sigma^{-1}(\mathbf{x}-\boldsymbol\mu)=c 是一個橢球。對 Σ=UΛU\Sigma=U\Lambda U^\top 做特徵分解,UU 的列給出橢球主軸方向,λi\sqrt{\lambda_i} 給出對應半軸長度。

共變異數矩陣的幾何

三張圖的邊緣分佈完全相同,都是 N(0,1)N(0,1)。唯一的差別是相關係數。相關性越強,機率雲越被壓成一條細帶——也就是說,一旦知道 x1x_1x2x_2 的可能取值範圍就被大幅收窄。

這句話就是 GP 全部預測能力的來源。請記住它。

1.2 邊緣化:把行和列摳出來

xN(μ,Σ)\mathbf{x}\sim N(\boldsymbol\mu,\Sigma) 中取子集 xA\mathbf{x}_A,其餘變數積掉,結果是

xAN(μA, ΣAA)(2)\mathbf{x}_A\sim N(\boldsymbol\mu_A,\ \Sigma_{AA}) \tag{2}

不需要算任何積分,直接摳出對應的行列即可。

一個快速的證明:任何高斯向量的線性變換仍是高斯的(這是特徵函數的一行計算),而”取子集”就是乘一個只含 0/1 的選擇矩陣 SSxA=Sx\mathbf{x}_A=S\mathbf{x},於是 xAN(Sμ,SΣS)\mathbf{x}_A\sim N(S\boldsymbol\mu, S\Sigma S^\top),展開就是 (2)。

這條性質看著平淡,但第 2 節會看到,它是 GP 能夠存在的唯一理由。

1.3 條件化:完整推導

這是全文最重要的一步,所以我們不抄結論,而是推一遍。

把變數分成兩塊:

(x1x2)N ⁣((μ1μ2),(Σ11Σ12Σ21Σ22))\begin{pmatrix}\mathbf{x}_1\\ \mathbf{x}_2\end{pmatrix} \sim N\!\left( \begin{pmatrix}\boldsymbol\mu_1\\ \boldsymbol\mu_2\end{pmatrix}, \begin{pmatrix}\Sigma_{11} & \Sigma_{12}\\ \Sigma_{21} & \Sigma_{22}\end{pmatrix} \right)

配方法(completing the square)當然可行,但代數很髒。有一個乾淨得多的技巧:先構造一個與 x2\mathbf{x}_2 無關的殘差。

A=Σ12Σ221A=\Sigma_{12}\Sigma_{22}^{-1},定義

z=x1Ax2\mathbf{z}=\mathbf{x}_1-A\mathbf{x}_2

計算它與 x2\mathbf{x}_2 的共變異數:

Cov(z,x2)=Σ12AΣ22=Σ12Σ12Σ221Σ22=0\operatorname{Cov}(\mathbf{z},\mathbf{x}_2) =\Sigma_{12}-A\Sigma_{22} =\Sigma_{12}-\Sigma_{12}\Sigma_{22}^{-1}\Sigma_{22}=0

AA 這個係數就是特意為了讓共變異數歸零而選的。而 (z,x2)(\mathbf{z},\mathbf{x}_2)(x1,x2)(\mathbf{x}_1,\mathbf{x}_2) 的線性變換,所以它們聯合高斯;對聯合高斯而言,不相關 \Rightarrow 獨立。於是

z ⁣ ⁣ ⁣x2p(zx2)=p(z)\mathbf{z}\perp\!\!\!\perp \mathbf{x}_2 \quad\Longrightarrow\quad p(\mathbf{z}\mid \mathbf{x}_2)=p(\mathbf{z})

z\mathbf{z} 的邊緣分佈直接算:

E[z]=μ1Aμ2,Var(z)=Σ11AΣ21Σ12A+AΣ22A=Σ11Σ12Σ221Σ21E[\mathbf{z}]=\boldsymbol\mu_1-A\boldsymbol\mu_2,\qquad \operatorname{Var}(\mathbf{z})=\Sigma_{11}-A\Sigma_{21}-\Sigma_{12}A^\top+A\Sigma_{22}A^\top =\Sigma_{11}-\Sigma_{12}\Sigma_{22}^{-1}\Sigma_{21}

最後,給定 x2\mathbf{x}_2x1=z+Ax2\mathbf{x}_1=\mathbf{z}+A\mathbf{x}_2,其中 Ax2A\mathbf{x}_2 是常數,所以

x1x2N ⁣(μ1+Σ12Σ221(x2μ2),  Σ11Σ12Σ221Σ21)(3)\mathbf{x}_1\mid\mathbf{x}_2\sim N\!\Big( \boldsymbol\mu_1+\Sigma_{12}\Sigma_{22}^{-1}(\mathbf{x}_2-\boldsymbol\mu_2),\; \Sigma_{11}-\Sigma_{12}\Sigma_{22}^{-1}\Sigma_{21}\Big) \tag{3}

推導結束。整個過程只用到”線性變換保高斯”和”聯合高斯下不相關即獨立”兩件事。

1.4 從公式裡讀出四件事

(a) 條件分佈仍是高斯。 高斯族對條件化封閉,所以後驗永遠有閉式解——不需要 MCMC,不需要變分近似。這在貝葉斯方法裡是極稀有的待遇。

(b) 平均值被”拉動”的幅度正比於 Σ12\Sigma_{12}Σ12=0\Sigma_{12}=0,後驗平均值就等於先驗平均值,觀測毫無用處。學習的本質就是”通過相關性傳遞資訊”。

(c) 後驗共變異數是 Schur 補,且變異數一定不增:

Σ11Σ12Σ221Σ21  Σ11\Sigma_{11}-\Sigma_{12}\Sigma_{22}^{-1}\Sigma_{21}\ \preceq\ \Sigma_{11}

因為 Σ12Σ221Σ21=AΣ22A0\Sigma_{12}\Sigma_{22}^{-1}\Sigma_{21}=A\Sigma_{22}A^\top\succeq 0。直觀解釋:Ax2A\mathbf{x}_2x1\mathbf{x}_1x2\mathbf{x}_2 張成空間上的最優線性預測,而 Var(z)\operatorname{Var}(\mathbf{z}) 就是預測不掉的那部分殘差變異數

(d) 後驗共變異數不依賴觀測到的具體數值 x2\mathbf{x}_2 它只依賴觀測點的位置。這有點反直覺,但從推導裡看得很清楚:Var(z)\operatorname{Var}(\mathbf{z}) 的表示式里根本沒有 x2\mathbf{x}_2

這條性質是貝葉斯最佳化和主動學習的地基:你還沒去測量,就已經知道測完之後不確定性會降到多少,因此可以提前挑選最值得測的點。

(一個誠實的補充:這隻在超參數固定時成立。若你要從資料裡學 ,σf\ell,\sigma_f,觀測值就會通過超參數間接影響變異數。)

1.5 二維情形看一眼

Σ=(10.850.851)\Sigma=\begin{pmatrix}1&0.85\\0.85&1\end{pmatrix},觀測 x1=1.6x_1=1.6

邊緣分佈與條件分佈

代入 (3):平均值 0ρx1=1.360\to \rho x_1=1.36,變異數 11ρ2=0.281\to 1-\rho^2=0.28。在聯合密度上豎著切一刀,截面歸一化後仍是鐘形。


2. “函數上的分佈”到底是什麼意思

現在做推廣。有兩條路,它們最後會合到同一個地方,但給出的直覺完全不同,兩條都值得走一遍。

2.1 路線一:把維數加密

我們習慣把二維高斯的樣本畫成平面上一個點 (x1,x2)(x_1,x_2)。換個畫法:橫軸放下標,縱軸放取值,把 x1,x2x_1,x_2 畫成兩個點然後連起來。

這個視角一換,維數就可以隨便加了。取 dd 個位置 t1<<tdt_1<\dots<t_d,把共變異數按”位置越近相關越強”來構造:Σij=exp((titj)2/22)\Sigma_{ij}=\exp(-(t_i-t_j)^2/2\ell^2),然後從 N(0,Σ)N(\mathbf 0,\Sigma) 取樣並連線:

從有限維到函數

d=2d=2 是一條線段,d=200d=200 看起來就是光滑函數。但我們自始至終只做了一件事:從多元高斯里取樣。 所謂”函數上的分佈”,是把維數推到無窮、把折線畫密之後的觀感。

這條路直觀,但它沒解釋”無窮維極限存在嗎”,也沒解釋核是從哪來的。

2.2 路線二:權重空間——核是被推匯出來的

從熟悉的貝葉斯線性迴歸出發。取一組固定的基函數 ϕ(x)=(ϕ1(x),,ϕm(x))\boldsymbol\phi(x)=(\phi_1(x),\dots,\phi_m(x))^\top,模型是

f(x)=ϕ(x)w,wN(0,Σp)f(x)=\boldsymbol\phi(x)^\top\mathbf{w},\qquad \mathbf{w}\sim N(\mathbf 0,\Sigma_p)

現在問:ff 作為一個隨機函數,服從什麼分佈?

任取有限個位置 x1,,xnx_1,\dots,x_n,則 (f(x1),,f(xn))=Φw(f(x_1),\dots,f(x_n))^\top=\Phi\mathbf{w},其中 Φ\Phi 的第 ii 行是 ϕ(xi)\boldsymbol\phi(x_i)^\top。這是高斯向量的線性變換,所以一定是高斯的。於是

E[f(x)]=0,Cov(f(x),f(x))=ϕ(x)Σpϕ(x)(4)E[f(x)]=0,\qquad \operatorname{Cov}\big(f(x),f(x')\big)=\boldsymbol\phi(x)^\top\Sigma_p\,\boldsymbol\phi(x') \tag{4}

核不是憑空規定的,它是從基函數和權重先驗裡算出來的。

現在取一個具體的基:把寬度為 \ell 的高斯凸包在實軸上均勻鋪開,中心為 cc

ϕc(x)=exp ⁣((xc)222)\phi_c(x)=\exp\!\Big(-\frac{(x-c)^2}{2\ell^2}\Big)

設中心間距為 Δ\Delta,權重先驗變異數取 s2Δs^2\Delta(這樣當 Δ0\Delta\to0 時求和收斂為積分)。代入 (4):

k(x,x)=s2 ⁣exp ⁣((xc)222)exp ⁣((xc)222)dck(x,x')=s^2\!\int_{-\infty}^{\infty} \exp\!\Big(-\frac{(x-c)^2}{2\ell^2}\Big) \exp\!\Big(-\frac{(x'-c)^2}{2\ell^2}\Big)\,dc

配方。記 mˉ=x+x2\bar m=\frac{x+x'}{2},用恆等式

(xc)2+(xc)2=2(cmˉ)2+12(xx)2(x-c)^2+(x'-c)^2=2(c-\bar m)^2+\tfrac12(x-x')^2

於是被積函數分離成 exp((cmˉ)2/2)exp((xx)2/42)\exp\big(-(c-\bar m)^2/\ell^2\big)\cdot\exp\big(-(x-x')^2/4\ell^2\big),而 exp((cmˉ)2/2)dc=π\int\exp(-(c-\bar m)^2/\ell^2)dc=\ell\sqrt\pi,所以

k(x,x)=s2πexp ⁣((xx)242)(5)k(x,x')=s^2\ell\sqrt{\pi}\, \exp\!\Big(-\frac{(x-x')^2}{4\ell^2}\Big) \tag{5}

這正是 squared exponential 核,lengthscale 為 2\sqrt2\,\ell,變異數為 s2πs^2\ell\sqrt\pi

權重空間視角

中間那張圖是數值驗證:m=8m=8 時隱含的核還是”坑坑窪窪”的(而且不平穩,因為基函數鋪得太稀),m=20m=20 已經很接近,m=80m=80 與解析極限 (5) 重合。

這條路徑回答了兩個關鍵問題:

  1. “非參數”到底是什麼意思。 不是”沒有參數”,而是參數有無窮多個,並且已經被積分積掉了。SE 核背後是無窮多個 RBF 基函數。
  2. 為什麼 GP 比有限基模型強。 右圖裡 m=4m=4 的樣本很僵硬——它只能生成一個 4 維的函數族,在基函數覆蓋不到的地方直接塌成零。mm\to\infty 才有足夠的表達力。

反過來看 (4) 也有用:若 m<nm<n,則 K=ΦΣpΦK=\Phi\Sigma_p\Phi^\top 的秩最多是 mm,一定奇異。核矩陣滿秩,等價於背後的特徵空間維數足夠高。

2.3 定義,以及為什麼它是合法的

現在給定義。隨機過程 {Xt}tT\{X_t\}_{t\in T} 稱為 Gaussian process,如果對任意有限多個索引 t1,,tnTt_1,\dots,t_n\in T,隨機向量 (Xt1,,Xtn)(X_{t_1},\dots,X_{t_n}) 都服從多元高斯分佈。

這個定義只談有限維分佈,從不試圖一次寫出無窮維物件。這既是技術上必需的(無限維空間上沒有 Lebesgue 測度,密度 (1) 根本寫不出來),也是實踐上夠用的——我們本來就只在有限個點上預測。

但這裡有個真問題:這一族互相重疊的有限維分佈,能不能拼成一個真正存在的隨機過程?

答案由 Kolmogorov 延拓定理給出:只要這族有限維分佈是相容的——即對任意超集邊緣化後,與直接在子集上定義的分佈吻合——就存在唯一的過程與之對應。

而 1.2 節告訴我們,高斯分佈的邊緣化就是摳行列,從更大的 KK 裡摳出的子塊,恰好等於直接在子集上算出的 KK相容性自動成立。 這就是為什麼 GP 是”免費”的,而換成別的分佈族(比如把每個位置設為 tt 分佈)通常拼不起來。

於是過程完全由兩個函數刻畫:

m(t)=E[Xt],k(s,t)=Cov(Xs,Xt),X(t)GP(m(t),k(s,t))(6)m(t)=E[X_t],\qquad k(s,t)=\operatorname{Cov}(X_s,X_t),\qquad X(t)\sim\mathcal{GP}\big(m(t),k(s,t)\big) \tag{6}

對一般隨機過程,平均值和共變異數只是低階統計量,遠不足以刻畫全貌。對 GP 而言,它們完全決定所有有限維分佈,因而完全決定整個過程。

實踐中通常取 m0m\equiv0。這不是因為相信函數平均值為零,而是因為資料可以先中心化,且後驗平均值完全由核和資料生成(見 4.3 節)——先驗平均值一般不是瓶頸。


3. 核:那些可以被驗證的性質

核不是”選個 RBF 就完事”的設定項,它是你對函數的全部先驗假設。這一節講三件能真正算出來、驗證得了的事。

3.1 正定性是硬約束,不是技術細節

kk 必須正定:對任意有限點集,Kij=k(ti,tj)K_{ij}=k(t_i,t_j) 必須半正定。原因顯然——KK 要當共變異數矩陣用,而任何線性組合的變異數 aKa\mathbf{a}^\top K\mathbf{a} 不能為負。

很多人以為”只要是個遞減的相似度函數就行”。反例很容易造。取 kp(s,t)=exp(stp)k_p(s,t)=\exp(-|s-t|^p),在 [0,3][0,3] 上取 12 個等距點:

ppKK 的最小特徵值
1+0.1378+0.1378
2+0.0000+0.0000
30.2534\mathbf{-0.2534}
40.4876\mathbf{-0.4876}

exp(rp)\exp(-|r|^p) 只在 0<p20<p\le2 時是合法核。p=3p=3 時最小特徵值已經是 0.25-0.25——這意味著存在一個方向,“變異數”是負的。用它會發生什麼?Cholesky 分解直接失敗,預測變異數可能算出負數,整個模型沒有機率意義。

p=2p=2 恰好卡在邊界上(最小特徵值是 101710^{-17} 量級的數值零),這也是 SE 核在數值上格外容易病態的原因,後面 4.6 節會再提。

3.2 光滑度不是形容詞,是一個冪次

“SE 核很光滑、Matérn 1/2 很粗糙”——這話能不能量化?能,而且只要一行計算。

對零平均值平穩 GP,

Ef(t+h)f(t)2=2[k(0)k(h)](7)E\big|f(t+h)-f(t)\big|^2 =2\big[k(0)-k(h)\big] \tag{7}

(展開 E[f(t+h)2]2E[f(t+h)f(t)]+E[f(t)2]E[f(t+h)^2]-2E[f(t+h)f(t)]+E[f(t)^2] 即得。)

所以樣本的粗糙度完全由核在原點附近的行為決定。把各個核在 h0h\to0 時展開:

  • SE:k(h)=1h222+O(h4)k(h)=1-\frac{h^2}{2\ell^2}+O(h^4),故 (7) h2\sim h^2
  • Matérn 3/2:k(h)=13h222+O(h3)k(h)=1-\frac{3h^2}{2\ell^2}+O(|h|^3),故 (7) h2\sim h^2
  • Matérn 1/2:k(h)=1h+O(h2)k(h)=1-\frac{|h|}{\ell}+O(h^2),故 (7) h\sim |h|
  • 布朗運動:EBt+hBt2=hE|B_{t+h}-B_t|^2=h

指數為 22 意味著均方意義下可微一次;指數為 11 意味著處處不可微。但 SE 和 Matérn 3/2 在一階差分上無法區分——它們的差別要看二階差分 Ef(t+h)2f(t)+f(th)2=6k(0)8k(h)+2k(2h)E|f(t+h)-2f(t)+f(t-h)|^2=6k(0)-8k(h)+2k(2h)

粗糙度的冪次

數值驗證與理論完全吻合:

一階差分斜率二階差分斜率均方可微次數
SE24\infty
Matérn 3/2231
Matérn 1/2110
Brownian110

一般規律:Matérn-ν\nu 的樣本均方可微 ν1\lceil\nu\rceil-1 次,ν\nu\to\infty 時退化為 SE。

這直接影響建模決策。 SE 假設函數無窮次可微——這是極強的假設,現實資料幾乎沒有這麼聽話。Matérn 3/2 或 5/2 通常是更誠實的預設選擇,Rasmussen 與 Williams 在書裡也是這麼建議的。

3.3 lengthscale:多遠算近

lengthscale 的影響

\ell 定義相關性的衰減尺度。\ell 小則只有極近的點相關,曲線擺動快;\ell 大則遠處也相關,曲線平緩。σf2\sigma_f^2 單獨控制縱向振幅。

一個有用的經驗:SE 核的樣本在長度 LL 的區間上大約有 L/(2π)L/(2\pi\ell) 個”零點級別”的起伏。所以 \ell 應當和你認為的函數變化尺度同量級。

3.4 常見核與它們的樣子

| 名稱 | 表示式(r=str=|s-t|) | 特點 | |---|---|---| | Squared Exponential | σf2exp(r2/22)\sigma_f^2\exp(-r^2/2\ell^2) | 無窮次可微,最光滑 | | Matérn 3/2 | σf2(1+3r)e3r/\sigma_f^2(1+\tfrac{\sqrt3 r}{\ell})e^{-\sqrt3 r/\ell} | 一次可微 | | Matérn 1/2 (OU) | σf2er/\sigma_f^2 e^{-r/\ell} | 連續但處處不可微,馬爾可夫 | | Periodic | σf2exp(2sin2(πr/p)/2)\sigma_f^2\exp(-2\sin^2(\pi r/p)/\ell^2) | 嚴格週期 pp | | Brownian | min(s,t)\min(s,t) | 非平穩,變異數隨 tt 增長 |

各種核及其樣本

上排是共變異數矩陣熱圖,下排是對應先驗樣本。對應關係很直白:亮帶越寬 \Rightarrow 遠處仍相關 \Rightarrow 曲線越光滑。Periodic 出現平行條紋是因為相隔一個週期的點強相關。Brownian 的熱圖不是帶狀而是”角狀”——min(s,t)\min(s,t) 只依賴較小的那個座標,這是非平穩性的直接視覺化

3.5 核可以搭積木

正定性在加法和乘法下保持(和是顯然的;積用 Schur 乘積定理),所以:

  • k1+k2k_1+k_2:結構疊加
  • k1×k2k_1\times k_2:結構同時滿足
  • k(g(x),g(x))k(g(x),g(x')):先對輸入做變換

核的組合

四張圖用的是同一組隨機數,只換了共變異數矩陣。趨勢項、季節項、短期波動各自取樣,相加後得到最後那條既有趨勢又有周期還有毛刺的曲線。

注意 kper×kSEk_{per}\times k_{SE} 的效果:週期性不再是永遠精確重複,而是會緩慢漂移。這在建模真實季節資料時比純 periodic 有用得多。經典例子是 Mauna Loa 的 CO₂ 序列,用「長期 SE + 年週期 × SE + 中期 Rational Quadratic + 噪聲」的和式能把各個成分分解得很乾淨。


4. GP 迴歸

4.1 推導

設訓練輸入 X={xi}i=1nX=\{x_i\}_{i=1}^n,觀測帶獨立高斯噪聲:

yi=f(xi)+εi,εiN(0,σn2)y_i=f(x_i)+\varepsilon_i,\qquad \varepsilon_i\sim N(0,\sigma_n^2)

先驗 fGP(0,k)f\sim\mathcal{GP}(0,k)。要預測測試點 XX_* 上的 f\mathbf{f}_*

關鍵一步:把訓練輸出和測試函數值寫成一個聯合高斯。 由於 y=f+ε\mathbf{y}=\mathbf{f}+\boldsymbol\varepsilon 且噪聲獨立,

(yf)N ⁣(0,  (K+σn2IKKK))\begin{pmatrix}\mathbf{y}\\ \mathbf{f}_*\end{pmatrix} \sim N\!\left(\mathbf 0,\; \begin{pmatrix} K+\sigma_n^2 I & K_*\\ K_*^\top & K_{**} \end{pmatrix}\right)

其中 K=K(X,X)K=K(X,X)K=K(X,X)K_*=K(X,X_*)K=K(X,X)K_{**}=K(X_*,X_*)

第二步:這就是 (3) 的形式,直接代。

fˉ=K(K+σn2I)1ycov(f)=KK(K+σn2I)1K(8)\begin{aligned} \bar{\mathbf{f}}_* &= K_*^\top\big(K+\sigma_n^2I\big)^{-1}\mathbf{y}\\ \operatorname{cov}(\mathbf{f}_*) &= K_{**}-K_*^\top\big(K+\sigma_n^2I\big)^{-1}K_* \end{aligned} \tag{8}

沒有別的了。 所謂”訓練”就是解一個 n×nn\times n 線性方程組:沒有梯度下降,沒有迭代,沒有局部極小。

4.2 一個能手算的例子

具體化:k(x,x)=exp((xx)22)k(x,x')=\exp(-\frac{(x-x')^2}{2})σn2=0.1\sigma_n^2=0.1,兩個觀測點

x1=1, y1=0.5,x2=1, y2=0.3x_1=-1,\ y_1=0.5,\qquad x_2=1,\ y_2=-0.3

預測 x=0x_*=0

第一步,寫出各個矩陣。 k(1,1)=e2=0.1353k(-1,1)=e^{-2}=0.1353,所以

K+σn2I=(1.10.13530.13531.1),k=(e0.5e0.5)=(0.60650.6065)K+\sigma_n^2I=\begin{pmatrix}1.1 & 0.1353\\ 0.1353 & 1.1\end{pmatrix}, \qquad \mathbf{k}_*=\begin{pmatrix}e^{-0.5}\\ e^{-0.5}\end{pmatrix} =\begin{pmatrix}0.6065\\ 0.6065\end{pmatrix}

第二步,解 α=(K+σn2I)1y\boldsymbol\alpha=(K+\sigma_n^2I)^{-1}\mathbf{y} 行列式為 1.210.0183=1.19171.21-0.0183=1.1917,得

α=(0.49560.3337)\boldsymbol\alpha=\begin{pmatrix}0.4956\\ -0.3337\end{pmatrix}

第三步,代入 (8)。

fˉ=kα=0.6065×(0.49560.3337)=0.0982\bar f_*=\mathbf{k}_*^\top\boldsymbol\alpha=0.6065\times(0.4956-0.3337)=\mathbf{0.0982} Var(f)=1k(K+σn2I)1k=10.5956=0.4044(標準差0.636)\operatorname{Var}(f_*)=1-\mathbf{k}_*^\top(K+\sigma_n^2I)^{-1}\mathbf{k}_* =1-0.5956=\mathbf{0.4044} \quad(\text{標準差}0.636)

值得停下來看幾眼:

  • 後驗平均值 0.0980.098 落在 0.50.50.3-0.3 之間,但並不是簡單平均 0.10.1。因為兩個觀測點各距 xx_* 有 1 個 lengthscale,且彼此還有微弱的正相關,權重被重新分配了。
  • 後驗變異數 0.4040.404 比先驗變異數 11 小,但遠沒有降到 00——兩個點都不在 xx_* 上,e0.5=0.61e^{-0.5}=0.61 的相關性只夠消掉六成變異數。
  • 注意 0.40440.4044 的計算裡完全沒用到 y\mathbf{y},印證了 1.4(d)。

4.3 讀法一:後驗平均值是核函數的加權和

把 (8) 展開成分量形式:

fˉ(x)=i=1nαik(x,xi),α=(K+σn2I)1y(9)\bar f(x_*)=\sum_{i=1}^n \alpha_i\,k(x_*,x_i), \qquad \boldsymbol\alpha=(K+\sigma_n^2I)^{-1}\mathbf{y} \tag{9}

後驗平均值永遠是以資料點為中心的核函數的線性組合。 無論先驗多複雜,最後落到的函數空間只有 nn 維(representer 定理的高斯版本)。

後驗平均值的分解

虛線是各個 αik(x,xi)\alpha_i k(x,x_i),實線是它們的和。這也解釋了 2.3 節末尾那句話:先驗平均值 m0m\equiv0 並不會限制表達力,因為後驗平均值是由核和資料現場生成的。

順帶一提,(9) 和核嶺迴歸的解完全一致,令 λ=σn2\lambda=\sigma_n^2 即可。所以:GP 迴歸 = 核嶺迴歸 + 一個免費的誤差棒。區別在於 GP 給出的 σn2\sigma_n^2 有機率解釋,而且可以通過邊際似然自動定。

4.4 讀法二:它是一個線性平滑器

換個括號位置:

fˉ(x)=k(K+σn2I)1w(x)y=iwi(x)yi\bar f(x_*)=\underbrace{\mathbf{k}_*^\top(K+\sigma_n^2I)^{-1}}_{\mathbf{w}(x_*)^\top}\mathbf{y} =\sum_i w_i(x_*)\,y_i

預測是觀測值的加權平均,且權重 w(x)\mathbf{w}(x_*) 只依賴輸入位置。這把 GP 放進了和核迴歸、樣條、局部多項式同一個家族(linear smoother)。

有意思的是這些權重可以是負的,而且不侷限於近鄰——這正是 GP 能自動做外推和去噪的原因,也是它可能”過度自信”的原因。有效自由度可以定義為 tr(K(K+σn2I)1)\operatorname{tr}\big(K(K+\sigma_n^2I)^{-1}\big),介於 00nn 之間,隨 σn2\sigma_n^2 增大而減小。

4.5 效果

GP 迴歸

從左到右觀測點遞增:

  • 0 個:後驗就是先驗,平均值恆零,不確定性在區間上均勻展開
  • 1 個:曲線被”釘”在觀測點附近,變異數驟降,遠處迅速回到先驗寬度
  • 3 個:點之間被合理插值,但仍有明顯的”腰”
  • 8 個:後驗帶收緊貼合真值,而外推區域(兩端)不確定性重新張開

最後這一點是 GP 最值得稱道的地方:它會誠實地承認自己在資料之外不知道。絕大多數點估計模型做不到。

注意噪聲項讓後驗平均值不必嚴格穿過每個觀測點。σn20\sigma_n^2\to0 時退化為嚴格插值,σn2\sigma_n^2 大則強烈平滑。

4.6 實現時真正會踩的坑

永遠不要顯式求逆。 標準做法是 Cholesky 分解 A=K+σn2I=LLA=K+\sigma_n^2I=LL^\top

L = cholesky(K + σn² I)          # n³/6 次运算,比求逆快一倍
α = L⁻ᵀ (L⁻¹ y)                  # 两次三角回代
mean = k*ᵀ α
v = L⁻¹ k*
var = k** − vᵀv                  # 保证非负
log|A| = 2 Σ log Lᵢᵢ             # 边际似然要用,且数值稳定

求逆不僅慢一倍,還會放大誤差;而 k** - vᵀv 的形式天然保證變異數非負。

病態是常態。 SE 核的譜衰減極快,KK 的條件數隨 \ell 迅速爆炸。同樣 12 個點:

\ellcond(K)\operatorname{cond}(K)
0.52.0×1052.0\times10^{5}
13.9×10113.9\times10^{11}
25.2×10175.2\times10^{17}
46.7×10176.7\times10^{17}

雙精度只有約 101610^{16} 的動態範圍,所以 =2\ell=2KK 在數值上已經是奇異的。標準補救是加 jitter:K+ϵIK+\epsilon Iϵ106σf2\epsilon\sim10^{-6}\sigma_f^2。在有噪聲的迴歸裡 σn2\sigma_n^2 本身就充當了 jitter,這也是無噪聲 GP 插值反而更難做的原因。


5. 超參數:邊際似然與 Occam’s razor

,σf,σn\ell,\sigma_f,\sigma_n 不是細枝末節:

超參數的影響

同樣的資料、同樣的公式 (8),超參數不同結果天差地別。

5.1 邊際似然

標準做法是最大化邊際似然(也叫 evidence)——注意它是把 ff 積掉之後關於超參數的似然:

logp(yX,θ)=12yA1y資料擬合12logA複雜度懲罰n2log2π,A=Kθ+σn2I(10)\log p(\mathbf{y}\mid X,\boldsymbol\theta)= \underbrace{-\tfrac12\mathbf{y}^\top A^{-1}\mathbf{y}}_{\text{資料擬合}} \underbrace{-\tfrac12\log|A|}_{\text{複雜度懲罰}} -\tfrac n2\log2\pi, \qquad A=K_\theta+\sigma_n^2I \tag{10}

常見的說法是”兩項自動權衡,實現 Occam’s razor”。這話對,但值得真看一眼:

邊際似然的分解

複雜度項 12logA-\frac12\log|A| 單調上升\ell 越大模型越僵硬,A|A| 越小,懲罰越輕。擬合項則在 \ell 超過約 1 之後急劇崩塌,因為模型已經僵硬到解釋不了資料的起伏。兩者相加在 1.40\ell\approx1.40 處取到極大。

圖裡還有一個細節值得注意,它和教科書的理想化敘述略有出入:擬合項在 \ell 很小時並沒有趨近 0,而是平在約 13-13 原因是有噪聲。當 0\ell\to0Kσf2IK\to\sigma_f^2I,於是

12yA1yy22(σf2+σn2)-\tfrac12\mathbf{y}^\top A^{-1}\mathbf{y}\to-\frac{\|\mathbf{y}\|^2}{2(\sigma_f^2+\sigma_n^2)}

一個與 \ell 無關的常數。也就是說,短 lengthscale 的模型並不是”完美擬合”,而是把所有結構都當成了噪聲——它的似然不高,只是不再隨 \ell 變化。真正阻止 \ell 變小的是複雜度項。

5.2 需要留心的地方

(10) 一般非凸,會有多個局部極優(典型情形是”長 \ell + 小噪聲”和”短 \ell + 大噪聲”兩個解並存,對應把同一批起伏解釋成訊號還是噪聲)。實踐中通常多次隨機重啟後取最優。

資料量小時邊際似然本身變異數也大,此時它不比交叉驗證更可靠。它的優勢在於不用劃驗證集、而且對超參數可導,因此可以直接用 L-BFGS 最佳化。


6. 布朗運動與布朗橋:條件化公式的一次實戰

布朗運動 {Bt}t0\{B_t\}_{t\ge0} 滿足 E[Bt]=0E[B_t]=0 且任意有限維分佈聯合高斯,所以它是一個 GP。共變異數可以兩行推出來:設 s<ts<t,由獨立增量,

Cov(Bs,Bt)=Cov(Bs, Bs+(BtBs))=Var(Bs)+0=s=min(s,t)\operatorname{Cov}(B_s,B_t)=\operatorname{Cov}\big(B_s,\ B_s+(B_t-B_s)\big) =\operatorname{Var}(B_s)+0=s=\min(s,t)

現在做一件更有意思的事:把終點固定住,即在 B1=0B_1=0 的條件下看整個過程。這就是布朗橋,而我們不需要任何新工具,直接用 (3)。

x1=(Bs,Bt)\mathbf{x}_1=(B_s,B_t)x2=B1\mathbf{x}_2=B_1。則 Σ12=(Cov(Bs,B1),Cov(Bt,B1))=(s,t)\Sigma_{12}=(\operatorname{Cov}(B_s,B_1),\operatorname{Cov}(B_t,B_1))^\top=(s,t)^\topΣ22=1\Sigma_{22}=1。代入:

E[BsB1=0]=0+s11(00)=0E[B_s\mid B_1=0]=0+s\cdot 1^{-1}\cdot(0-0)=0 Cov(Bs,BtB1=0)=min(s,t)s11t=min(s,t)st\operatorname{Cov}(B_s,B_t\mid B_1=0)=\min(s,t)-s\cdot1^{-1}\cdot t=\min(s,t)-st

於是布朗橋是 GP(0, min(s,t)st)\mathcal{GP}(0,\ \min(s,t)-st),其變異數 tt2=t(1t)t-t^2=t(1-t)t=1/2t=1/2 處最大,等於 1/41/4

布朗運動與布朗橋

右圖的樣本正好在中點最寬、兩端收縮到零,與 t(1t)t(1-t) 吻合。

兩個引申:

  1. GP 不是機器學習發明的。 它是經典隨機過程論的基礎物件;布朗運動、Ornstein–Uhlenbeck 過程、布朗橋都是 GP,而且它們之間的關係(條件化、時間變換)在 GP 語言下都變成了矩陣操作。
  2. 不是所有 GP 都平穩。 min(s,t)\min(s,t) 寫不成 st|s-t| 的函數,變異數 Var(Bt)=t\operatorname{Var}(B_t)=t 隨時間增長。ML 裡常用的核大多平穩,但這只是習慣,不是定義。

7. 平穩性與譜

k(s,t)=k(st)k(s,t)=k(s-t),則該 GP 寬平穩;若只依賴 st|s-t|,進一步各向同性

對高斯過程,寬平穩自動蘊含嚴平穩——因為分佈完全由一、二階矩決定,二階矩平移不變就等於分佈平移不變。這個等價在一般過程裡並不成立,是 GP 的又一項特權。

更深一層是 Bochner 定理:連續函數 kk 是平穩正定核,當且僅當它是某個有限正測度的 Fourier 變換,

k(τ)=eiωτdS(ω)k(\tau)=\int e^{i\omega\tau}\,dS(\omega)

SS 就是過程的譜密度。於是”選核”等價於”選功率譜”,而 3.2 節的光滑度結論在譜域裡有更漂亮的說法:

  • SE 的譜是高斯型,高頻衰減快於任何多項式 \Rightarrow 各階矩都有限 \Rightarrow 無窮次均方可微
  • Matérn-ν\nu 的譜按 (1+ω2)(ν+1/2)(1+\omega^2)^{-(\nu+1/2)} 衰減,只有前 ν1\lceil\nu\rceil-1 階矩有限 \Rightarrow 可微次數受限
  • 想建模某個特定頻率,直接在譜上放一個峰即可——這就是 Spectral Mixture 核的思路,理論上可以逼近任意平穩核

Bochner 定理還給了 3.1 節那個反例一個解釋:exp(rp)\exp(-|r|^p)p>2p>2 時的 Fourier 變換會取到負值,不是正測度,因此不是合法核。


8. 代價與失敗模式

誠實地說清楚 GP 什麼時候不該用:

計算。 (K+σn2I)1(K+\sigma_n^2I)^{-1} 需要 O(n3)O(n^3) 時間、O(n2)O(n^2) 儲存。nn 到幾萬就吃力。緩解手段包括 inducing points 稀疏近似(FITC / SVGP)、結構化核的 Kronecker 分解、隨機特徵(RFF)、KISS-GP 插值。每一種都在拿精度換速度。

維數。 SE 這類各向同性核在高維輸入下退化得很快:高維空間裡點對距離高度集中,k(x,x)k(x,x') 對所有點對趨於同一個值,核矩陣接近常數矩陣,模型學不到東西。ARD(每維一個 lengthscale)能緩解但不能根治。輸入維度上到幾十就要認真考慮降維或改用結構化先驗。

模型誤設。 後驗變異數衡量的是模型自認為的不確定性,不是真實預測誤差。核選錯時,GP 完全可能給出又窄又離譜的置信帶。資料越多,錯誤的後驗只會越自信。

噪聲假設。 (8) 依賴於噪聲是獨立同分布高斯。異變異數、重尾、相關噪聲都會破壞閉式解,需要額外建模(比如把 σn2\sigma_n^2 也建成一個 GP)或改用近似推斷。


9. 小結

回到開頭那個論點,現在它應該更具體了:

  1. 多元高斯對邊緣化封閉 \Rightarrow 有限維分佈天然相容 \Rightarrow 由 Kolmogorov 定理,無窮維極限確實存在。這是 GP 合法性的全部來源。
  2. 多元高斯對條件化封閉,且條件分佈由公式 (3) 給出。這是 GP 預測能力的全部來源。
  3. 核不是規定的,是推匯出來的:任何基函數展開 f=ϕwf=\boldsymbol\phi^\top\mathbf{w} 都誘導一個核 ϕΣpϕ\boldsymbol\phi^\top\Sigma_p\boldsymbol\phi;無窮多個 RBF 基的極限恰好是 SE 核。所謂非參數,是”參數無窮多且已被積掉”。
  4. 核的性質可以驗證:正定效能用特徵值查,光滑度是 2[k(0)k(h)]2[k(0)-k(h)] 的冪次,兩者都不是形容詞。
  5. GP 迴歸就是把 (3) 套在大矩陣上,順帶白送一個不確定性估計;它同時是核嶺迴歸,也是一個線性平滑器。
  6. 邊際似然的兩項確實在對拉,但拉的方式和教科書插圖不完全一樣,值得自己畫一次。

GP 的價值不在複雜,恰恰在於它把隨機過程的聯合結構推到了一個極乾淨的形式:一個平均值函數加一個共變異數函數,就完整描述了整個過程,而所有推斷都退化成線性代數。

幾個常被搞錯的點

  • “非參數所以沒有假設”:恰恰相反,核是極強的假設,只是它作用在函數空間而非參數空間。
  • “後驗變異數就是預測誤差”:它是模型自認為的不確定性;模型錯了它也會錯,而且是自信地錯。
  • “GP 一定平穩、一定光滑”:取決於核。min(s,t)\min(s,t) 不平穩,Matérn 1/2 處處不可微。
  • m(t)=0m(t)=0 是很強的限制”:不是。由 (9),後驗平均值是核函數的加權和,先驗平均值為零基本不影響表達力。
  • “資料越多越好”O(n3)O(n^3) 先到;而且模型設定錯誤時,更多資料只會讓錯誤的後驗更窄。

延伸閱讀

  • Rasmussen & Williams, Gaussian Processes for Machine Learning —— 領域標準教材,可免費獲取,第 2、4、5 章基本覆蓋本文全部內容
  • David Duvenaud, The Kernel Cookbook —— 核的選擇與組合,本文 3.5 節的完整版
  • Distill, A Visual Exploration of Gaussian Processes —— 互動式視覺化,適合配合第 1、2 節看