您當前的位置:首頁 > 舞蹈

EdX-Columbia機器學習課第5講筆記:貝葉斯線性迴歸

作者:由 TimsonShi 發表于 舞蹈時間:2017-03-14

Bayes線性迴歸

MAP估計和ML估計都是對模型引數的

點估計

,也就是說它為向量

w

找到一個確定的值,這個值可以最大化目標函式。其中ML只考慮資料模型

p(y|w, X)

,而MAP還考慮到了模型的先驗

p(y,w|X) = p(y|w, X)p(w)

。在這個基礎上,貝葉斯推斷還使用貝葉斯定律進一步地推斷

w

的不確定性

考慮到後驗分佈正比於似然與先驗分佈的乘積,可以得出

\begin{aligned}
p(w|y,X) &\propto p(y|w, X)p(w) \\
&\propto \left[e^{-\frac{1}{2\sigma^2}(y-Xw)^T(y-Xw)}\right]\left[e^{-\frac{\lambda}{2}w^Tw}\right] \\
&\propto e^{-\frac{1}{2}\{w^T(\lambda I + \sigma^{-2}X^TX)w - 2\sigma^{-2}w^TX^Ty\}}
\end{aligned}

可以看出,

p(w|y,X)

也滿足高斯分佈。因為高斯分佈在指數上有一個

(w-\mu)^T\Sigma^{-1}(w-\mu)

,如果把機率密度函式展開,則是

\begin{aligned}
p(w|\mu, \Sigma) &= \frac{1}{\sqrt{(2\pi)^d|\Sigma|}}\exp\left(-\frac{1}{2}(w - \mu)^T\Sigma^{-1}(w - \mu)\right) \\
&= \frac{1}{(2\pi)^{\frac{d}{2}}|\Sigma|^{\frac{1}{2}}}\exp\left(-\frac{1}{2}(w^T\Sigma^{-1}w - 2w^T\Sigma^{-1}\mu + \mu^T\Sigma^{-1}\mu)\right)
\end{aligned}

而由前面的推導,有

p(w|y,X) = \frac{1}{Z}\exp\left(-\frac{1}{2}(w^T(\lambda I + \sigma^{-2}X^TX)w - 2w^TX^Ty / \sigma^2)\right)

因此只需要令

\Sigma^{-1} = (\lambda I + \sigma^{-2}X^TX),\ \ \ \Sigma^{-1}\mu = X^Ty/\sigma^2

p(w|y,X)

就可以寫成正態分佈機率密度函式的形式。此時

Z = (2\pi)^{\frac{d}{2}}|\Sigma|^{\frac{1}{2}}e^{\frac{1}{2}\mu^T\Sigma^{-1}\mu}

\begin{aligned}
p(w|y,X) &= N(w|\mu, \Sigma) \\
\Sigma &= (\lambda I + \sigma^{-2}X^TX)^{-1} \\
\mu &= (\lambda \sigma^2 I + X^TX)^{-1}X^Ty \Leftarrow w_{\rm MAP}
\end{aligned}

這樣我們就獲得了關於

w

的完整的機率分佈

類似的,我們對預測值也可以給一個機率解釋。給定

X

y

作為訓練集,對新的

x_0

預測

y_0

,就是求條件機率

p(y_0|x_0, y, X)

。根據邊緣機率和聯合機率密度的定義,是對所有可能的

w

的積分,即

\begin{aligned}
p(y_0|x_0, y, X) &= \int_{\mathbb{R}^d}p(y_0, w|x_0, y, X)dw \\
&= \int_{\mathbb{R}^d}p(y_0|w,x_0,y,X)p(w|x_0, y,X)dw
\end{aligned}

又根據條件獨立性有

\begin{aligned}
p(y_0|w,x_0,y,X) &= p(y_0|w,x_0) \ \ {\rm (likelihood)} \\
p(w|x_0,y,X) &= p(w|y,X) \ \ {\rm (posterior)}
\end{aligned}

因此可以得到預測的分佈

p(y_0|x_0,y,X) = \int_{\mathbb{R}^d}p(y_0|x_0,w)p(w|y,X)dw

由於根據模型本身有

p(y_0|x_0,w) = N(y_0|x_0^Tw, \sigma^2)

,根據貝葉斯定律,有

p(w|y,X)=N(w|\mu,\Sigma)

(其中

\mu

\Sigma

前面已有推導),則代入計算(比較複雜沒有推),有

\begin{aligned}
p(y_0|x_0,y,X) &= N(y_0|\mu_0, \sigma^2_0) \\
\mu_0 &= x_0^T\mu \\
\sigma^2_0 &= \sigma^2 + x_0^T\Sigma x_0
\end{aligned}

期望值仍然是MAP估計的值,但是現在可以得到方差

主動學習

貝葉斯學習實際上可以看作是一個順序的過程,也就是說,原本的後驗,在看到一些資料以後,會變成接下來未知資料的先驗。令

