我們可以將輸出繪制成輸入的函數(shù)圖像。下面的線只是一個常規(guī)的非隨機(jī)函數(shù),即weight=g(height)或y=g(x)。

在本節(jié)中,我們使用符號g(x)表示一個非隨機(jī)函數(shù),而使用f(x)表示一個隨機(jī)函數(shù)。
為了更輕松地生成訓(xùn)練數(shù)據(jù),我們將切換到一個新模型y=sin(x)。我們使用這個方程生成2個訓(xùn)練數(shù)據(jù)點(diǎn)(下面的2個藍(lán)點(diǎn))來構(gòu)建一個高斯模型。然后從
中采樣三次,如下面的三條實(shí)線所示。

我們看到,這2個訓(xùn)練數(shù)據(jù)點(diǎn)強(qiáng)制
在藍(lán)點(diǎn)相交。如果我們持續(xù)采樣,我們將開始直觀地識別每個
的
的平均值和范圍。例如,下面的紅點(diǎn)和藍(lán)線估計了
=?3.8時
的均值和方差。由于
介于2個訓(xùn)練點(diǎn)之間,因此估計具有相對較高的不確定性(由σ表示)。

在下面的圖中,我們有5個訓(xùn)練數(shù)據(jù),并從
中采樣30條線。紅色虛線表示
的均值輸出值
,灰色區(qū)域是離
不超過2
的范圍。
如前所述,每條線都像一個函數(shù),將輸入映射到輸出:y=g(x)。我們從許多可能的函數(shù)g開始,但是訓(xùn)練數(shù)據(jù)集會降低或增加某些函數(shù)的可能性。從技術(shù)上講,
模擬了給定訓(xùn)練數(shù)據(jù)集的函數(shù)g的可能性分布(上述繪制的線的概率分布)。
高斯過程(GP)的特點(diǎn)是構(gòu)建高斯模型來描述函數(shù)的分布。
我們不會通過采樣來解決這個問題,而是通過分析方法來解決。
回到:

我們可以將表達(dá)式推廣為以下形式,其中f是訓(xùn)練集的標(biāo)簽(體重),
是我們要預(yù)測
的體重?,F(xiàn)在我們需要使用高斯模型來解決p(
|f)的問題。

回想一下之前關(guān)于多元高斯定理的部分,如果我們有一個模型:

我們可以通過以下方式求
:

現(xiàn)在,我們應(yīng)用這些公式來解決p(
|f)的問題:

對于訓(xùn)練數(shù)據(jù)集,假設(shè)輸出標(biāo)簽f服從高斯分布:

并且假設(shè)
的高斯分布為:

其中,L定義為:

然后根據(jù)多元高斯定理,我們有:

我們將應(yīng)用這些公式來模擬采樣自y=sin(x)的訓(xùn)練數(shù)據(jù)。在這個例子中,由于sin函數(shù)的均值為0,所以μ=
=0。因此,我們的方程將簡化為:

請注意,矩陣K可能難以求逆。因此,我們首先應(yīng)用Cholesky分解對K進(jìn)行分解,然后應(yīng)用線性代數(shù)來解決
。

表示使用線性代數(shù)方法來求Ax=b方程的解x。
在求
之前,我們需要預(yù)先計算一些項(xiàng):

應(yīng)用
和上面的方程:

現(xiàn)在我們有計算
和
的方程:
代碼
首先,準(zhǔn)備訓(xùn)練數(shù)據(jù),并通過sin函數(shù)打標(biāo)簽。訓(xùn)練數(shù)據(jù)包含5個數(shù)據(jù)點(diǎn)(
=?4,?3,?2,?1和1)。
Xtrain = np.array([-4, -3, -2, -1, 1]).reshape(5,1)
ytrain = np.sin(Xtrain) # Our output labels.
測試數(shù)據(jù):我們創(chuàng)建50個新數(shù)據(jù)點(diǎn),在-5和5之間線性分布,由高斯過程進(jìn)行預(yù)測。
# 50 Test data
n = 50
Xtest = np.linspace(-5, 5, n).reshape(-1,1)
在這里,我們定義一個核函數(shù),使用指數(shù)平方核度量兩個數(shù)據(jù)點(diǎn)之間的相似性。
# A kernel function (aka Gaussian) measuring the similarity between a and b. 1 means the same.
def kernel(a, b, param):
sqdist = np.sum(a**2,1).reshape(-1,1) + np.sum(b**2,1) - 2*np.dot(a, b.T)
return np.exp(-.5 * (1/param) * sqdist)
計算核(K,
,
):
K = kernel(Xtrain, Xtrain, param) # Shape (5, 5)
K_s = kernel(Xtrain, Xtest, param) # Shape (5, 50)
K_ss = kernel(Xtest, Xtest, param) # Kss Shape (50, 50)
我們將使用Cholesky分解對K進(jìn)行分解,即
。
L = np.linalg.cholesky(K + 0.00005*np.eye(len(Xtrain))) # Shape (5, 5)
計算我們的預(yù)測的輸出均值
。由于我們假設(shè)μ?=μ=0,因此該方程變?yōu)椋?/p>

L = np.linalg.cholesky(K + 0.00005*np.eye(len(Xtrain))) # Add some nose to make the solution stable
# Shape (5, 5)
# Compute the mean at our test points.
Lk = np.linalg.solve(L, K_s) # Shape (5, 50)
mu = np.dot(Lk.T, np.linalg.solve(L, ytrain)).reshape((n,)) # Shape (50, )
計算 σ
# Compute the standard deviation.
s2 = np.diag(K_ss) - np.sum(Lk**2, axis=0) # Shape (50, )
stdv = np.sqrt(s2) # Shape (50, )
采樣
以便我們可以繪制它的圖像。

使用μ和L作為方差來對其進(jìn)行采樣:

L = np.linalg.cholesky(K_ss + 1e-6*np.eye(n) - np.dot(Lk.T, Lk)) # Shape (50, 50)
f_post = mu.reshape(-1,1) + np.dot(L, np.random.normal(size=(n,5))) # Shape (50, 3)
我們采樣了3個可能的輸出,分別用橙色、藍(lán)色和綠色線表示?;疑珔^(qū)域是離μ不超過2σ的范圍。藍(lán)點(diǎn)是我們的訓(xùn)練數(shù)據(jù)集。在藍(lán)點(diǎn)處,σ更接近于0。對于訓(xùn)練數(shù)據(jù)點(diǎn)之間的點(diǎn),σ增加反映了它的不確定性,因?yàn)樗唤咏?xùn)練數(shù)據(jù)點(diǎn)。當(dāng)我們移動到x=1之外時,就沒有更多的訓(xùn)練數(shù)據(jù)了,并且導(dǎo)致σ變大。

這是另一個在觀察5個數(shù)據(jù)點(diǎn)后的后驗(yàn)概率圖。藍(lán)點(diǎn)是我們的訓(xùn)練數(shù)據(jù)點(diǎn),灰色區(qū)域展示了預(yù)測的不確定性(方差)。

高斯混合模型
高斯混合模型是一種概率模型,它假設(shè)所有數(shù)據(jù)點(diǎn)都來自于高斯分布的混合物。
對于K=2,我們將有兩個高斯分布G1=(μ1,σ21)和G2=(μ2,σ22)。我們從隨機(jī)初始化參數(shù)μ和σ開始。高斯混合模型嘗試將訓(xùn)練數(shù)據(jù)點(diǎn)適合到G1和G2中,然后重新計算它們的參數(shù)。數(shù)據(jù)點(diǎn)被重新擬合并且參數(shù)再次計算。迭代將繼續(xù)直到解決方案收斂。


EM算法
使用隨機(jī)值初始化G1和G2的參數(shù)(μ1,σ21)和(μ2,σ22),并將P(a)=P(b)=0.5。
對于所有的訓(xùn)練數(shù)據(jù)點(diǎn)x1,x2,?,計算它屬于a(G1)或b(G2)的概率。

現(xiàn)在,我們重新計算G1和G2的參數(shù):

重新計算先驗(yàn)概率:

對于多元高斯分布,其概率分布函數(shù)為:

-
函數(shù)
+關(guān)注
關(guān)注
3文章
4418瀏覽量
67582 -
機(jī)器學(xué)習(xí)
+關(guān)注
關(guān)注
66文章
8556瀏覽量
137018 -
gpa
+關(guān)注
關(guān)注
0文章
7瀏覽量
4860 -
高斯分布
+關(guān)注
關(guān)注
0文章
6瀏覽量
2882
發(fā)布評論請先 登錄
吳恩達(dá)機(jī)器學(xué)習(xí)筆記分享
高斯過程回歸GPR和多任務(wù)高斯過程MTGP
基于高斯過程回歸學(xué)習(xí)的頻譜分配算法
機(jī)器學(xué)習(xí)的個人學(xué)習(xí)筆記
python機(jī)器學(xué)習(xí)筆記資料免費(fèi)下載
什么是高斯過程 神經(jīng)網(wǎng)絡(luò)高斯過程解析
機(jī)器學(xué)習(xí)筆記之高斯過程(上)
PyTorch教程18.1之高斯過程簡介
PyTorch教程18.2之高斯過程先驗(yàn)
PyTorch教程18.3之高斯過程推理
機(jī)器學(xué)習(xí)筆記之高斯過程(下)
評論