看得見的高斯過程:這是一份直觀的入門解讀

機器之心發表於2019-02-12

選自Distill,作者:Jochen Görtler、Rebecca Kehlbeck、Oliver Deussen,參與:Yi Bai、張倩、王淑婷。

高斯過程可以讓我們結合先驗知識,對資料做出預測,最直觀的應用領域是迴歸問題。本文作者用幾個互動圖生動地講解了高斯過程的相關知識,可以讓讀者直觀地瞭解高斯過程的工作原理以及如何使其適配不同型別的資料。

引言

即使讀過一些機器學習相關的書,你也未必聽說過高斯過程。當然了,若是聽說過也無妨,複習一下基礎知識也能幫你喚醒記憶。本文旨在向讀者介紹高斯過程,並且把它背後的數學原理講得更加直觀易懂。

高斯過程是機器學習工具箱裡一種相當有用的工具 [1]。它讓我們得以結合先驗知識,對資料做出預測。它最直觀的應用領域是迴歸問題,比如在機器人學裡會用到。同時,也可以把它擴充到分類和聚類任務裡。我們先小小複習一下:迴歸的目的是為了找到一個函式來儘可能貼近地描述一組給定的資料點。這個過程叫做用函式擬合資料。對於一組既定的訓練資料點,或許潛在有無限多個函式可以用來做擬合。高斯過程則為此提供了一個優雅的解決方案——給每個這類函式分配一個概率值 [1]。這個概率分佈的均值便代表了這個資料最有可能的表徵。而且,概率的方法使我們可以把對預測的置信度結合到迴歸的結果裡去。

首先,我們將探索高斯迴歸的數學基礎。你可以通過文中的互動圖,以及上手感受具體的例子來理解這些知識。它們有助於解釋每個元件的影響,並展示高斯過程的靈活性。希望你在閱讀本文之後,對高斯過程的工作原理以及如何把它適配給不同型別的資料能有一個直觀的理解。

多元高斯分佈

在探索高斯分佈之前,我們需要理解它們的數學基礎。從名字我們可以得知,高斯分佈(也叫做正態分佈)是高斯過程的基礎構件。而我們最感興趣的是多元高斯分佈,其每個隨機變數都呈正態分佈,聯合分佈也是高斯的。一般來說,多元高斯分佈由均值向量 μ 和協方差矩陣 Σ 定義。

均值向量μ 描述了該分佈的期望值,它的每個元件描述了對應維度的均值。Σ 對每個維度的方差進行建模,並確定不同隨機變數之間的關聯。協方差矩陣總是對稱且半正定的(positive semi-definite)[4]。Σ 的對角線由第 i 個隨機變數的標準差σ_i 組成,而非對角線的元素則描述了每個元素σ_ij 之間的相關性。

我們稱 X 符合正態分佈。協方差矩陣Σ 描述了該分佈的形狀,它由期望值 E 所定義:

看得見的高斯過程:這是一份直觀的入門解讀

從圖形上來看,該分佈以均值為中心,由協方差矩陣決定其形狀。下圖展示了這些引數對於一個二維高斯分佈的影響。每個隨機變數的標準差在協方差矩陣的對角線上,而其它的值則顯示了它們之間的協方差。

看得見的高斯過程:這是一份直觀的入門解讀

看得見的高斯過程:這是一份直觀的入門解讀

這是一個互動式的圖,通過拖動圖中的三個點,你可以調節每個維度上的方差,以及兩個隨機變數之間的關聯。紫色的部分指的是分佈內高概率的區域。

高斯分佈被廣泛應用於為真實世界建模,有時在原分佈未知的情況下作為替代品,有時用於中心極限定理。接下來我們會進一步講解如何操縱高斯分佈,以及如何從中獲得有用的資訊。

邊緣化和條件作用

高斯分佈有一個很讚的代數性質:它在條件作用和邊緣化情況下是封閉的。意思是,經過這些運算後,在結果中得到的分佈依舊是高斯分佈,這就使得很多統計學和機器學習中的問題變得易解。接下來,我們將進一步看看這兩個運算,它們是高斯過程的基礎。

邊緣化和條件作用都作用於原始分佈的子集,我們將使用以下符號:

看得見的高斯過程:這是一份直觀的入門解讀

其中 X 和 Y 代表原始隨機變數的子集。

通過邊緣化,我們可以獲取多元概率分佈的一部分資訊。給定隨機變數 X 和 Y 組成的向量的正態概率分佈 P(X,Y),我們可以用以下方法確定他們的邊緣概率分佈:

看得見的高斯過程:這是一份直觀的入門解讀

這個公式所表達的意思很直接了當:X 和 Y 這兩個子集各自只依賴於它們 μ 和 Σ 中對應的值。因此,要從高斯分佈中邊緣化一個隨機變數,我們只需把μ 和Σ 裡那些對應的變數丟掉就行。

看得見的高斯過程:這是一份直觀的入門解讀

這個公式的意思是,如果我們只對 X=x 的概率感興趣,我們要考慮 Y 所有可能的值,它們齊心協力才能得到最終的結果。

高斯過程的另一個重要運算是條件作用,它可以用於得到一個變數在另一個變數條件下的概率分佈。和邊緣化類似,這個運算也是封閉的,會得到一個不同的高斯分佈。條件運算是高斯過程的基石,它使貝葉斯推斷成為可能。條件作用如下定義:

看得見的高斯過程:這是一份直觀的入門解讀

要注意的是,新的均值只依賴於作為條件的變數,而協方差矩陣則和這個變數無關。

瞭解了必要的公式以後,我們要思考的是:如何從視覺層面理解這兩個運算。雖然邊緣化和條件作用可以用於多維的多元分佈,還是用下圖中的二維分佈作為例子更加好理解。邊緣化可以理解為在高斯分佈的一個維度上做累加,這也符合邊緣分佈的一般定義。條件作用也有個很好的幾何表達——我們可以把它想象成在多元分佈上切下一刀,從而獲得一個維數更少的高斯分佈。

看得見的高斯過程:這是一份直觀的入門解讀

中間是一個二元正態分佈。圖左是該分佈關於 Y 做邊緣化的結果,類似於沿著 Y 軸做累加。圖右是以給定的 X 為條件的分佈,類似於在原始分佈上切下一刀。你可以通過拖動圖中的點來修改這個高斯分佈和作為條件的變數。

高斯過程

複習好了多元高斯分佈的基礎屬性,我們接著就可以把它們組裝到一起,來定義高斯過程,並展示怎麼用高斯過程來解決迴歸問題。

首先,我們把視角從連續函式轉移到函式的離散表達:相比於找一個隱函式而言,我們對預測具體點的函式值更感興趣,這些點叫做測試點 X。對應地,我們把訓練資料稱為 Y。那麼,高斯過程背後的關鍵點在於所有的函式值都來源於多元高斯分佈。這意味著聯合概率分佈 P(X,Y) 跨越了我們想要預測的函式的可能取值空間。這個測試資料和訓練資料的聯合分佈有∣X∣+∣Y∣維。

為了在訓練資料上進行迴歸,我們會用貝葉斯推斷來處理這個問題。貝葉斯推斷的核心思想就是:在獲得新的資訊以後,更新當前的假設。對於高斯過程來說,這個資訊指的就是訓練資料。因此,我們感興趣的是條件概率 P(X|Y)。最後,還記得高斯分佈在條件作用下是封閉的嗎?所以 P(X|Y) 也是正態分佈的。

好了,我們已經集齊了高斯過程的基本框架,只差一個東西:我們怎麼才能建立起這個分佈,定義均值μ 和協方差矩陣Σ?方法是:使用核函式 k,具體細節將在下一節具體討論。但在這之前,我們先回憶一下怎麼用多元高斯分佈來估算函式值。下圖中的例子包含十個測試點,我們將在十個點上預測函式。

看得見的高斯過程:這是一份直觀的入門解讀

這也是一個互動式的圖

在高斯過程中,我們把每個測試點作為一個隨機變數,多元高斯分佈的維數和隨機變數的數目一致。由於我們想要預測函式在∣X∣=N 個測試點上的取值,對應的多元高斯分佈也是 N 維的。用高斯過程做預測最終可以歸結為在這個分佈上做取樣。這樣,我們就可以把結果向量上的第 i 個成員作為第 i 個測試點的對應函式值。

核函式

讓我們回想一下,為了建立起我們要的分佈,首先要定義 μ 和 Σ。在高斯過程中,我們往往假設 μ =0,這樣可以簡化條件作用所需要的公式。這樣做假設總是沒錯的,就算 μ≠0,我們也可以在預測結束後把μ 加回到結果函式值中。所以配置μ 非常簡單,更有意思的是這個分佈的另一個引數。

高斯過程中巧妙的一步是如何設定協方差矩陣Σ。協方差矩陣不僅僅描述了這個分佈的形狀,也最終決定了我們想要預測的函式所具有的特性。我們通過求核函式 k 的值來生成協方差矩陣,這個核函式通常也被稱為協方差函式,作用在兩兩成對的所有測試點上。核函式接收到的輸入是兩個點,看得見的高斯過程:這是一份直觀的入門解讀,返回的是一個標量,表達了這兩個點之間的相似度。

看得見的高斯過程:這是一份直觀的入門解讀

我們將測試點兩兩配對,在這個函式上求值以獲取協方差矩陣,這個步驟在下圖中也有所顯示。為了對核函式的作用有一個更直觀的理解,我們可以想一想協方差矩陣中元素描述的是什麼。Σ_ij 描述的是第 i 個點和第 j 個點之間的相互影響,這和多元高斯分佈的定義一致。在多元高斯分佈的定義中,Σ_ij 定義了第 i 個隨機變數和第 j 個隨機變數之間的相關性。由於核函式描述的是函式值之間的相似度,它便控制了這個擬合函式可能擁有的形狀。注意,當我們選擇一個核函式時,我們要確保它生成的矩陣遵循協方差矩陣的屬性。

核函式被廣泛應用於機器學習,比方說支援向量機。它之所以這麼受歡迎,是因為它讓我們得以在標準的歐幾里得距離(L2 距離)之外衡量相似度。很多核函式會把輸入點嵌到更高維的空間裡去測量相似度。下圖介紹了高斯過程的一些常見核函式。對於每個核函式,我們用 N=25 個呈線性、範圍在 [-5,5] 的點生成協方差矩陣。矩陣中的元素顯示出點和點之間的協方差,取值在 [0,1] 之間。

看得見的高斯過程:這是一份直觀的入門解讀

上圖展示了高斯過程可以使用的各種核函式。每個核函式的引數不同,你可以拖動滑塊改變這些引數的值。當你點選某個滑塊時,可以看到圖右側中當前引數是如何影響核函式的。

核函式可分為平穩和非平穩的型別。平穩核函式,例如徑向基函式核(RBF)或者週期核,都具有平移不變性,兩點之間的協方差只取決於它們之間的相對位置。非平穩核函式,比如線性核,就沒有這個限制且取決於絕對位置。徑向基函式核的平穩特性可以從其協方差矩陣的對角線帶來觀察(如下圖)。增加長度引數會使得這個帶狀區域變得更寬,因為距離較遠的點彼此之間的相關性增加了。對於週期核,我們還有個引數 P 來決定週期,從而控制了函式每次重複之間的距離。相比之下,線性核的引數 C 讓我們得以改變各個函式交匯的點。

還有很多其它的核函式可以描述不同類別的函式,它們使函式擁有我們所希望的形狀。Duvenaud 的《Automatic model construction with Gaussian processes》對不同核函式進行了概覽,值得一觀。我們還可以把幾個核函式結合起來用,不過這個以後再講。

先驗分佈

回到我們原來的迴歸任務,正如我們之前提到過的,高斯過程定義了潛在函式的概率分佈。由於這是一個多元高斯分佈,這些函式也呈正態分佈。我們通常假設μ= 0,姑且先考慮還沒有觀察到任何訓練資料的情況。在貝葉斯推斷的框架下,我們稱之為先驗分佈 P(X)。

如果還沒觀察到任何訓練樣本,該分佈會如我們剛開始所假設的,圍繞 μ=0 展開。先驗分佈的維數和測試點的數目 N=∣X∣一致。我們將用核函式來建立協方差矩陣,維數為 N×N。

我們在上一章看過不同核函式的例子,由於核函式被用於定義協方差矩陣的內容,它也就決定了在這個包含所有可能的函式的空間裡,哪些型別的函式可能性更大。先驗分佈還不包含任何額外的資訊,這就給了我們一個絕佳的機會來呈現核函式對於函式分佈的影響。下圖顯示了用不同核函式產生的先驗分佈可以獲取到的潛在函式的一些樣本。

看得見的高斯過程:這是一份直觀的入門解讀

點選圖片可以得到一系列在高斯過程中使用指定核函式時的連續取樣。在每次取樣過後,之前的樣本會在背景裡被淡化。一段時間後,大概可以看到這些函式圍繞均值 µ呈正態分佈。

通過調節引數,你可以控制所獲得的函式的形狀,這同時也會改變預測的置信度。方差σ 是一個所有核函式都常見的引數,如果減小它,取樣到的函式就會更加緊密地圍繞在均值μ 周圍。對於線性核而言,設定 σb = 0,我們會得到一組精確地交匯在點 c 的函式,而設定σ_b = 0.2,則會引入一些不確定性,取樣到的各個函式會大致經過點 c 附近。

後驗分佈

那麼如果我們觀察到了訓練資料,會發生什麼呢?我們來回顧一下貝葉斯推斷的模型,它告訴我們可以把這個額外的資訊結合到模型裡去,從而得到後驗分佈 P(X|Y)。我們來進一步看看在高斯過程裡怎麼用上它。

首先,我們得到測試點 X 和訓練點 Y 之間的聯合分佈 P(X,Y),這是一個維數為∣Y∣+∣X∣的多元高斯分佈。下圖中可以看到,我們把訓練點和測試點拼接到一起,計算對應的協方差矩陣。

接下來我們要在高斯分佈上做一個之前定義過的運算:通過條件作用從 P(X,Y) 得到 P(X|Y)。這個新分佈的維數和測試點的數目 N 一致,呈正態分佈。要重點注意的是,條件作用以後均值和標準差會相應發生變化:X∣Y∼N(μ′,Σ′),具體的細節可以在講邊緣化和條件作用的章節找到。直觀上講,就是訓練點為候選的函式設了一個限定範圍:要經過訓練點。

看得見的高斯過程:這是一份直觀的入門解讀

增加訓練點 (■) 會改變多元高斯分佈的維數;通過兩兩配對核函式的值生成協方差矩陣,結果是一個十二維的分佈;在條件作用下,我們會得到一個分佈,這個分佈可以描述我們對於給定 x 值所預測的函式值。

和先驗分佈類似,我們可以通過對該分佈取樣獲得一個預測結果。然而,由於取樣包含隨機性,我們無法保證結果能很好地擬合資料。為了優化預測結果,我們可以用到高斯分佈的另一個基礎運算。

通過對每個隨機變數做邊緣化操作,我們可以為第 i 個測試點提取到對應的均值函式的值μ'i,以及標準差σ'i=Σ'ii。和先驗分佈不同的是,我們做先驗分佈時會設μ= 0,在那個情況下均值並不太重要。而當我們把條件作用施加在測試資料和訓練資料的聯合分佈上時,得到的分佈往往會有個非零的均值,μ′≠ 0。提取μ′ 和 σ′ 不僅會使預測更有意義,還表示出了預測值的置信度。

下圖(原圖為互動圖)展示了一個條件分佈的例子。剛開始的時候,沒有觀察到任何訓練點,所以預測的均值保持在 0,標準差對每個測試點來說都是一樣的。把游標懸停在協方差矩陣上,你可以看到每個點對當前測試點的影響。只要還沒觀察到任何訓練點,只有相鄰的點對彼此有影響。

通過點選可以啟用訓練點,從而得到一個受到約束的分佈。這個變化體現在協方差矩陣的內容裡,並且會改變預測到的函式具有的均值和標準差。正如我們所料,在靠近訓練資料的區域,預測的不確定性很小,離得越遠,不確定性越大。

看得見的高斯過程:這是一份直觀的入門解讀

沒啟用任何訓練資料的時候,圖中顯示的是一個高斯過程的先驗分佈,它使用的是徑向基函式核。游標懸停在協方差矩陣上時,漸變色上的不透明度顯示了一個函式值對它的相鄰點的影響。當我們觀察到訓練資料的時候,這個分佈會發生變化。可以通過點選單個點啟用它們。然後,高斯過程被約束,傾向於給那些與這些點相交的函式更高的概率。對訓練資料的最佳闡釋就蘊含在更新過的均值函式裡。

在受到約束的協方差矩陣中,我們可以看到相鄰點之間的相關性會被訓練資料所影響。如果預測的點在訓練資料上,它和其他點就不存在相關性,所以,這個函式必須直接經過它。更遠的預測值也會受到訓練資料的影響,程度和它的距離相關。

結合不同的核函式

正如我們之前介紹的,高斯過程的強大在於它所選的核函式。這一點使得專家可以把某個領域的知識引入到這個過程中,使得高斯過程足夠靈活,足以捕捉訓練資料中的趨勢。比如,一個專家可以通過為徑向基函式核選取一個合適的頻寬,來控制結果中的函式的平滑度。

核函式的一大優勢是,它們可以被結合起來,形成一個更加專精的核函式。這使得某個領域的專家可以加入更多的資訊,使預測更加精確。通常我們結合不同核函式的方法是把它們相乘。我們可以考慮一下兩個核函式的情況,比如說一個徑向基函式核 k_rbf 和一個週期核 k_per。我們是這樣把它們結合起來的:

看得見的高斯過程:這是一份直觀的入門解讀

在下圖(原圖為互動圖)中,原始的訓練資料呈上升趨勢並有週期性偏離。如果只用一個線性核,可能會得到這些點的一個普通線性迴歸。乍一看,徑向基函式核可以準確地逼近這些點。但由於徑向基函式核是平穩的,在遠離觀察到的訓練資料的地方,它總是會回到均值μ= 0。這就使得預測特別早或者特別晚的時間點時,結果不太準確。只有通過結合幾個核函式,才能同時保持資料的週期特性和均值非零的趨勢。比如,這個方法可以用於分析天氣資料。

看得見的高斯過程:這是一份直觀的入門解讀

通過點選核取方塊,我們可以把不同的核函式結合成一個新的高斯過程。只有結合了多個核函式,我們才可能捕捉到更復雜的訓練資料的特性。

結論

讀過本文以後,你應該對高斯過程有了一個整體的印象,更加了解它們是如何運作的。正如我們所見,高斯過程為迴歸問題提供了一個靈活的框架,並且擁有一些擴充功能使它更加通用。如果要處理真實世界的資料,我們經常會發現測量值受到不確定性和誤差的影響。利用高斯過程可以定義一個核函式來擬合我們的資料,併為預測結果增加不確定性。比如,McHutchon 等人 [7] 對高斯過程進行了一個特殊的擴充,使其可以相容包含噪音的輸入。

雖然我們大都在迴歸問題的語境下討論高斯過程,它也可以用在其它的任務上,比如模型剝離和假設檢驗。通過比較不同核函式在資料集上的效果,某個領域的專家可以藉由恰當地結合核函式或是為其選擇引數,來嵌入額外的知識。由於在很多情況下我們無法擁有這樣的專家,人們也在研究如何使用深度學習 [8, 9] 從給定資料中學得專用的核函式。此外,也有多篇論文 [10, 11] 探討了貝葉斯推斷、高斯過程和深度學習之間的聯絡。

看得見的高斯過程:這是一份直觀的入門解讀


相關文章