y

X

是“老資料”,

y_0

x_0

是“新資料”,那麼根據貝葉斯定律

p(w|y_0, x_0, y, X) \propto p(y_0|w, x_0)p(w|y,X)

看到$(y,X)$以後的後驗又變成了

(y_0,x_0)

的先驗。即

\begin{aligned}
p(w|y_0,x_0,y,X) &= N(w|\mu, \Sigma), \\
\Sigma &= \left(\lambda I + \sigma^{-2}(x_0x_0^T + \sum_{i=1}^n x_ix_i^T)\right)^{-1} \\
\mu &= \left(\lambda \sigma^2 I + (x_0x_0^T + \sum_{i=1}^n x_ix_i^T)\right)^{-1}\left(x_0y_0 + \sum_{i=1}^n x_iy_i\right)
\end{aligned}

這裡的意思是,在最開始沒有看到

x_0, y_0

,只有

X,y

的時候,計算出來的

p(w|y,X)

是後驗。但是當計算完了,來了新資料對的時候,計算新的後驗是用到的先驗

p(w)

實際上是

p(w|y,X)

,是上一步的後驗。一步一步滾雪球。既然是一個迭代的過程,那麼我們的問題是,能否智慧地學習

p(w|y,X)

?也就是,對於

\mathcal{D} = \{x_1, \ldots, x_n\}

,能否選擇一個迭代學習的順序?

假設我們已經有了有標籤的資料集

(y,X)

和後驗

p(w|y,X)

,則可以對

\mathcal{D}

中的其他

x_0

構建預測分佈:

\begin{aligned}
p(y_0|x_0,y,X) &= N(y_0|\mu_0, \sigma^2_0) \\
\mu_0 &= x_0^T\mu \\
\sigma^2_0 &= \sigma^2 + x_0^T\Sigma x_0
\end{aligned}

對每個

x_0

\sigma^2_0

反映了我們的置信度,也就是說可以採用以下策略:

1。 對所有沒有標籤的

x_0 \in \mathcal{D}

構建

p(y_0|x_0, y, X)

2。 找出

\sigma^2_0

最大的

x_0

和其對應的

y_0

3。 更新後驗

p(w|y,X)

,注意用到的

y \leftarrow (y, y_0), X \leftarrow (X, x_0)

4。 使用更新的後驗,回到第一步

這個過程實際上是減少了系統中的熵(也就是不確定性)。令一個

p(z)

代表一個連續分佈,則其熵定義為

\mathcal{H}(p) = -\int p(z)\ln p(z)dz

它量度了分佈的延展情況。該值越大說明分佈越是一個“不確定”的分佈(即方差越大)。多變數高斯分佈的熵為

\mathcal{H}(N(w|\mu, \Sigma)) = \frac{d}{2}\ln\left(2\pi e|\Sigma|\right)

也就是高斯分佈的熵隨著其協方差矩陣的變化而變化。根據前面順序貝葉斯學習的理論,協方差矩陣從先驗變到後驗

\begin{aligned}
({\rm Prior}):\ (\lambda I + \sigma^{-2}X^TX)^{-1}\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ &\equiv \Sigma \\
\Downarrow \\
({\rm Posterior}):\ (\lambda I + \sigma^{-2}(x_0x_0^T+X^TX))^{-1} &\equiv (\Sigma^{-1} + \sigma^{-2}x_0x_0^T)^{-1}
\end{aligned}

根據秩為1矩陣的行列式的更新性質,有

\mathcal{H}_{\rm post} = \mathcal{H}_{\rm prior} - \frac{d}{2}\ln(1+\sigma^{-2}x_0^T\Sigma x_0)

因此最小化

\mathcal{H}_{\rm post}

x_0

也最大化了

\sigma^2 + x_0^T\Sigma x_0

模型選擇

其實就是如何選擇

\lambda

。貝葉斯學習還可以透過證據最大化(evidence maximization)來表達,即

p(w|y,X,\lambda) = p(y|w,X)p(w|\lambda) / p(y|X, \lambda)

這裡分母就是“證據”。證據給出了資料的似然,而且把

w

積分掉了。最好的

\hat{\lambda}

滿足

\hat{\lambda} = {\rm arg}\max_\lambda \ln p(y|X, \lambda)

p(y|X,\lambda)

也是正態分佈,可以表示成

p(y|X,\lambda) = N(y|0, \sigma^2 I + \lambda^{-1}X^TX)

,需要求出

\lambda

的最大值。這個值只能迭代求出,沒有解析解

之前的最大似然是最大化主引數

w

的似然,稱為I類機器學習。這裡是把主引數積分掉,最大化超引數

\lambda

,是II類機器學習,也稱為經驗Bayes。但是對複雜模型不適用。因此最好的找出

\lambda

的方法還是交叉驗證