PRML筆記|線代拾遺(1)

  今天看PRML的時候發現看到下圖最後一步的時候,一下子沒反應過來:嘎???怎麼肥四?看來線代是旁聽的水平果然不行呀(淚奔)~~~慶幸的是發現推導過程超級easy,這裡記錄下來,備忘;同時提醒自己好好補習線代知識。

Fig. 1. 截圖自PRML。

  上述推導過程的核心主要是:

 (x_n-mu_1)^TSigma^{-1}(x_n-mu_1)=tr{Sigma^{-1}(x_n-mu_1)(x_n-mu_1)^T}

,其中 Sigma 是實對稱矩陣,即 Sigma^T=Sigma 。這裡為了推導方便,我們將推導項簡化為:

x^TAx=tr(Axx^T)

,其中 x=(x_1,x_2,...,x_D)^T ,A是實對稱矩陣,其矩陣元 a_{ij}=a_{ji}

  然後用最直接的辦法來推導。首先算左邊,左邊其實就是二項式表達,詳細寫出其表達式為:

x^TAx = sum_{i=j=1}^D a_{ii}x_i^2 + sum_{i
e j,i,j=1}^{D}a_{ij}x_ix_j

  仔細觀察這個表達式,發現這個有點類似matlab中的「點乘」運算,即矩陣對應位置(下標相同)的元素相乘,之後再將所有元素求和,大概是:

sum_{    all \elements}A.*X , X_{ij}=x_ix_j

  而身經百戰的我們也很容易火眼金睛地發現 X 其實很容易寫成如下和 x 相關的表達式:

X = xx^T

  因此,我們所求的二項式的表達可以寫成:

x^TAx=sum_{    all \elements}A.*(xx^T)

  這時候,我們要利用下之前 A是實對稱矩陣這一性質,然後再考慮到 A和 xx^T 的對應矩陣元相乘這一事實,怎麼才能使下標對應呢?當然是讓A的第i行乘以 xx^T 的第i列了,我們令 B=A(xx^T) ,所求的其實是B的對角項:

B_{11} = a_{11}x_1^2 + a_{12}x_1x_2+a_{13}x_1x_3+...a_{1D}x_1x_D\ B_{22} = a_{21}x_1^2 + a_{22}x_2^2+a_{23}x_2x_3+...a_{2D}x_2x_D\ ...\ B_{DD} = a_{D1}x_1^2 + a_{D2}x_1x_2+a_{D3}x_1x_3+...a_{DD}x_D^2

  好了,以上帝視角的我們知道,只要將B的所有對角元加起來也就是B的trace: tr(B) 即是我們最初的二項式:

x^TAx=tr(B)=tr(Axx^T)

  為什麼大費周章地做了這樣一番運算呢?在截圖中的式(4.77)中來說,其實是為了把 Sigma^{-1} 單獨提出來,這樣後面的與 Sigma^{-1} 無關的項就可以毫無顧忌地做求和運算啦!!!hooray!!!

  另一方面,式中的 S_1S_2 看起來好像十分眼熟?是不是很想co-variance matrix的寫法?沒錯的,就是協方差矩陣。而 S = frac{N_1}{N}S_1+ frac{N_2}{N}S_2 ,相當於是對兩個類的協方差矩陣的加權平均。將式4.77對 Sigma 求偏導可得:

frac{partial Omega}{partial Sigma}= -frac{N}{2}(Sigma^{-1}-Sigma^{-1}SSigma^{-1})=0\ Omega = -frac{N}{2}(ln|Sigma|+tr(Sigma^{-1}S))

可得: Sigma = S ,即在輸入為高斯分布的前提下,用maximum likelihood求出的協方差矩陣是局部協方差矩陣的加權平均。(上述偏導的推導來自於matrix cookbook)

注: 上述推導來自於PRML第四章,從概率生成模型的角度對線性分類進行分析。

參考資料:

  1. Pattern Recognition and Machine Learning. Christopher M. Bishop.
  2. The Matrix Cookbook. Kaare Brandt Petersen and Michael Syskind Pedersen.

推薦閱讀:

機器學習演算法簡介
基於模糊層次綜合評價法和聚類演算法的多人戰鬥競技類遊戲平衡性分析
一文弄懂神經網路中的反向傳播法——BackPropagation
深度森林(deep forest)

TAG:機器學習 | PRML | 線性代數 |