多維高斯分布


高中的時候我們便學過一維正態(高斯)分布的公式:

\[N(x|u,\sigma^2)=\frac{1}{\sqrt{2\pi \sigma^2}}exp[-\frac{1}{2\sigma^2}(x-u)^2] \]

拓展到高維時,就變成:

\[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)] \]

其中,\(\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\) 的高斯分布函數可以表示為:

\[\begin{eqnarray} f(\overline x) &=& f(x_1,x_2) \\ &=& f(x_1)f(x_2) \\ &=& \frac{1}{\sqrt{2\pi \sigma_1^2}}exp(-\frac{1}{2}(\frac{x_1-u_1}{\sigma_1})^2) \times \frac{1}{\sqrt{2\pi \sigma_2^2}}exp(-\frac{1}{2}(\frac{x_2-u_2}{\sigma_2})^2) \\ &=&\frac{1}{(2\pi)^{2/2}(\sigma_1^2 \sigma_2^2)^{1/2}}exp(-\frac{1}{2}[(\frac{x_1-u_1}{\sigma_1})^2+(\frac{x_2-u_2}{\sigma_2})^2]) \end{eqnarray} \]

接下來,為了推出文章開篇的高維公式,我們要想辦法得到協方差矩陣 \(\Sigma\)

對於二維的向量 \(\overline x\) 而言,其協方差矩陣為:

\[\begin{eqnarray} \Sigma&=&\begin{bmatrix} \sigma_{11} & \sigma_{12} \\ \sigma_{12} & \sigma_{22} \end{bmatrix} \\ &=&\begin{bmatrix} \sigma_1^2 & \sigma_{12} \\ \sigma_{21} & \sigma_{2}^2 \end{bmatrix} \\ \end{eqnarray} \]

(不熟悉協方差矩陣的請查找其他資料或翻看我之前的文章)

由於 \(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) 就可以得到:

\[f(\overline x)=\frac{1}{(2\pi)^{2/2}|\Sigma|^{1/2}}exp(-\frac{1}{2}[(\frac{x_1-u_1}{\sigma_1})^2+(\frac{x_2-u_2}{\sigma_2})^2]) \]

這樣一來,我們已經推出了公式的左半部分,下面,開始處理右面的 \(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()\) 展開:

\[\begin{eqnarray} exp[-\frac{1}{2}(\overline x-\overline u)^T\Sigma^{-1}(\overline x-\overline u)] &=& exp[-\frac{1}{2} \begin{bmatrix} x_1-u_1 \ \ \ x_2-u_2 \end{bmatrix} \frac{1}{\sigma_1^2 \sigma_2^2} \begin{bmatrix} \sigma_2^2 & 0 \\ 0 & \sigma_1^2 \end{bmatrix} \begin{bmatrix} x_1-u_1 \\ x_2-u_2 \end{bmatrix}] \\ &=&exp[-\frac{1}{2} \begin{bmatrix} x_1-u_1 \ \ \ x_2-u_2 \end{bmatrix} \frac{1}{\sigma_1^2 \sigma_2^2} \begin{bmatrix} \sigma_2^2(x_1-u_1) \\ \sigma_1^2(x_2-u_2) \end{bmatrix}] \\ &=&exp[-\frac{1}{2\sigma_1^2 \sigma_2^2}[\sigma_2^2(x_1-u_1)^2+\sigma_1^2(x_2-u_2)^2]] \\ &=&exp[-\frac{1}{2}[\frac{(x_1-u_1)^2}{\sigma_1^2}+\frac{(x_2-u_2)^2}{\sigma_2^2}]] \end{eqnarray} \]

展開到最后,發現推出了公式 (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})\)

首先,我們先寫出似然函數:

\[\begin{eqnarray} f(x_1, x_2, \dots, x_m)&=&\prod_{i=1}^{m}\frac{1}{\sqrt{2\pi}\sigma}exp(-\frac{(x_i-\tilde \mu)^2}{2\sigma^2}) \\ &=&(2\pi \sigma^2)^{-\frac{m}{2}}exp(-\frac{\sum_{i=1}^n{(x_i-\tilde \mu)^2}}{2\sigma^2}) \end{eqnarray} \]

然后取對數:

\[\ln{f(x_1, x_2, \dots, x_m)}=-\frac{m}{2}\ln{(2\pi \sigma^2)}-\frac{1}{2\sigma^2}\sum_{i=1}^n{(x_i-\tilde \mu)^2} \]

求出導數,令導數為 0 得到似然方程:

\[\frac{\partial \ln f}{\partial \overline \mu}=\frac{1}{\sigma^2}\sum_{i=1}^{n}{(x_i-\tilde \mu)}=0 \]

\[\frac{\partial \ln{f}}{\partial \sigma}=-\frac{m}{\sigma}+\frac{1}{\sigma^3}\sum_{i=1}^n{(x_i-\tilde \mu)}=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 的書中,推導的過程更加全面,也復雜了許多,想深入學習多維高斯模型的還是參考教材為准。

重新對比一維和多維的公式:

\[N(x|u,\sigma^2)=\frac{1}{\sqrt{2\pi \sigma^2}}exp[-\frac{1}{2\sigma^2}(x-u)^2] \]

\[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)] \]

其實二者是等價的。一維中,我們針對的是一個數,多維時,則是針對一個個向量求分布。如果向量退化成一維,則多維公式中的 \(D=1\)\(\Sigma=\sigma^2\)\(\Sigma^{-1}=\frac{1}{\sigma^2}\),這時多維公式就退化成一維的公式。所以,在多維的公式中,我們可以把 \(\Sigma\) 當作是樣本向量的標准差。

參考


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM