引言 即使讀過一些機器學習相關的書,你也未必聽說過高斯過程。當然了,若是聽說過也無妨,復習一下基礎知識也能幫你喚醒記憶。本文旨在向讀者介紹高斯過程,并且把它背后的數(shù)學原理講得更加直觀易懂。 高斯過程是機器學習工具箱里一種相當有用的工具 [1]。它讓我們得以結合先驗知識,對數(shù)據(jù)做出預測。它最直觀的應用領域是回歸問題,比如在機器人學里會用到。同時,也可以把它拓展到分類和聚類任務里。我們先小小復習一下:回歸的目的是為了找到一個函數(shù)來盡可能貼近地描述一組給定的數(shù)據(jù)點。這個過程叫做用函數(shù)擬合數(shù)據(jù)。對于一組既定的訓練數(shù)據(jù)點,或許潛在有無限多個函數(shù)可以用來做擬合。高斯過程則為此提供了一個優(yōu)雅的解決方案——給每個這類函數(shù)分配一個概率值 [1]。這個概率分布的均值便代表了這個數(shù)據(jù)最有可能的表征。而且,概率的方法使我們可以把對預測的置信度結合到回歸的結果里去。 首先,我們將探索高斯回歸的數(shù)學基礎。你可以通過文中的互動圖,以及上手感受具體的例子來理解這些知識。它們有助于解釋每個組件的影響,并展示高斯過程的靈活性。希望你在閱讀本文之后,對高斯過程的工作原理以及如何把它適配給不同類型的數(shù)據(jù)能有一個直觀的理解。 多元高斯分布 在探索高斯分布之前,我們需要理解它們的數(shù)學基礎。從名字我們可以得知,高斯分布(也叫做正態(tài)分布)是高斯過程的基礎構件。而我們最感興趣的是多元高斯分布,其每個隨機變量都呈正態(tài)分布,聯(lián)合分布也是高斯的。一般來說,多元高斯分布由均值向量 μ 和協(xié)方差矩陣 Σ 定義。 均值向量μ 描述了該分布的期望值,它的每個組件描述了對應維度的均值。Σ 對每個維度的方差進行建模,并確定不同隨機變量之間的關聯(lián)。協(xié)方差矩陣總是對稱且半正定的(positive semi-definite)[4]。Σ 的對角線由第 i 個隨機變量的標準差σ_i 組成,而非對角線的元素則描述了每個元素σ_ij 之間的相關性。 我們稱 X 符合正態(tài)分布。協(xié)方差矩陣Σ 描述了該分布的形狀,它由期望值 E 所定義: 從圖形上來看,該分布以均值為中心,由協(xié)方差矩陣決定其形狀。下圖展示了這些參數(shù)對于一個二維高斯分布的影響。每個隨機變量的標準差在協(xié)方差矩陣的對角線上,而其它的值則顯示了它們之間的協(xié)方差。 這是一個互動式的圖,通過拖動圖中的三個點,你可以調節(jié)每個維度上的方差,以及兩個隨機變量之間的關聯(lián)。紫色的部分指的是分布內(nèi)高概率的區(qū)域。 高斯分布被廣泛應用于為真實世界建模,有時在原分布未知的情況下作為替代品,有時用于中心極限定理。接下來我們會進一步講解如何操縱高斯分布,以及如何從中獲得有用的信息。 邊緣化和條件作用 高斯分布有一個很贊的代數(shù)性質:它在條件作用和邊緣化情況下是封閉的。意思是,經(jīng)過這些運算后,在結果中得到的分布依舊是高斯分布,這就使得很多統(tǒng)計學和機器學習中的問題變得易解。接下來,我們將進一步看看這兩個運算,它們是高斯過程的基礎。 邊緣化和條件作用都作用于原始分布的子集,我們將使用以下符號: 其中 X 和 Y 代表原始隨機變量的子集。 通過邊緣化,我們可以獲取多元概率分布的一部分信息。給定隨機變量 X 和 Y 組成的向量的正態(tài)概率分布 P(X,Y),我們可以用以下方法確定他們的邊緣概率分布: 這個公式所表達的意思很直接了當:X 和 Y 這兩個子集各自只依賴于它們 μ 和 Σ 中對應的值。因此,要從高斯分布中邊緣化一個隨機變量,我們只需把μ 和Σ 里那些對應的變量丟掉就行。 這個公式的意思是,如果我們只對 X=x 的概率感興趣,我們要考慮 Y 所有可能的值,它們齊心協(xié)力才能得到最終的結果。 高斯過程的另一個重要運算是條件作用,它可以用于得到一個變量在另一個變量條件下的概率分布。和邊緣化類似,這個運算也是封閉的,會得到一個不同的高斯分布。條件運算是高斯過程的基石,它使貝葉斯推斷成為可能。條件作用如下定義: 要注意的是,新的均值只依賴于作為條件的變量,而協(xié)方差矩陣則和這個變量無關。 了解了必要的公式以后,我們要思考的是:如何從視覺層面理解這兩個運算。雖然邊緣化和條件作用可以用于多維的多元分布,還是用下圖中的二維分布作為例子更加好理解。邊緣化可以理解為在高斯分布的一個維度上做累加,這也符合邊緣分布的一般定義。條件作用也有個很好的幾何表達——我們可以把它想象成在多元分布上切下一刀,從而獲得一個維數(shù)更少的高斯分布。 中間是一個二元正態(tài)分布。圖左是該分布關于 Y 做邊緣化的結果,類似于沿著 Y 軸做累加。圖右是以給定的 X 為條件的分布,類似于在原始分布上切下一刀。你可以通過拖動圖中的點來修改這個高斯分布和作為條件的變量。 高斯過程 復習好了多元高斯分布的基礎屬性,我們接著就可以把它們組裝到一起,來定義高斯過程,并展示怎么用高斯過程來解決回歸問題。 首先,我們把視角從連續(xù)函數(shù)轉移到函數(shù)的離散表達:相比于找一個隱函數(shù)而言,我們對預測具體點的函數(shù)值更感興趣,這些點叫做測試點 X。對應地,我們把訓練數(shù)據(jù)稱為 Y。那么,高斯過程背后的關鍵點在于所有的函數(shù)值都來源于多元高斯分布。這意味著聯(lián)合概率分布 P(X,Y) 跨越了我們想要預測的函數(shù)的可能取值空間。這個測試數(shù)據(jù)和訓練數(shù)據(jù)的聯(lián)合分布有∣X∣+∣Y∣維。 為了在訓練數(shù)據(jù)上進行回歸,我們會用貝葉斯推斷來處理這個問題。貝葉斯推斷的核心思想就是:在獲得新的信息以后,更新當前的假設。對于高斯過程來說,這個信息指的就是訓練數(shù)據(jù)。因此,我們感興趣的是條件概率 P(X|Y)。最后,還記得高斯分布在條件作用下是封閉的嗎?所以 P(X|Y) 也是正態(tài)分布的。 好了,我們已經(jīng)集齊了高斯過程的基本框架,只差一個東西:我們怎么才能建立起這個分布,定義均值μ 和協(xié)方差矩陣Σ?方法是:使用核函數(shù) k,具體細節(jié)將在下一節(jié)具體討論。但在這之前,我們先回憶一下怎么用多元高斯分布來估算函數(shù)值。下圖中的例子包含十個測試點,我們將在十個點上預測函數(shù)。 這也是一個互動式的圖 在高斯過程中,我們把每個測試點作為一個隨機變量,多元高斯分布的維數(shù)和隨機變量的數(shù)目一致。由于我們想要預測函數(shù)在∣X∣=N 個測試點上的取值,對應的多元高斯分布也是 N 維的。用高斯過程做預測最終可以歸結為在這個分布上做采樣。這樣,我們就可以把結果向量上的第 i 個成員作為第 i 個測試點的對應函數(shù)值。 核函數(shù) 讓我們回想一下,為了建立起我們要的分布,首先要定義 μ 和 Σ。在高斯過程中,我們往往假設 μ =0,這樣可以簡化條件作用所需要的公式。這樣做假設總是沒錯的,就算 μ≠0,我們也可以在預測結束后把μ 加回到結果函數(shù)值中。所以配置μ 非常簡單,更有意思的是這個分布的另一個參數(shù)。 高斯過程中巧妙的一步是如何設置協(xié)方差矩陣Σ。協(xié)方差矩陣不僅僅描述了這個分布的形狀,也最終決定了我們想要預測的函數(shù)所具有的特性。我們通過求核函數(shù) k 的值來生成協(xié)方差矩陣,這個核函數(shù)通常也被稱為協(xié)方差函數(shù),作用在兩兩成對的所有測試點上。核函數(shù)接收到的輸入是兩個點,
我們將測試點兩兩配對,在這個函數(shù)上求值以獲取協(xié)方差矩陣,這個步驟在下圖中也有所顯示。為了對核函數(shù)的作用有一個更直觀的理解,我們可以想一想?yún)f(xié)方差矩陣中元素描述的是什么。Σ_ij 描述的是第 i 個點和第 j 個點之間的相互影響,這和多元高斯分布的定義一致。在多元高斯分布的定義中,Σ_ij 定義了第 i 個隨機變量和第 j 個隨機變量之間的相關性。由于核函數(shù)描述的是函數(shù)值之間的相似度,它便控制了這個擬合函數(shù)可能擁有的形狀。注意,當我們選擇一個核函數(shù)時,我們要確保它生成的矩陣遵循協(xié)方差矩陣的屬性。 核函數(shù)被廣泛應用于機器學習,比方說支持向量機。它之所以這么受歡迎,是因為它讓我們得以在標準的歐幾里得距離(L2 距離)之外衡量相似度。很多核函數(shù)會把輸入點嵌到更高維的空間里去測量相似度。下圖介紹了高斯過程的一些常見核函數(shù)。對于每個核函數(shù),我們用 N=25 個呈線性、范圍在 [-5,5] 的點生成協(xié)方差矩陣。矩陣中的元素顯示出點和點之間的協(xié)方差,取值在 [0,1] 之間。
上圖展示了高斯過程可以使用的各種核函數(shù)。每個核函數(shù)的參數(shù)不同,你可以拖動滑塊改變這些參數(shù)的值。當你點擊某個滑塊時,可以看到圖右側中當前參數(shù)是如何影響核函數(shù)的。 核函數(shù)可分為平穩(wěn)和非平穩(wěn)的類型。平穩(wěn)核函數(shù),例如徑向基函數(shù)核(RBF)或者周期核,都具有平移不變性,兩點之間的協(xié)方差只取決于它們之間的相對位置。非平穩(wěn)核函數(shù),比如線性核,就沒有這個限制且取決于絕對位置。徑向基函數(shù)核的平穩(wěn)特性可以從其協(xié)方差矩陣的對角線帶來觀察(如下圖)。增加長度參數(shù)會使得這個帶狀區(qū)域變得更寬,因為距離較遠的點彼此之間的相關性增加了。對于周期核,我們還有個參數(shù) P 來決定周期,從而控制了函數(shù)每次重復之間的距離。相比之下,線性核的參數(shù) C 讓我們得以改變各個函數(shù)交匯的點。 還有很多其它的核函數(shù)可以描述不同類別的函數(shù),它們使函數(shù)擁有我們所希望的形狀。Duvenaud 的《Automatic model construction with Gaussian processes》對不同核函數(shù)進行了概覽,值得一觀。我們還可以把幾個核函數(shù)結合起來用,不過這個以后再講。 先驗分布 回到我們原來的回歸任務,正如我們之前提到過的,高斯過程定義了潛在函數(shù)的概率分布。由于這是一個多元高斯分布,這些函數(shù)也呈正態(tài)分布。我們通常假設μ= 0,姑且先考慮還沒有觀察到任何訓練數(shù)據(jù)的情況。在貝葉斯推斷的框架下,我們稱之為先驗分布 P(X)。 如果還沒觀察到任何訓練樣本,該分布會如我們剛開始所假設的,圍繞 μ=0 展開。先驗分布的維數(shù)和測試點的數(shù)目 N=∣X∣一致。我們將用核函數(shù)來建立協(xié)方差矩陣,維數(shù)為 N×N。 我們在上一章看過不同核函數(shù)的例子,由于核函數(shù)被用于定義協(xié)方差矩陣的內(nèi)容,它也就決定了在這個包含所有可能的函數(shù)的空間里,哪些類型的函數(shù)可能性更大。先驗分布還不包含任何額外的信息,這就給了我們一個絕佳的機會來呈現(xiàn)核函數(shù)對于函數(shù)分布的影響。下圖顯示了用不同核函數(shù)產(chǎn)生的先驗分布可以獲取到的潛在函數(shù)的一些樣本。
點擊圖片可以得到一系列在高斯過程中使用指定核函數(shù)時的連續(xù)采樣。在每次采樣過后,之前的樣本會在背景里被淡化。一段時間后,大概可以看到這些函數(shù)圍繞均值 μ呈正態(tài)分布。 通過調節(jié)參數(shù),你可以控制所獲得的函數(shù)的形狀,這同時也會改變預測的置信度。方差σ 是一個所有核函數(shù)都常見的參數(shù),如果減小它,采樣到的函數(shù)就會更加緊密地圍繞在均值μ 周圍。對于線性核而言,設置 σb = 0,我們會得到一組精確地交匯在點 c 的函數(shù),而設置σ_b = 0.2,則會引入一些不確定性,采樣到的各個函數(shù)會大致經(jīng)過點 c 附近。 后驗分布 那么如果我們觀察到了訓練數(shù)據(jù),會發(fā)生什么呢?我們來回顧一下貝葉斯推斷的模型,它告訴我們可以把這個額外的信息結合到模型里去,從而得到后驗分布 P(X|Y)。我們來進一步看看在高斯過程里怎么用上它。 首先,我們得到測試點 X 和訓練點 Y 之間的聯(lián)合分布 P(X,Y),這是一個維數(shù)為∣Y∣+∣X∣的多元高斯分布。下圖中可以看到,我們把訓練點和測試點拼接到一起,計算對應的協(xié)方差矩陣。 接下來我們要在高斯分布上做一個之前定義過的運算:通過條件作用從 P(X,Y) 得到 P(X|Y)。這個新分布的維數(shù)和測試點的數(shù)目 N 一致,呈正態(tài)分布。要重點注意的是,條件作用以后均值和標準差會相應發(fā)生變化:X∣Y~N(μ′,Σ′),具體的細節(jié)可以在講邊緣化和條件作用的章節(jié)找到。直觀上講,就是訓練點為候選的函數(shù)設了一個限定范圍:要經(jīng)過訓練點。
增加訓練點 (■) 會改變多元高斯分布的維數(shù);通過兩兩配對核函數(shù)的值生成協(xié)方差矩陣,結果是一個十二維的分布;在條件作用下,我們會得到一個分布,這個分布可以描述我們對于給定 x 值所預測的函數(shù)值。 和先驗分布類似,我們可以通過對該分布采樣獲得一個預測結果。然而,由于采樣包含隨機性,我們無法保證結果能很好地擬合數(shù)據(jù)。為了優(yōu)化預測結果,我們可以用到高斯分布的另一個基礎運算。 通過對每個隨機變量做邊緣化操作,我們可以為第 i 個測試點提取到對應的均值函數(shù)的值μ'i,以及標準差σ'i=Σ'ii。和先驗分布不同的是,我們做先驗分布時會設μ= 0,在那個情況下均值并不太重要。而當我們把條件作用施加在測試數(shù)據(jù)和訓練數(shù)據(jù)的聯(lián)合分布上時,得到的分布往往會有個非零的均值,μ′≠ 0。提取μ′ 和 σ′ 不僅會使預測更有意義,還表示出了預測值的置信度。 下圖(原圖為互動圖)展示了一個條件分布的例子。剛開始的時候,沒有觀察到任何訓練點,所以預測的均值保持在 0,標準差對每個測試點來說都是一樣的。把光標懸停在協(xié)方差矩陣上,你可以看到每個點對當前測試點的影響。只要還沒觀察到任何訓練點,只有相鄰的點對彼此有影響。 通過點擊可以激活訓練點,從而得到一個受到約束的分布。這個變化體現(xiàn)在協(xié)方差矩陣的內(nèi)容里,并且會改變預測到的函數(shù)具有的均值和標準差。正如我們所料,在靠近訓練數(shù)據(jù)的區(qū)域,預測的不確定性很小,離得越遠,不確定性越大。
沒激活任何訓練數(shù)據(jù)的時候,圖中顯示的是一個高斯過程的先驗分布,它使用的是徑向基函數(shù)核。光標懸停在協(xié)方差矩陣上時,漸變色上的不透明度顯示了一個函數(shù)值對它的相鄰點的影響。當我們觀察到訓練數(shù)據(jù)的時候,這個分布會發(fā)生變化??梢酝ㄟ^點擊單個點激活它們。然后,高斯過程被約束,傾向于給那些與這些點相交的函數(shù)更高的概率。對訓練數(shù)據(jù)的最佳闡釋就蘊含在更新過的均值函數(shù)里。 在受到約束的協(xié)方差矩陣中,我們可以看到相鄰點之間的相關性會被訓練數(shù)據(jù)所影響。如果預測的點在訓練數(shù)據(jù)上,它和其他點就不存在相關性,所以,這個函數(shù)必須直接經(jīng)過它。更遠的預測值也會受到訓練數(shù)據(jù)的影響,程度和它的距離相關。 結合不同的核函數(shù) 正如我們之前介紹的,高斯過程的強大在于它所選的核函數(shù)。這一點使得專家可以把某個領域的知識引入到這個過程中,使得高斯過程足夠靈活,足以捕捉訓練數(shù)據(jù)中的趨勢。比如,一個專家可以通過為徑向基函數(shù)核選取一個合適的帶寬,來控制結果中的函數(shù)的平滑度。 核函數(shù)的一大優(yōu)勢是,它們可以被結合起來,形成一個更加專精的核函數(shù)。這使得某個領域的專家可以加入更多的信息,使預測更加精確。通常我們結合不同核函數(shù)的方法是把它們相乘。我們可以考慮一下兩個核函數(shù)的情況,比如說一個徑向基函數(shù)核 k_rbf 和一個周期核 k_per。我們是這樣把它們結合起來的:
在下圖(原圖為互動圖)中,原始的訓練數(shù)據(jù)呈上升趨勢并有周期性偏離。如果只用一個線性核,可能會得到這些點的一個普通線性回歸。乍一看,徑向基函數(shù)核可以準確地逼近這些點。但由于徑向基函數(shù)核是平穩(wěn)的,在遠離觀察到的訓練數(shù)據(jù)的地方,它總是會回到均值μ= 0。這就使得預測特別早或者特別晚的時間點時,結果不太準確。只有通過結合幾個核函數(shù),才能同時保持數(shù)據(jù)的周期特性和均值非零的趨勢。比如,這個方法可以用于分析天氣數(shù)據(jù)。
通過點擊復選框,我們可以把不同的核函數(shù)結合成一個新的高斯過程。只有結合了多個核函數(shù),我們才可能捕捉到更復雜的訓練數(shù)據(jù)的特性。 結論 讀過本文以后,你應該對高斯過程有了一個整體的印象,更加了解它們是如何運作的。正如我們所見,高斯過程為回歸問題提供了一個靈活的框架,并且擁有一些拓展功能使它更加通用。如果要處理真實世界的數(shù)據(jù),我們經(jīng)常會發(fā)現(xiàn)測量值受到不確定性和誤差的影響。利用高斯過程可以定義一個核函數(shù)來擬合我們的數(shù)據(jù),并為預測結果增加不確定性。比如,McHutchon 等人 [7] 對高斯過程進行了一個特殊的拓展,使其可以兼容包含噪音的輸入。 雖然我們大都在回歸問題的語境下討論高斯過程,它也可以用在其它的任務上,比如模型剝離和假設檢驗。通過比較不同核函數(shù)在數(shù)據(jù)集上的效果,某個領域的專家可以借由恰當?shù)亟Y合核函數(shù)或是為其選擇參數(shù),來嵌入額外的知識。由于在很多情況下我們無法擁有這樣的專家,人們也在研究如何使用深度學習 [8, 9] 從給定數(shù)據(jù)中學得專用的核函數(shù)。此外,也有多篇論文 [10, 11] 探討了貝葉斯推斷、高斯過程和深度學習之間的聯(lián)系。 原文地址:https://www./visual-exploration-gaussian-processes/ 本文為機器之心編譯,轉載請聯(lián)系公眾號獲得授權。 ?------------------------------------------------ 加入機器之心(全職記者 / 實習生):hr@jiqizhixin.com 投稿或尋求報道:content@jiqizhixin.com 廣告 & 商務合作:bd@jiqizhixin.com |
|
|
來自: taotao_2016 > 《計算機》