高斯過(guò)程Gaussian Processes(GP)是一種通用的有監(jiān)督學(xué)習(xí)方法,旨在解決回歸和概率分類(lèi)問(wèn)題。
高斯過(guò)程的優(yōu)點(diǎn)是:
高斯過(guò)程的缺點(diǎn)包括:
GaussianProcessRegressor
類(lèi)實(shí)現(xiàn)了回歸情況下的高斯過(guò)程(GP)模型。 為此,需要實(shí)現(xiàn)指定GP的先驗(yàn)。當(dāng)參數(shù) normalize_y=False
時(shí),先驗(yàn)的均值通常假定為常數(shù)或者零(當(dāng) normalize_y=False
),或者訓(xùn)練數(shù)據(jù)的均值(normalize_y=True
)。而先驗(yàn)的方差通過(guò)傳遞 kernel 對(duì)象來(lái)指定。通過(guò)最大化基于傳遞的 optimizer
的對(duì)數(shù)邊際似然(LML),內(nèi)核的超參數(shù)可以在高斯過(guò)程回歸執(zhí)行擬合過(guò)程中被優(yōu)化。由于 LML 可能會(huì)存在多個(gè)局部最優(yōu)解,因此優(yōu)化過(guò)程可以通過(guò)指定 n_restarts_optimizer
參數(shù)進(jìn)行多次重復(fù)。通過(guò)設(shè)置內(nèi)核的超參初始值來(lái)進(jìn)行第一次優(yōu)化的運(yùn)行。后續(xù)的運(yùn)行過(guò)程中超參值都是從合理范圍值中隨機(jī)選取的。如果需要保持初始化超參值, 那么需要把優(yōu)化器設(shè)置為 None
。
目標(biāo)變量中的噪聲級(jí)別通過(guò)參數(shù) alpha
來(lái)傳遞并指定,要么全局是常數(shù)要么是一個(gè)數(shù)據(jù)點(diǎn)。 請(qǐng)注意,適度的噪聲水平也可以有助于處理擬合期間的數(shù)字問(wèn)題,因?yàn)樗挥行У貙?shí)現(xiàn)為吉洪諾夫正則化(Tikhonov regularization), 即通過(guò)將其添加到核心矩陣的對(duì)角線。明確指定噪聲水平的替代方法是將 WhiteKernel 組件包含在內(nèi)核中, 這可以從數(shù)據(jù)中估計(jì)全局噪聲水平(見(jiàn)下面的示例)。
算法實(shí)現(xiàn)是基于 [RW2006]中的算法 2.1 。除了標(biāo)準(zhǔn) scikit-learn 估計(jì)器的 API 之外, GaussianProcessRegressor 的作用還包括:
sample_y(X)
, 其評(píng)估在給定輸入處從 GPR (先驗(yàn)或后驗(yàn))繪制的樣本。log_marginal_likelihood(theta)
, 可以在外部使用其他方式選擇超參數(shù),例如通過(guò)馬爾科夫鏈蒙特卡羅鏈(Markov chain Monte Carlo)。該示例說(shuō)明具有包含 WhiteKernel 的和核(sum-kernel)的 GPR 可以估計(jì)數(shù)據(jù)的噪聲水平。 對(duì)數(shù)邊際似然(LML)的圖示表明存在 LML 的兩個(gè)局部最大值。
第一個(gè)模型對(duì)應(yīng)于一個(gè)高噪聲級(jí)和大長(zhǎng)度尺度的模型,它解釋了噪聲對(duì)數(shù)據(jù)的所有變化。
第二種方法噪聲水平較小,長(zhǎng)度尺度較短,主要由無(wú)噪聲函數(shù)關(guān)系解釋。第二個(gè)模型具有較高的可能性,但是,根據(jù)超參數(shù)的初始值,基于梯度的優(yōu)化也可能收斂到高噪聲的解。因此,對(duì)于不同的初始化,多次重復(fù)優(yōu)化是很重要的。
內(nèi)核嶺回歸(KRR)和GPR都是通過(guò)在內(nèi)部使用“核技巧”來(lái)學(xué)習(xí)目標(biāo)函數(shù)的。KRR在相應(yīng)核誘導(dǎo)的空間中學(xué)習(xí)一個(gè)線性函數(shù),該函數(shù)對(duì)應(yīng)于原始空間中的一個(gè)非線性函數(shù)?;趲X正則化的均方誤差的損失,選擇核空間中的線性函數(shù)。GPR利用核函數(shù)定義目標(biāo)函數(shù)上先驗(yàn)分布的協(xié)方差,并利用觀測(cè)到的訓(xùn)練數(shù)據(jù)定義似然函數(shù)。基于貝葉斯定理(Bayes theorem),定義了目標(biāo)函數(shù)上的(高斯)后驗(yàn)分布,其均值用于預(yù)測(cè)。
一個(gè)主要的區(qū)別是,GPR可以基于邊緣似然函數(shù)的梯度上升來(lái)選擇核的超參數(shù),而KRR需要對(duì)交叉驗(yàn)證的損失函數(shù)(均方誤差損失)執(zhí)行網(wǎng)格搜索。另一個(gè)不同之處在于,GPR學(xué)習(xí)目標(biāo)函數(shù)的生成概率模型,因此可以提供有意義的置信區(qū)間和后驗(yàn)樣本以及預(yù)測(cè),而KRR只提供預(yù)測(cè)。
下圖說(shuō)明了人工數(shù)據(jù)集上的兩種方法,該數(shù)據(jù)集由一個(gè)正弦目標(biāo)函數(shù)和強(qiáng)噪聲組成。該圖比較了KRR模型和基于ExpSineSquared核的GPR的模型,ExpSineSquared核適用于學(xué)習(xí)周期函數(shù) 。核的超參數(shù)控制核的光滑性(長(zhǎng)尺度)和周期性(周期性)。此外,數(shù)據(jù)的噪聲水平是由GPR通過(guò)內(nèi)核中附加的WhiteKernel成分和KRR的正則化參數(shù)α顯式地獲得的。
該圖顯示,這兩種方法都學(xué)習(xí)了目標(biāo)函數(shù)的合理模型。GPR正確地識(shí)別出函數(shù)的周期約為2?π(6.28),而KRR選擇的周期為2倍周期4?π?;诖耍珿PR為KRR的預(yù)測(cè)提供了合理的置信邊界。這兩種方法的一個(gè)主要區(qū)別是擬合和預(yù)測(cè)所需的時(shí)間:原則上, 雖然擬合KRR在是快速的,但網(wǎng)格搜索的超參數(shù)優(yōu)化規(guī)模與超參數(shù)的數(shù)量成指數(shù)關(guān)系(“維數(shù)詛咒”)?;谔荻葍?yōu)化的GPR參數(shù)不受這種指數(shù)標(biāo)度的影響,因此在這個(gè)具有三維超參數(shù)空間的例子中,速度要快得多。預(yù)測(cè)的時(shí)間是相似的,然而,GPR產(chǎn)生預(yù)測(cè)分布的方差要比僅僅預(yù)測(cè)平均值花費(fèi)的時(shí)間要長(zhǎng)得多。
此示例基于[RW2006]第5.4.3節(jié)。給出了一個(gè)基于對(duì)數(shù)邊際似然梯度上升的復(fù)雜核工程和超參數(shù)優(yōu)化的實(shí)例。這些數(shù)據(jù)包括1958年至1997年期間在夏威夷莫納洛阿觀測(cè)站收集的大氣二氧化碳平均濃度(按體積計(jì)算,以百萬(wàn)分之?dāng)?shù)(Ppmv)計(jì))。目的是模擬二氧化碳濃度隨時(shí)間t的變化。
核由幾個(gè)術(shù)語(yǔ)組成,它們負(fù)責(zé)解釋信號(hào)的不同屬性:
一個(gè)長(zhǎng)期的,平穩(wěn)的上升趨勢(shì)可以用RBF核來(lái)解釋。長(zhǎng)尺度較大的徑向基函數(shù)(RBF)內(nèi)核強(qiáng)制成平滑,沒(méi)有強(qiáng)制趨勢(shì)上升,這就留給GP選擇。長(zhǎng)度、比例尺和振幅是自由的超參數(shù)。
季節(jié)性因素,由定期的 ExpSineSquared 內(nèi)核解釋?zhuān)潭ㄖ芷跒?年。 該周期分量的長(zhǎng)度尺度控制其平滑度是一個(gè)自由參數(shù)。 為了使準(zhǔn)確周期性的衰減,采用帶有RBF內(nèi)核的產(chǎn)品。 該RBF組件的長(zhǎng)度尺寸控制衰減時(shí)間,并且是另一個(gè)自由參數(shù)。
較小的中期不規(guī)則性將由 RationalQuadratic 核來(lái)解釋?zhuān)?RationalQuadratic 內(nèi)核組件的長(zhǎng)度尺度和 alpha 參數(shù)決定長(zhǎng)度尺度的擴(kuò)散性。 根據(jù)[RW2006],這些不規(guī)則性可以更好地由 RationalQuadratic 來(lái)解釋?zhuān)?而不是 RBF 核,這可能是因?yàn)樗梢匀菁{幾個(gè)長(zhǎng)度尺度。
“noise(噪聲)” 一詞,由一個(gè) RBF 內(nèi)核貢獻(xiàn)組成,它將解釋相關(guān)的噪聲分量,如局部天氣現(xiàn)象以及 WhiteKernel 對(duì)白噪聲的貢獻(xiàn)。 相對(duì)幅度和RBF的長(zhǎng)度尺度是進(jìn)一步的自由參數(shù)。
在減去目標(biāo)平均值后最大化對(duì)數(shù)邊際似然產(chǎn)生下列內(nèi)核,其中LML為-83.214:
34.4**2 * RBF(length_scale=41.8)
+ 3.27**2 * RBF(length_scale=180) * ExpSineSquared(length_scale=1.44,
periodicity=1)
+ 0.446**2 * RationalQuadratic(alpha=17.7, length_scale=0.957)
+ 0.197**2 * RBF(length_scale=0.138) + WhiteKernel(noise_level=0.0336)
因此,大多數(shù)目標(biāo)信號(hào)(34.4ppm)由長(zhǎng)期上升趨勢(shì)(長(zhǎng)度為41.8年)解釋。 周期分量的振幅為3.27ppm,衰減時(shí)間為180年,長(zhǎng)度為1.44。 長(zhǎng)時(shí)間的衰變時(shí)間表明我們?cè)诋?dāng)?shù)胤浅=咏芷谛缘募竟?jié)性成分。 相關(guān)噪聲的幅度為0.197ppm,長(zhǎng)度為0.138年,白噪聲貢獻(xiàn)為0.197ppm。 因此,整體噪聲水平非常小,表明該模型可以很好地解釋數(shù)據(jù)。 該圖還顯示,該模型直到2015年左右才能做出置信度比較高的預(yù)測(cè)
GaussianProcessClassifier
將高斯過(guò)程(GP)用于分類(lèi),更具體地說(shuō),用于概率分類(lèi),其中測(cè)試預(yù)測(cè)采用類(lèi)概率的形式。高斯過(guò)程分類(lèi)器將GP放在一個(gè)隱函數(shù)上,然后通過(guò)一個(gè)鏈接函數(shù)來(lái)獲得概率分類(lèi)。隱函數(shù)是一種所謂的干擾函數(shù)( nuisance function),它的值是不被觀察到的,并且它們本身并不相關(guān)。其目的是為了方便地制定模型,并在預(yù)測(cè)過(guò)程中刪除(整合)。GaussianProcessClassfier實(shí)現(xiàn)了邏輯鏈函數(shù),它不能解析地計(jì)算積分,但在二進(jìn)制情況下很容易逼近。
與回歸設(shè)置相反,即使設(shè)置了高斯過(guò)程先驗(yàn),隱函數(shù)的后驗(yàn)也不符合高斯分布, 因?yàn)楦咚顾迫徊贿m用于離散類(lèi)標(biāo)簽。相反,使用的是與邏輯鏈接函數(shù)對(duì)應(yīng)的非高斯似然。 GaussianProcessClassifier 通過(guò)拉普拉斯近似(Laplace approximation)來(lái)估計(jì)非高斯后驗(yàn)分布。 更多詳細(xì)信息,請(qǐng)參見(jiàn)[RW2006]的第 3 章。
GP先驗(yàn)平均值假定為零。先驗(yàn)的協(xié)方差是通過(guò)傳遞kernel對(duì)象來(lái)指定的。 在通過(guò)最大化基于傳遞的對(duì)數(shù)邊際似然(LML)的 GaussianProcessRegressor 擬合期間, 優(yōu)化內(nèi)核的超參數(shù) optimizer
。由于LML可能具有多個(gè)局部最優(yōu)值, 所以?xún)?yōu)化器可以通過(guò)指定 n_restarts_optimizer
進(jìn)行重復(fù)。 第一次運(yùn)行始終從內(nèi)核的初始超參數(shù)值開(kāi)始執(zhí)行; 從已經(jīng)從允許值的范圍中隨機(jī)選擇超參數(shù)值來(lái)進(jìn)行后續(xù)運(yùn)行。 如果初始超參數(shù)需要保持固定,None
可以傳遞給優(yōu)化器。
GaussianProcessClassifier
通過(guò)執(zhí)行基于OvR(one-versus-rest)或 OvO(one-versus-one )策略的訓(xùn)練和預(yù)測(cè)來(lái)支持多類(lèi)分類(lèi)。 在OvR(one-versus-rest)策略中,每個(gè)類(lèi)都配有一個(gè)二分類(lèi)高斯過(guò)程分類(lèi)器,該類(lèi)別被訓(xùn)練為將該類(lèi)與其余類(lèi)分開(kāi)。 在 “one_vs_one” 中,對(duì)于每對(duì)類(lèi)擬合一個(gè)二進(jìn)制高斯過(guò)程分類(lèi)器,這被訓(xùn)練為分離這兩個(gè)類(lèi)。 這些二分類(lèi)的預(yù)測(cè)的預(yù)測(cè)被組合成多類(lèi)預(yù)測(cè)。更多詳細(xì)信息,請(qǐng)參閱multi-class classification 。
在高斯過(guò)程分類(lèi)的情況下,”one_vs_one” 策略可能在計(jì)算上更廉價(jià), 因?yàn)樗粵Q涉及整個(gè)訓(xùn)練集的一個(gè)子集的許多問(wèn)題, 而不是整個(gè)數(shù)據(jù)集的較少的問(wèn)題。由于高斯過(guò)程分類(lèi)與數(shù)據(jù)集的大小相互立方,這可能要快得多。 但是,請(qǐng)注意,”one_vs_one” 不支持預(yù)測(cè)概率估計(jì),而只是簡(jiǎn)單的預(yù)測(cè)。 此外,請(qǐng)注意, GaussianProcessClassifier
在內(nèi)部還沒(méi)有實(shí)現(xiàn)真正的多類(lèi)拉普拉斯逼近, 但如上所述,在解決內(nèi)部二分類(lèi)任務(wù)的,基于的是使用one-versus-rest 或者 one-versus-one方法。
這個(gè)例子說(shuō)明了在不同的超參數(shù)選擇下,RBF核的GPC的預(yù)測(cè)概率。第一個(gè)圖顯示了具有任意選擇的超參數(shù)和對(duì)應(yīng)于最大對(duì)數(shù)邊際似然(LML)的超參數(shù)的GPC的預(yù)測(cè)概率。
雖然通過(guò)優(yōu)化LML選擇的超參數(shù)具有相當(dāng)大的LML,但根據(jù)測(cè)試數(shù)據(jù)的日志丟失情況,它們的性能稍差。 圖中顯示,這是因?yàn)樗鼈冊(cè)陬?lèi)邊界上出現(xiàn)了類(lèi)概率的急劇變化(這是好的),但是預(yù)測(cè)的概率接近于離類(lèi)邊界近0.5(這是不好的),這種不良影響是由GPC內(nèi)部使用的拉普拉斯逼近引起的。
第二個(gè)圖顯示了內(nèi)核的超參數(shù)的不同選擇的日志邊緣可能性,突出顯示了在第一個(gè)圖形中使用黑點(diǎn)的兩個(gè)超參數(shù)選擇。
此示例說(shuō)明XOR數(shù)據(jù)上的GPC。比較了固定、各向同性核(RBF
)和非固定核(DotProduct
)。在這個(gè)特定的數(shù)據(jù)集上,DotProduct
內(nèi)核獲得了更好的結(jié)果,因?yàn)轭?lèi)邊界是線性的,并且與坐標(biāo)軸重合。然而,在實(shí)踐中,像 RBF
這樣的固定內(nèi)核往往獲得更好的結(jié)果。
該示例說(shuō)明了用于iris數(shù)據(jù)集的二維版本上各向同性和各向異性RBF核的GPC的預(yù)測(cè)概率。 這說(shuō)明了GPC對(duì)多類(lèi)分類(lèi)的適用性。 各向異性RBF內(nèi)核通過(guò)為兩個(gè)特征維度分配不同的長(zhǎng)度尺度來(lái)獲得稍高的LML(對(duì)數(shù)邊際似然)。
核(也稱(chēng)GPs中的協(xié)方差函數(shù))是GPs的一個(gè)重要組成部分,它決定GP的先驗(yàn)和后驗(yàn)形狀。它們通過(guò)定義兩個(gè)數(shù)據(jù)點(diǎn)的“相似性”,并結(jié)合相似的數(shù)據(jù)點(diǎn)應(yīng)該具有相似的目標(biāo)值的假設(shè),對(duì)正在學(xué)習(xí)的函數(shù)進(jìn)行編碼。內(nèi)核可以分為兩類(lèi):固定內(nèi)核,只取決于兩個(gè)數(shù)據(jù)點(diǎn)的距離, 不依賴(lài)于它們的絕對(duì)值 , 因此它們對(duì)于輸入空間中的轉(zhuǎn)換是不變的;非固定的內(nèi)核,取決于數(shù)據(jù)點(diǎn)的具體值。固定內(nèi)核可以進(jìn)一步細(xì)分為各向同性和各向 異性?xún)?nèi)核,其中各向同性?xún)?nèi)核不會(huì)在輸入空間中旋轉(zhuǎn)。有關(guān)更多細(xì)節(jié),我們參考[RW2006]第4章。關(guān)于如何最佳組合不同內(nèi)核,我們可以參考[Duv2014]。
內(nèi)核 Kernel
的主要用途是計(jì)算數(shù)據(jù)點(diǎn)之間的GP協(xié)方差。為此,可以調(diào)用內(nèi)核的方法__call__
_。該方法既可用于計(jì)算二維數(shù)組X中所有成對(duì)數(shù)據(jù)點(diǎn)的“自協(xié)方差”,也可用于計(jì)算二維數(shù)組X與二維數(shù)組Y中的成對(duì)數(shù)據(jù)點(diǎn)的所有組合的“交叉協(xié)方差”。以下恒等式適用于所有內(nèi)核k( WhiteKernel
除外):k(X) == K(X, Y=X)
如果只使用自協(xié)方差的對(duì)角線,則可以調(diào)用內(nèi)核的diag()
方法,這比對(duì)___call__
: np.diag(k(X, X)) == k.diag(X)
的等效調(diào)用計(jì)算效率更高。
核由超參數(shù)的向量參數(shù)化。例如,這些超參數(shù)可以控制內(nèi)核的長(zhǎng)度、尺度或周期(見(jiàn)下文)。所有內(nèi)核都支持計(jì)算內(nèi)核相對(duì)于的自協(xié)方差的分析梯度,方法是在__call__
方法中設(shè)置eval_gradient=True
。這一梯度被高斯過(guò)程(包括回歸者和分類(lèi)器)用于計(jì)算對(duì)數(shù)邊際似然的梯度,而后者又被用來(lái)確定的值,該值通過(guò)梯度上升來(lái)最大化對(duì)數(shù)邊際似然。對(duì)于每個(gè)超參數(shù),在創(chuàng)建內(nèi)核實(shí)例時(shí)需要指定初始值和邊界??梢酝ㄟ^(guò)內(nèi)核對(duì)象的屬性theta
獲取和設(shè)置的當(dāng)前值。此外,可以通過(guò)內(nèi)核的bounds
屬性來(lái)訪問(wèn)超參數(shù)的邊界。請(qǐng)注意,這兩個(gè)屬性(theta 和 bounds)都返回內(nèi)部使用的值的對(duì)數(shù)轉(zhuǎn)換值,因?yàn)檫@些值通常更適合基于梯度的優(yōu)化。每個(gè)超參數(shù)的規(guī)范以Hyperparameter
實(shí)例的形式存儲(chǔ)在各自的內(nèi)核中。請(qǐng)注意,使用名稱(chēng)為“x”的超參數(shù)的內(nèi)核必須具有屬性sel.x和self.x_bounds。
所有內(nèi)核的抽象基類(lèi)都是 Kernel
。內(nèi)核實(shí)現(xiàn)了與Estimator
類(lèi)似的接口,提供了get_params()
、set_params()
和clone()
方法。這還允許通過(guò)元估值器(如Pipeline
or GridSearch
)設(shè)置內(nèi)核值。注意,由于內(nèi)核的嵌套結(jié)構(gòu)(通過(guò)應(yīng)用內(nèi)核運(yùn)算符,請(qǐng)參見(jiàn)下面),內(nèi)核參數(shù)的名稱(chēng)可能變得相對(duì)復(fù)雜。通常,對(duì)于二進(jìn)制核運(yùn)算符,左操作數(shù)的參數(shù)以K1__
為前綴,右操作數(shù)的參數(shù)以K2_
為前綴。另一種方便的方法是clone_with_theta(theta)
,它返回內(nèi)核的克隆版本,但超參數(shù)設(shè)置為theta
。一個(gè)例子進(jìn)行說(shuō)明:
>>> from sklearn.gaussian_process.kernels import ConstantKernel, RBF
>>> kernel = ConstantKernel(constant_value=1.0, constant_value_bounds=(0.0, 10.0)) * RBF(length_scale=0.5, length_scale_bounds=(0.0, 10.0)) + RBF(length_scale=2.0, length_scale_bounds=(0.0, 10.0))
>>> for hyperparameter in kernel.hyperparameters: print(hyperparameter)
Hyperparameter(name='k1__k1__constant_value', value_type='numeric', bounds=array([[ 0., 10.]]), n_elements=1, fixed=False)
Hyperparameter(name='k1__k2__length_scale', value_type='numeric', bounds=array([[ 0., 10.]]), n_elements=1, fixed=False)
Hyperparameter(name='k2__length_scale', value_type='numeric', bounds=array([[ 0., 10.]]), n_elements=1, fixed=False)
>>> params = kernel.get_params()
>>> for key in sorted(params): print("%s : %s" % (key, params[key]))
k1 : 1**2 * RBF(length_scale=0.5)
k1__k1 : 1**2
k1__k1__constant_value : 1.0
k1__k1__constant_value_bounds : (0.0, 10.0)
k1__k2 : RBF(length_scale=0.5)
k1__k2__length_scale : 0.5
k1__k2__length_scale_bounds : (0.0, 10.0)
k2 : RBF(length_scale=2)
k2__length_scale : 2.0
k2__length_scale_bounds : (0.0, 10.0)
>>> print(kernel.theta) # Note: log-transformed
[ 0. -0.69314718 0.69314718]
>>> print(kernel.bounds) # Note: log-transformed
[[ -inf 2.30258509]
[ -inf 2.30258509]
[ -inf 2.30258509]]
所有的高斯過(guò)程核都可以與sklearn.metrics.pairwise
互操作,反之亦然:內(nèi)核的子類(lèi)的實(shí)例可以作為metric
傳遞給 sklearn.metrics.pairwise
中的pairwise_kernels
。此外,可以通過(guò)使用包裝器類(lèi) PairwiseKernel
,可以將來(lái)自的pairwise內(nèi)核函數(shù)用作GP內(nèi)核。唯一的警告是,超參數(shù)的梯度不是解析的,而是數(shù)值的,所有這些核都只支持各向同性距離。參數(shù)gamma
被認(rèn)為是一個(gè)超參數(shù),可以被優(yōu)化。其他內(nèi)核參數(shù)在初始化時(shí)直接設(shè)置,并保持固定。
ConstantKernel
內(nèi)核可以用作 Product
內(nèi)核的一部分,它可以縮放其他因素(內(nèi)核)的大小,也可以作為Sum
內(nèi)核的一部分,其中它調(diào)整了高斯過(guò)程的平均值。它取決于參數(shù) constant_value。它的定義是:
WhiteKernel
內(nèi)核的主要用例是 sum-kernel 的一部分,它解釋了信號(hào)的噪聲部分。調(diào)整其參數(shù)noise_level對(duì)應(yīng)于估計(jì)其噪聲水平。它的定義是:
內(nèi)核運(yùn)算符獲取一個(gè)或兩個(gè)基本內(nèi)核,并將它們組合成一個(gè)新的內(nèi)核。 Sum
核取兩個(gè)核和,并通過(guò)組合它們。Product
內(nèi)核采用兩個(gè)內(nèi)核和 ,并通過(guò)組合它們。Exponentiation
核取一個(gè)基本核和一個(gè)標(biāo)量參數(shù),通過(guò)組合它們,注意在核對(duì)象上重寫(xiě)了魔術(shù)方法___add__
, __mul___
和 __pow__
,因此可以使用例如RBF() + RBF()
作為 Sum(RBF(), RBF())
的快捷方式。
RBF
核是一個(gè)穩(wěn)定的核函數(shù)。它也被稱(chēng)為“平方指數(shù)”核。它由一個(gè)長(zhǎng)度尺度參數(shù)參數(shù)來(lái)參數(shù)化,它既可以是一個(gè)標(biāo)量(核的各向同性變體),也可以是一個(gè)與輸入x(核的各向異性變量)相同維數(shù)的向量。內(nèi)核由以下幾個(gè)方面提供:
其中是歐氏距離。這個(gè)核是無(wú)窮可微的,這意味著以這個(gè)核作為協(xié)方差函數(shù)的GPs具有所有階的均方導(dǎo)數(shù),因此是非常光滑的。由RBF核產(chǎn)生的GP的先驗(yàn)和后驗(yàn)如下圖所示:
Matern
核是一個(gè)平穩(wěn)核,是RBF
核的推廣。它有一個(gè)額外的參數(shù),它控制結(jié)果函數(shù)的光滑性。它由一個(gè)長(zhǎng)度尺度參數(shù)參數(shù)來(lái)參數(shù)化,它既可以是一個(gè)標(biāo)量(核的各向同性變體),也可以是一個(gè)與輸入x(核的各向異性變量)相同維數(shù)的向量。該核由以下幾個(gè)方面提供:
其中是歐氏距離,是修正的 Bessel 函數(shù),是伽馬函數(shù)。隨著,Matérn核收斂于徑向基函數(shù)核(RBF)。當(dāng)時(shí),Matérn核與絕對(duì)指數(shù)核(absolute exponential kernel)相同,即,
特別地, :
并且,:
學(xué)習(xí)函數(shù)的流行選擇不是無(wú)限可微(由徑向基函數(shù)核(RBF)假設(shè)),而是至少一次()或兩次可微()。
通過(guò)控制學(xué)習(xí)函數(shù)的光滑性的靈活性允許適應(yīng)真正的底層函數(shù)關(guān)系的性質(zhì)。由Matérn核產(chǎn)生的GP的先驗(yàn)和后驗(yàn)如下圖所示:
有關(guān)Matérn內(nèi)核的不同變體的更多詳細(xì)信息,請(qǐng)參見(jiàn) [RW2006],pp 84。
RationalQuadratic
(有理二次核)可以看作是具有不同特征長(zhǎng)度尺度的 RBF
核的尺度混合(無(wú)限和)。它由長(zhǎng)度尺度參數(shù)和尺度混合參數(shù)來(lái)參數(shù)化,此時(shí)只支持各向同性變量,其中是標(biāo)量。該核由下式給出:
由 RationalQuadratic
產(chǎn)生的GP的先驗(yàn)和后驗(yàn)如下圖所示:
ExpSineSquared
內(nèi)核允許對(duì)周期性函數(shù)進(jìn)行建模。它由長(zhǎng)度尺度參數(shù)和周期參數(shù)來(lái)參數(shù)化.現(xiàn)在只有各向同性變量,其中是標(biāo)量。該核由以下幾個(gè)方面提供:
由ExpSineSquared內(nèi)核產(chǎn)生的GP的先驗(yàn)和后驗(yàn)如下圖所示:
DotProduct
核是非平穩(wěn)的,可以通過(guò)在線性回歸的系數(shù)上加上的先驗(yàn)和在偏置上加上的先驗(yàn)得到。 DotProduct
核不受原點(diǎn)坐標(biāo)旋轉(zhuǎn)的影響,但不是轉(zhuǎn)換。它由參數(shù)參數(shù)化。對(duì)于,內(nèi)核被稱(chēng)為齊次線性核,否則它是非齊次的。內(nèi)核由下式給出:
DotProduct
核通常與指數(shù)結(jié)合在一起。指數(shù)為2的示例如下圖所示:
RW2006(1,2,3,4,5,6) Carl Eduard Rasmussen and Christopher K.I. Williams, “Gaussian Processes for Machine Learning”, MIT Press 2006, Link to an official complete PDF version of the book here .
Duv2014 David Duvenaud, “The Kernel Cookbook: Advice on Covariance functions”, 2014, Link .
更多建議: