了解高斯過程 (GP) 對(duì)于推理模型構(gòu)建和泛化以及在各種應(yīng)用中實(shí)現(xiàn)最先進(jìn)的性能非常重要,包括主動(dòng)學(xué)習(xí)和深度學(xué)習(xí)中的超參數(shù)調(diào)整。全科醫(yī)生無處不在,了解它們是什么以及我們?nèi)绾问褂盟鼈兎衔覀兊睦妗?/p>
在本節(jié)中,我們介紹高斯過程先驗(yàn)函數(shù)。在下一個(gè)筆記本中,我們將展示如何使用這些先驗(yàn)進(jìn)行后驗(yàn)推理和做出預(yù)測(cè)。下一節(jié)可以被視為“GPs in a nutshell”,快速給出在實(shí)踐中應(yīng)用高斯過程所需的內(nèi)容。
import numpy as np from scipy.spatial import distance_matrix from d2l import torch as d2l d2l.set_figsize()
18.2.1。定義
高斯過程被定義為隨機(jī)變量的集合,其中任何有限數(shù)量的隨機(jī)變量都服從聯(lián)合高斯分布。如果一個(gè)函數(shù)f(x)是一個(gè)高斯過程,具有均值函數(shù) m(x)和協(xié)方差函數(shù)或內(nèi)核 k(x,x′), f(x)~GP(m,k),然后在任何輸入點(diǎn)集合處查詢的任何函數(shù)值集合x(時(shí)間、空間位置、圖像像素等),具有均值向量的聯(lián)合多元高斯分布μ和協(xié)方差矩陣 K:f(x1),…,f(xn)~N(μ,K), 在哪里 μi=E[f(xi)]=m(xi)和 Kij=Cov(f(xi),f(xj))=k(xi,xj).
這個(gè)定義看似抽象且難以理解,但高斯過程實(shí)際上是非常簡單的對(duì)象。任何功能
(18.2.1)f(x)=w??(x)=?w,?(x)?,
和w從高斯(正態(tài))分布中得出,和 ?是基函數(shù)的任何向量,例如 ?(x)=(1,x,x2,...,xd)?, 是一個(gè)高斯過程。此外,任何高斯過程f(x)都可以表示為方程(18.2.1)的形式。讓我們考慮一些具體的例子,開始熟悉高斯過程,然后我們才能體會(huì)到它們是多么簡單和有用。
18.2.2。一個(gè)簡單的高斯過程
認(rèn)為f(x)=w0+w1x, 和 w0,w1~N(0,1), 和w0,w1,x都在一個(gè)維度上。我們可以把這個(gè)函數(shù)等價(jià)地寫成內(nèi)積f(x)=(w0,w1)(1,x)?. 在 上面的(18.2.1)中,w=(w0,w1)?和 ?(x)=(1,x)?.
對(duì)于任何x,f(x)是兩個(gè)高斯隨機(jī)變量的總和。由于高斯在加法下是封閉的,f(x)也是任意的高斯隨機(jī)變量x. 事實(shí)上,我們可以計(jì)算任何特定的x那f(x)是 N(0,1+x2). 類似地,任何函數(shù)值集合的聯(lián)合分布,(f(x1),…,f(xn)), 對(duì)于任何輸入集合x1,…,xn, 是多元高斯分布。所以f(x)是一個(gè)高斯過程。
簡而言之,f(x)是隨機(jī)函數(shù),或函數(shù)分布。我們可以通過重復(fù)采樣值來深入了解這種分布w0,w1, 并可視化相應(yīng)的函數(shù)f(x),它們是具有斜率和不同截距的直線,如下所示:
def lin_func(x, n_sample): preds = np.zeros((n_sample, x.shape[0])) for ii in range(n_sample): w = np.random.normal(0, 1, 2) y = w[0] + w[1] * x preds[ii, :] = y return preds x_points = np.linspace(-5, 5, 50) outs = lin_func(x_points, 10) lw_bd = -2 * np.sqrt((1 + x_points ** 2)) up_bd = 2 * np.sqrt((1 + x_points ** 2)) d2l.plt.fill_between(x_points, lw_bd, up_bd, alpha=0.25) d2l.plt.plot(x_points, np.zeros(len(x_points)), linewidth=4, color='black') d2l.plt.plot(x_points, outs.T) d2l.plt.xlabel("x", fontsize=20) d2l.plt.ylabel("f(x)", fontsize=20) d2l.plt.show()
如果w0和w1取而代之的是 N(0,α2),你如何想象變化 α影響函數(shù)的分布?
18.2.3。從權(quán)重空間到函數(shù)空間
在上圖中,我們看到了模型中參數(shù)的分布如何導(dǎo)致函數(shù)的分布。雖然我們經(jīng)常對(duì)我們想要建模的函數(shù)有想法——無論它們是平滑的、周期性的、快速變化的,等等——但對(duì)參數(shù)進(jìn)行推理是相對(duì)乏味的,這些參數(shù)在很大程度上是不可解釋的。幸運(yùn)的是,高斯過程提供了一種簡單的機(jī)制來直接推理函數(shù)。由于高斯分布完全由其前兩個(gè)矩、其均值和協(xié)方差矩陣定義,因此擴(kuò)展的高斯過程由其均值函數(shù)和協(xié)方差函數(shù)定義。
在上面的例子中,均值函數(shù)
(18.2.2)m(x)=E[f(x)]=E[w0+w1x]=E[w0]+E[w1]x=0+0=0.
同樣,協(xié)方差函數(shù)是
(18.2.3)k(x,x′)=Cov(f(x),f(x′))=E[f(x)f(x′)]?E[f(x)]E[f(x′)]=E[w02+w0w1x′+w1w0x+w12xx′]=1+xx′.
我們的函數(shù)分布現(xiàn)在可以直接指定和采樣,而不需要從參數(shù)分布中采樣。例如,從f(x),我們可以簡單地形成與任何集合相關(guān)聯(lián)的多元高斯分布 x我們想查詢,并直接從中采樣。我們將開始看到這個(gè)公式的優(yōu)勢(shì)。
首先,我們注意到上面簡單直線模型的基本相同的推導(dǎo)可以應(yīng)用于找到任何形式的模型的均值和協(xié)方差函數(shù)f(x)=w??(x), 和w~N(u,S). 在這種情況下,均值函數(shù) m(x)=u??(x)和協(xié)方差函數(shù) k(x,x′)=?(x)?S?(x′). 自從?(x)可以表示任何非線性基函數(shù)的向量,我們正在考慮一個(gè)非常通用的模型類,包括具有甚至無限 數(shù)量參數(shù)的模型。
18.2.4。徑向基函數(shù) (RBF) 內(nèi)核
徑向基函數(shù)(RBF) 核是高斯過程和一般核機(jī)最流行的協(xié)方差函數(shù)。該內(nèi)核具有以下形式 kRBF(x,x′)=a2exp?(?12?2||x?x′||2), 在哪里a是幅度參數(shù),并且?是 長度尺度超參數(shù)。
讓我們從權(quán)重空間開始推導(dǎo)這個(gè)內(nèi)核。考慮函數(shù)
(18.2.4)f(x)=∑i=1Jwi?i(x),wi~N(0,σ2J),?i(x)=exp?(?(x?ci)22?2).
f(x)是徑向基函數(shù)的總和,寬度為 ?, 以點(diǎn)為中心ci,如下圖所示。
我們可以認(rèn)出f(x)作為具有形式 w??(x), 在哪里w=(w1,…,wJ)?和 ?(x)是包含每個(gè)徑向基函數(shù)的向量。這個(gè)高斯過程的協(xié)方差函數(shù)是
(18.2.5)k(x,x′)=σ2J∑i=1J?i(x)?i(x′).
現(xiàn)在讓我們考慮當(dāng)我們將參數(shù)(和基函數(shù))的數(shù)量取為無窮大時(shí)會(huì)發(fā)生什么。讓cJ=log?J, c1=?log?J, 和 ci+1?ci=Δc=2log?JJ, 和 J→∞. 協(xié)方差函數(shù)變?yōu)槔杪停?/p>
(18.2.6)k(x,x′)=limJ→∞σ2J∑i=1J?i(x)?i(x′)=∫c0c∞?c(x)?c(x′)dc.
通過設(shè)置c0=?∞和c∞=∞,我們將無限多的基函數(shù)分布在整條實(shí)線上,每一個(gè)距離Δc→0分開:
(18.2.7)k(x,x′)=∫?∞∞exp?(?(x?c)22?2)exp?(?(x′?c)22?2)dc=π?σ2exp?(?(x?x′)22(2?)2)∝kRBF(x,x′).
值得花點(diǎn)時(shí)間來吸收我們?cè)谶@里所做的一切。通過進(jìn)入函數(shù)空間表示,我們推導(dǎo)出了如何使用有限的計(jì)算量來表示具有無限數(shù)量參數(shù)的模型。具有 RBF 核的高斯過程是一個(gè)通用逼近器,能夠以任意精度表示任何連續(xù)函數(shù)。從上面的推導(dǎo)我們可以直觀的看出為什么。我們可以將每個(gè)徑向基函數(shù)折疊成一個(gè)點(diǎn)質(zhì)量?→0, 并給每個(gè)點(diǎn)質(zhì)量我們想要的任何高度。
因此,具有 RBF 核的高斯過程是一個(gè)具有無限數(shù)量參數(shù)且比任何有限神經(jīng)網(wǎng)絡(luò)都更加靈活的模型。也許所有關(guān)于過度參數(shù)化神經(jīng)網(wǎng)絡(luò)的大驚小怪都是錯(cuò)誤的。正如我們將看到的,具有 RBF 內(nèi)核的 GP 不會(huì)過度擬合,并且實(shí)際上在小型數(shù)據(jù)集上提供了特別引人注目的泛化性能。此外, ( Zhang et al. , 2021 )中的示例 ,例如能夠完美地?cái)M合具有隨機(jī)標(biāo)簽的圖像,但仍然可以很好地概括結(jié)構(gòu)化問題,(可以使用高斯過程完美地再現(xiàn)) (Wilson 和 Izmailov,2020 年) . 神經(jīng)網(wǎng)絡(luò)并不像我們想象的那么獨(dú)特。
我們可以通過直接從函數(shù)分布中采樣,使用 RBF 內(nèi)核和超參數(shù)(例如length-scale )進(jìn)一步了解高斯過程。和以前一樣,這涉及一個(gè)簡單的過程:
選擇輸入x我們要查詢GP的點(diǎn)數(shù): x1,…,xn.
評(píng)價(jià)m(xi),i=1,…,n, 和 k(xi,xj)為了i,j=1,…,n分別構(gòu)成均值向量和協(xié)方差矩陣μ和K, 在哪里(f(x1),…,f(xn))~N(μ,K).
從此多元高斯分布中采樣以獲得樣本函數(shù)值。
采樣更多次以可視化在這些點(diǎn)查詢的更多示例函數(shù)。
我們?cè)谙聢D中說明了這個(gè)過程。
def rbfkernel(x1, x2, ls=4.): #@save dist = distance_matrix(np.expand_dims(x1, 1), np.expand_dims(x2, 1)) return np.exp(-(1. / ls / 2) * (dist ** 2)) x_points = np.linspace(0, 5, 50) meanvec = np.zeros(len(x_points)) covmat = rbfkernel(x_points,x_points, 1) prior_samples= np.random.multivariate_normal(meanvec, covmat, size=5); d2l.plt.plot(x_points, prior_samples.T, alpha=0.5) d2l.plt.show()
18.2.5。神經(jīng)網(wǎng)絡(luò)內(nèi)核
機(jī)器學(xué)習(xí)中高斯過程的研究是由神經(jīng)網(wǎng)絡(luò)研究引發(fā)的。Radford Neal 一直在追求更大的貝葉斯神經(jīng)網(wǎng)絡(luò),最終在 1994 年(后來于 1996 年發(fā)表,因?yàn)樗亲畛裘阎?NeurIPS 拒絕之一)表明這種具有無限數(shù)量隱藏單元的網(wǎng)絡(luò)成為具有特定核函數(shù)的高斯過程(Neal , 1996 ) . 對(duì)這種推導(dǎo)的興趣重新浮出水面,像神經(jīng)正切核這樣的想法被用來研究神經(jīng)網(wǎng)絡(luò)的泛化特性(Matthews等人,2018 年) (Novak等人,2018 年). 我們可以按如下方式推導(dǎo)出神經(jīng)網(wǎng)絡(luò)內(nèi)核。
考慮一個(gè)神經(jīng)網(wǎng)絡(luò)函數(shù)f(x)有一個(gè)隱藏層:
(18.2.8)f(x)=b+∑i=1Jvih(x;ui).
b是一種偏見,vi是隱藏輸出權(quán)重, h是任何有界隱藏單元傳遞函數(shù),ui是隱藏權(quán)重的輸入,并且J是隱藏單元的數(shù)量。讓b和vi獨(dú)立于零均值和方差σb2和σv2/J,分別讓ui有獨(dú)立的同分布。然后我們可以使用中心極限定理來證明任何函數(shù)值的集合f(x1),…,f(xn)具有聯(lián)合多元高斯分布。
對(duì)應(yīng)的高斯過程的均值和協(xié)方差函數(shù)為:
(18.2.9)m(x)=E[f(x)]=0
(18.2.10)k(x,x′)=cov[f(x),f(x′)]=E[f(x)f(x′)]=σb2+1J∑i=1Jσv2E[hi(x;ui)hi(x′;ui)]
在某些情況下,我們基本上可以以封閉形式評(píng)估此協(xié)方差函數(shù)。讓 h(x;u)=erf(u0+∑j=1Pujxj), 在哪里 erf(z)=2π∫0ze?t2dt, 和u~N(0,Σ). 然后 k(x,x′)=2πsin(2x~?Σx~′(1+2x~?Σx~)(1+2x~′?Σx~′)).
RBF 內(nèi)核是固定的,這意味著它是平移不變的,因此可以寫成以下的函數(shù) τ=x?x′. 直觀上,平穩(wěn)性意味著函數(shù)的高級(jí)屬性(例如變化率)不會(huì)隨著我們?cè)谳斎肟臻g中的移動(dòng)而改變。然而,神經(jīng)網(wǎng)絡(luò)內(nèi)核是非 平穩(wěn)的。下面,我們展示了來自具有此內(nèi)核的高斯過程的示例函數(shù)。我們可以看到函數(shù)在原點(diǎn)附近看起來有質(zhì)的不同。
18.2.6。概括
執(zhí)行貝葉斯推理的第一步涉及指定先驗(yàn)。高斯過程可用于指定整體先驗(yàn)函數(shù)。從傳統(tǒng)的“權(quán)重空間”建模觀點(diǎn)出發(fā),我們可以通過從模型的函數(shù)形式入手并引入其參數(shù)分布來推導(dǎo)先驗(yàn)函數(shù)。我們也可以直接在函數(shù)空間中指定先驗(yàn)分布,其屬性由內(nèi)核控制。函數(shù)空間方法有很多優(yōu)點(diǎn)。我們可以構(gòu)建實(shí)際上對(duì)應(yīng)無限數(shù)量參數(shù)的模型,但使用有限的計(jì)算量!此外,雖然這些模型具有很大的靈活性,但它們也對(duì)先驗(yàn)可能的函數(shù)類型做出了強(qiáng)有力的假設(shè),從而在小數(shù)據(jù)集上產(chǎn)生了相對(duì)較好的泛化。
函數(shù)空間中模型的假設(shè)由內(nèi)核直觀地控制,內(nèi)核通常對(duì)函數(shù)的更高級(jí)別屬性進(jìn)行編碼,例如平滑度和周期性。許多內(nèi)核是靜止的,這意味著它們是平移不變的。無論我們?cè)谳斎肟臻g的哪個(gè)位置查看,從具有固定內(nèi)核的高斯過程中提取的函數(shù)具有大致相同的高級(jí)屬性(例如變化率)。
高斯過程是一個(gè)比較通用的模型類,包含了很多我們已經(jīng)熟悉的模型例子,包括多項(xiàng)式、傅里葉級(jí)數(shù)等等,只要我們對(duì)參數(shù)有一個(gè)高斯先驗(yàn)就可以了。它們還包括具有無限數(shù)量參數(shù)的神經(jīng)網(wǎng)絡(luò),甚至在參數(shù)上沒有高斯分布。Radford Neal 發(fā)現(xiàn)的這種聯(lián)系促使機(jī)器學(xué)習(xí)研究人員從神經(jīng)網(wǎng)絡(luò)轉(zhuǎn)向高斯過程。
18.2.7。練習(xí)
從具有 Ornstein-Uhlenbeck (OU) 核的 GP 中提取樣本先驗(yàn)函數(shù), kOU(x,x′)=exp?(?12?||x?x′|). 如果你固定長度尺度?同樣,這些函數(shù)與具有 RBF 內(nèi)核的 GP 中的示例函數(shù)有何不同?
如何改變振幅 a2RBF 核影響函數(shù)的分布?
假設(shè)我們形成u(x)=f(x)+2g(x), 在哪里 f(x)~GP(m1,k1)和 g(x)~GP(m2,k2). 是u(x)一個(gè)高斯過程,如果是,它的均值和協(xié)方差函數(shù)是什么?
假設(shè)我們形成g(x)=a(x)f(x), 在哪里 f(x)~GP(0,k)和a(x)=x2. 是 g(x)一個(gè)高斯過程,如果是,它的均值和協(xié)方差函數(shù)是什么?有什么作用a(x)?樣本函數(shù)是從什么得出的g(x)看起來像?
假設(shè)我們形成u(x)=f(x)g(x), 在哪里 f(x)~GP(m1,k1)和 g(x)~GP(m2,k2). 是u(x)一個(gè)高斯過程,如果是,它的均值和協(xié)方差函數(shù)是什么?
Discussions
-
GP
+關(guān)注
關(guān)注
0文章
29瀏覽量
23500 -
pytorch
+關(guān)注
關(guān)注
2文章
808瀏覽量
13235
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論