Fishe向量Fisher Vecotr(二)_Fishe向量

來源:互聯網
上載者:User

在Fisher Vector(1)中介紹了線性核,為了滿足不同的需求,實際應用中會使用多種多樣的核函數,Fisher Kernel就是其中的一種。 Fisher Kernel

此時仍舊對於一個 (1,−1) (1,−1)的二分類問題,我們要學習 P(x,y)=P(x|y)P(y) P(x,y)=P(x|y)P(y)

因為 

故 P(x,y)=P(x|y)P(y)=P(X|θy)P(y) P(x,y)=P(x|y)P(y)=P(X|θy)P(y)。

則 

若 P(y)=P(y¯) P(y)=P(y¯),那麼上式可寫為 P(y|x)=σ(lnP(x|θy¯)−lnP(x|θy)) P(y|x)=σ(lnP(x|θy¯)−lnP(x|θy))

對 lnP(x|θy) lnP(x|θy)做一階泰勒展開,有 lnP(x|θy)≈lnP(x|θ)+(θy−θ)ln′P(x|θ) lnP(x|θy)≈lnP(x|θ)+(θy−θ)ln′P(x|θ)

相應的有 lnP(x|θy¯)≈lnP(x|θ)+(θy¯−θ)ln′P(x|θ) lnP(x|θy¯)≈lnP(x|θ)+(θy¯−θ)ln′P(x|θ)

將這兩個展開式帶入上式: P(y|x)=σ((θy−θy¯)ln′P(x|θ)) P(y|x)=σ((θy−θy¯)ln′P(x|θ))

令 Ux=ln′P(x|θ)=∂∂θlnP(x|θ) Ux=ln′P(x|θ)=∂∂θlnP(x|θ),這就是Fisher Score. 故 P(y|x)=σ((θy−θy¯)Ux)=σ((θ1−θ−1)Ux) P(y|x)=σ((θy−θy¯)Ux)=σ((θ1−θ−1)Ux)

這裡引入一個Kullback–Leibler divergence的概念,也叫做相對熵,這個值通常用來計算兩個分布之間的距離,比如 θ1和θ−1 θ1和θ−1之間的距離為: DKL(θ1||θ−1)=∫∞−∞P(x|θ1)lnP(x|θ1)P(x|θ−1)dx DKL(θ1||θ−1)=∫−∞∞P(x|θ1)lnP(x|θ1)P(x|θ−1)dx

而 ∫∞−∞P(x|θ)∂∂θlnP(x|θ)dx=∫∞−∞P(x|θ)∂∂θP(x|θ)P(x|θ)dx=∂∂θ∫∞−∞P(x|θ)dx=0 ∫−∞∞P(x|θ)∂∂θlnP(x|θ)dx=∫−∞∞P(x|θ)∂∂θP(x|θ)P(x|θ)dx=∂∂θ∫−∞∞P(x|θ)dx=0

根據上面的一階展開式可知如果做一階展開相對熵為 0 0,故對 lnP(x|θ1)在θ−1 lnP(x|θ1)在θ−1處進行二階展開 lnP(x|θ1)≈lnP(x|θ−1)+(θ1−θ−1)ln′P(x|θ−1)+(θ1−θ−1)2∂2lnp(x|θ−1)2∂θ−1 lnP(x|θ1)≈lnP(x|θ−1)+(θ1−θ−1)ln′P(x|θ−1)+(θ1−θ−1)2∂2lnp(x|θ−1)2∂θ−1

故 DKL(θ1||θ−1)=∫∞−∞P(x|θ1)lnP(x|θ1)P(x|θ−1)dx=∫∞−∞P(x|θ1)lnP(x|θ1)−P(x|θ1)lnP(x|θ−1)dx=∫∞−∞P(x|θ1)((θ1−θ−1)ln′P(x|θ−1)+∂2lnp(x|θ−1)2∂θ−1(θ1−θ−1)2dx DKL(θ1||θ−1)=∫−∞∞P(x|θ1)lnP(x|θ1)P(x|θ−1)dx=∫−∞∞P(x|θ1)lnP(x|θ1)−P(x|θ1)lnP(x|θ−1)dx=∫−∞∞P(x|θ1)((θ1−θ−1)ln′P(x|θ−1)+∂2lnp(x|θ−1)2∂θ−1(θ1−θ−1)2dx

假設,故 所以 DKL(θ1||θ−1)=(θ1−θ−1)2∫∞−∞P(x|θ1)∂2lnp(x|θ−1)2∂θ−1dx DKL(θ1||θ−1)=(θ1−θ−1)2∫−∞∞P(x|θ1)∂2lnp(x|θ−1)2∂θ−1dx

這裡再引入Fisher資訊矩陣 I(θ)=∫P(x|θ)∂2∂θlnP(x|θ)2dx I(θ)=∫P(x|θ)∂2∂θlnP(x|θ)2dx, 故 DKL(θ1||θ−1)=(θ1−θ−1)2I(θ1) DKL(θ1||θ−1)=(θ1−θ−1)2I(θ1)

(這一段我也不是很明白π__π,可以看看維基百科)根據相對熵可以對 θ θ指定一個先驗分布,可以看出,當 θ1和θ1 θ1和θ1相當接近的時候,相對熵較小,因而機率較大(這點是原博說的,沒看明白)。 可以定義 P(θ)=e(θ1−θ−1)2I(θ) P(θ)=e(θ1−θ−1)2I(θ)

這時就可以根據最大後驗機率來計算 θ θ,類似的,最終可以得到 P(y∣x)=σ(∑i=1Nλi(UTXiI−1UX))) P(y∣x)=σ(∑i=1Nλi(UXiTI−1UX)))

與線性核函數類似,這裡令 K(Xi,X)=UTXiI−1UX K(Xi,X)=UXiTI−1UX,稱為Fisher Kernel。

說了這麼多,終於到重點了,可以看出Fisher Kernel將原特徵 x x通 Ux=∂∂θlnP(x|θ) Ux=∂∂θlnP(x|θ)映射到另一個空間,映射後得到的Fisher score也就是Fisher Vector。很多文獻介紹Fisher Vector的時候都直接給了計算公式,然後說似然函數的參數的變化非常有判別性所以用作特徵。我個人認為與其這麼理解,還不如把Fisher Vector看作一種映射或者變換比較簡單。

別忘了,前文提到Fisher Vector通常和高斯混合模型搭配使用,一般流程是:

所以當給定訓練集特徵 x1,x2,..,xm∈Rd x1,x2,..,xm∈Rd,先訓練高斯混合模型,得到參數 θ=(μk,σk,πk)k=1,...,K θ=(μk,σk,πk)k=1,...,K p(x|θ)=∑k=1Kπkp(x|μk,σk) p(x|θ)=∑k=1Kπkp(x|μk,σk)

下一步利用 Ux=∂∂θlnP(x|θ) Ux=∂∂θlnP(x|θ),分別計算對三個參數求導,並將結果串聯,得到 (∂∂μklnP(x|θ),∂∂σklnP(x|θ),∂∂πklnP(x|θ))k=1,...K (∂∂μklnP(x|θ),∂∂σklnP(x|θ),∂∂πklnP(x|θ))k=1,...K

這個 2K(d+1) 2K(d+1)維的向量就是最終的特徵,有的時候不計算 ∂∂πklnP(x|θ) ∂∂πklnP(x|θ),最終的特徵就是 2Kd 2Kd維。

from: http://bucktoothsir.github.io/blog/2014/11/27/10-theblog/

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.