PPCA(Probability PCA)

伯克利的機器學習課的note當中簡要介紹了一下PPCA, 但是我看了感覺沒寫什麼東西。Yu姐上PPCA那節課我翹了,導致我對於PPCA幾乎是一無所知。碰巧翻了一下工大自己的機器學習課的ppt,翻到了關於PPCA的內容,所以就結合CS189的note瞭解了一下PPCA。

1. Key assumptions

PPCA假設所有的樣本點都取樣於某個分佈 xRd{\bf x} \in {\Bbb R}^{d},對於每個點xix_i,都有一個 ziz_i與之對應,取樣於某個分佈 zRk{\bf z} \in {\Bbb R}^{k}, 滿足以下條件:
x=Wz+μ+ϵ,WRd×k,μRd,ϵRd,ϵN(0,σ2I){\bf x} = W{\bf z}+\mu +\epsilon , W \in {\Bbb R}^{d \times k}, \mu \in {\Bbb R}^{d }, \epsilon \in {\Bbb R}^{d}, \epsilon \sim N(0,\sigma^2I)
其中W,μW,\mu都是常數,ϵ\epsiloniidiid 的 noise

這個 z{\bf z} 被稱爲latent variable

關於latent variable,可以簡單的理解爲我們看不見(觀測不到)的變量,是我們希望從可觀測到的變量推斷的一個變量。

因爲高斯分佈的條件分佈、聯合分佈都是高斯分佈,所以,我們可以得到:
E[x]=E[μ+Wz+ϵ]=μE[x] = E[\mu + Wz + \epsilon] = \mu
C=Cov[x]=E[(μ+Wz+ϵμ)(μ+Wz+ϵμ)T]=E[(Wz+ϵ)(Wz+ϵ)T]=WWT+σ2IC = Cov[x]=E[(\mu+Wz+\epsilon -\mu)(\mu+Wz+\epsilon -\mu)^T] = E[(Wz+\epsilon)(Wz+\epsilon)^T] = WW^T + \sigma^2I

所以,
p(xθ)N(μ,WWT+σ2I)p(x|\theta) \sim N(\mu, WW^T + \sigma^2I)

2. Maximum Likelihood Estimation

對於一個概率分佈模型,我們常用的手段是 MLE
L(θ;X)=i=1Nlog(p(xiθ))=N2log(C)12i=1n(xnμ)TC1(xnμ)\mathcal {L}(\theta ;X) = \sum_{i = 1}^Nlog(p(x_i|\theta))= -\frac{N}{2}log(|C|) - \frac{1}{2}\sum_{i = 1}^{n}(x_n-\mu)^TC^{-1}(x_n-\mu)

最終我們得到:
L(θ;X)=N2log(C)12Tr(C1i=1n(xnμ)(xnμ)T)\mathcal {L}(\theta ;X) =-\frac{N}{2}log(|C|) - \frac{1}{2}Tr(C^{-1}\sum_{i = 1}^{n}(x_n-\mu)(x_n-\mu)^T)
argmaxL(θ;X)=argminL(θ;X)=argmin {N2log(C)+12Tr(C1i=1n(xnμ)(xnμ)T)}argmax\mathcal {L}(\theta ;X)= argmin-\mathcal {L}(\theta ;X) = argmin \space \{\frac{N}{2}log(|C|) + \frac{1}{2}Tr(C^{-1}\sum_{i = 1}^{n}(x_n-\mu)(x_n-\mu)^T)\}

3.Optimize over the object function

首先先貼幾個公式:
dtr(X)=tr(dX)dtr(X) = tr(dX)
dX1=X1dXX1dX^{-1} =-X^{-1}dXX^{-1}
Tr(ABC)=Tr(BCA)=Tr(CAB)Tr(ABC) = Tr(BCA) = Tr(CAB)
dX=tr(XdX)=XTr(X1dX)(X)d|X| = tr(X^*dX)=|X|\cdot Tr(X^{-1}dX)(如果X可逆)XX^*是伴隨矩陣
直接考慮關於WW的梯度過於困難,可以先考慮關於CC的梯度:

LC=N2Clog(C)+N2CTr(C1S)\frac{\partial \mathcal {L}}{\partial C} =\frac{N}{2}\cdot \frac{\partial }{\partial C} log(|C|)+\frac{N}{2}\cdot \frac{\partial }{\partial C} Tr(C^{-1}S) S=i=1n(xnμ)(xnμ)TS = \sum_{i = 1}^{n}(x_n-\mu)(x_n-\mu)^T

d(log(C))=1CdC=Tr(C1dC) d(log(|C|) )= \frac{1}{C}\cdot d|C| = Tr(C^{-1}dC)
dTr(C1S)=Tr(dC1S)=Tr(C1dCC1S)=Tr(C1SC1dC)dTr(C^{-1}S) = Tr(dC^{-1}\cdot S) = Tr(-C^{-1}\cdot dC\cdot C^{-1}S) = Tr(-C^{-1}SC^{-1}\cdot dC)

所以,
dL=N2Tr((C1C1SC1)dC)dL = \frac{N}{2}Tr((C^{-1}-C^{-1}SC^{-1})\cdot dC)
根據導數和微分的聯繫,
LC=C1C1SC1\frac{\partial L}{\partial C} = C^{-1}-C^{-1}SC^{-1}
所以,將其置爲0求極值:
S=CS = C
S=WWT+σ2IS = WW^T+\sigma^2I
對兩邊進行SVD,得到
W=US(Λσ2I)2RW = U_S(\Lambda-\sigma^2I)^{-2}R
USU_SSS的特徵向量矩陣,Λ\LambdaSS的特徵值矩陣, RR是任意正交矩陣(一般取SS的左奇異矩陣)
之後對這個結果取d-rank approximation即可,d就是你想得到的PC的個數

至此爲止,我們通過概率模型得到了我們通過一般PCA得到的結果

4. References

  1. Tipping, M. E., & Bishop, C. M. (1999). Probabilistic principal component analysis
  2. 哈工大2019年秋季機器學習課程slides的ppca部分(p16-p27)
  3. note 10, CS189, UC Berkeley
  4. https://zhuanlan.zhihu.com/p/24709748

這裏僅僅是推導,以後如果有時間的話我再深入理解下ppca……

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章