高中的時候我們便學過一維正態(高斯)分布的公式:
拓展到高維時,就變成:
其中,\(\overline x\) 表示維度為 D 的向量,\(\overline u\) 則是這些向量的平均值,\(\Sigma\) 表示所有向量 \(\overline x\) 的協方差矩陣。
本文只是想簡單探討一下,上面這個高維的公式是怎么來的。
二維的情況
為了簡單起見,本文假設所有變量都是相互獨立的。即對於概率分布函數 \(f(x_0,x_1,…,x_n)\) 而言,有 \(f(x_0,x_1,…,x_n)=f(x_0)f(x_1)f(x_n)\) 成立。
現在,我們用一個二維的例子推出上面的公式。
假設有很多變量 \(\overline x=\begin{bmatrix} x_1 \\ x_2 \end{bmatrix}\),它們的均值為 \(\overline u=\begin{bmatrix} u_1 \\ u_2 \end{bmatrix}\),方差為 \(\overline \sigma=\begin{bmatrix} \sigma_1 \\ \sigma_2 \end{bmatrix}\)。
由於 \(x_1\),\(x_2\) 是相互獨立的,所以,\(\overline x\) 的高斯分布函數可以表示為:
接下來,為了推出文章開篇的高維公式,我們要想辦法得到協方差矩陣 \(\Sigma\)。
對於二維的向量 \(\overline x\) 而言,其協方差矩陣為:
(不熟悉協方差矩陣的請查找其他資料或翻看我之前的文章)
由於 \(x_1\),\(x_2\) 是相互獨立的,所以 \(\sigma_{12}=\sigma_{21}=0\)。這樣,\(\Sigma\) 退化成 \(\begin{bmatrix} \sigma_1^2 & 0 \\ 0 & \sigma_{2}^2 \end{bmatrix}\)。
則 \(\Sigma\) 的行列式 \(|\Sigma|=\sigma_1^2 \sigma_2^2\),代入公式 (4) 就可以得到:
這樣一來,我們已經推出了公式的左半部分,下面,開始處理右面的 \(exp\) 函數。
原始的高維高斯函數的 \(exp\) 函數為:\(exp[-\frac{1}{2}(\overline x-\overline u)^T\Sigma^{-1}(\overline x-\overline u)]\),根據前面算出來的 \(\Sigma\),我們可以求出它的逆:\(\Sigma^{-1}=\frac{1}{\sigma_1^2 \sigma_2^2} \begin{bmatrix} \sigma_2^2 & 0 \\ 0 & \sigma_1^2 \end{bmatrix}\)。
接下來根據這個二維的例子,將原始的 \(exp()\) 展開:
展開到最后,發現推出了公式 (4)。說明原公式 \(N(\overline x | \overline u, \Sigma)=\frac{1}{(2\pi)^{D/2}}\frac{1}{|\Sigma|^{1/2}}exp[-\frac{1}{2}(\overline x-\overline u)^T\Sigma^{-1}(\overline x-\overline u)]\) 是成立的。你也可以將上面展開的過程逆着推回去,一樣可以從例子中的公式 (4) 推出多維高斯公式。
函數圖像
知道多維的公式后,下面再簡單比較一下一維和二維的圖像區別。
上圖展示的是 4 個一維高斯函數的圖像。高斯函數是一個對稱的山峰狀,山峰的中心是均值 \(u\),山峰的「胖瘦」由標准差 \(\sigma\) 決定,如果 \(\sigma\) 越大,證明數據分布越廣,那么山峰越「矮胖」,反之,則數據分布比較集中,因此很大比例的數據集中在均值附近,山峰越「瘦高」。在偏離均值 \(u\) 三個 \(\sigma\) 的范圍外,數據出現的概率幾乎接近 0,因此這一部分的函數圖像幾乎與 x 軸重合。
下面看二維的例子:
有了一維圖像的例子,二維圖像就可以類比出來了。如果說,一維只是山峰的一個橫截面,那么二維則是一個完整的有立體感的山峰。山峰的「中心」和「胖瘦」和一維的情況是一致的,而且,對於偏離中心較遠的位置,數據出現的概率幾乎為 0,因此,函數圖像在這些地方就逐漸退化成「平原」了。
參數估計
另外,如果給定了很多數據點,並且知道它們服從某個高斯分布,我們要如何求出高斯分布的參數(\(\mu\) 和 \(\Sigma\))呢?
當然,估計模型參數的方法有很多,最常用的就是極大似然估計。
簡單起見,拿一維的高斯模型舉例。假設我們有很多數據點:\((x_1, x_2, x_3, \dots, x_m)\),它們的均值是\(\tilde u\)。一維高斯函數是:\(p(x|\mu, \sigma^2)=\frac{1}{\sqrt{2\pi}\sigma}exp(-\frac{(x-\mu)^2}{2\sigma^2})\)
首先,我們先寫出似然函數:
然后取對數:
求出導數,令導數為 0 得到似然方程:
我們可以求出:\(\mu=\frac{1}{m}\sum_{i=1}^m{(x_i-\tilde \mu)}\),\(\sigma=\sqrt{\frac{1}{m}\sum_{i=1}^m{(x_i-\tilde \mu)^2}}\),可以看到,這其實就是高斯函數中平均值和標准差的定義。
對於高維的情況,平均值和協方差矩陣也可以用類似的方法計算出來。
總結
本文只是從一個簡單的二維例子出發,來說明多維高斯公式的來源。在 PRML 的書中,推導的過程更加全面,也復雜了許多,想深入學習多維高斯模型的還是參考教材為准。
重新對比一維和多維的公式:
其實二者是等價的。一維中,我們針對的是一個數,多維時,則是針對一個個向量求分布。如果向量退化成一維,則多維公式中的 \(D=1\),\(\Sigma=\sigma^2\),\(\Sigma^{-1}=\frac{1}{\sigma^2}\),這時多維公式就退化成一維的公式。所以,在多維的公式中,我們可以把 \(\Sigma\) 當作是樣本向量的標准差。