1. 程式人生 > >Fisher Vector費舍爾向量and FIsher Kernel費舍爾核

Fisher Vector費舍爾向量and FIsher Kernel費舍爾核

之前想了解Fisher Vector(以下簡稱FV)和 Fisher Kernel(以下簡稱FK) ,花了很長時間查論文看部落格,總算明白了點皮毛,為了以後自己能夠記得起來,決定用自己能懂的話碼出來。

1、FV的優點

FV和 廣泛應用於影象分類、行為識別領域。為什麼會廣泛應用?肯定是因為FV有別的演算法不具備的優點。什麼有點呢?下面教科書一般的說明如下:

       模式識別方法可以分為生成式方法和判別式方法。生成式注重對類條件概率密度函式的建模,主要反映同類資料之間的相似度,如GMM ;判別式聚焦於直接分類,反映異類資料之間的差異,如SVM 。

二者的優勢:1,生成式方法可以處理長度不一的輸入資料,2,判別式方法不能處理長度不一的資料但是分類效果較好。

而FV則主要結合兩者優勢,將生成式模型用於判別式分類器中,這就是FV的優勢,那麼FV如何擁有這樣的優勢呢?分析如下:

2、FV的推導

演算法的推導過程都很繁複,但是FV的推導真心不算難,仔細學習下,一兩天內可以看的很明白,不過知其然未必知其所以然,至於FV是這樣推導的沒錯,但為什麼這麼推導,現在為止我也沒有清晰的認識,反正就是先學著吧。

【樣本的處理】

FV本質上是用似然函式的梯度向量來表達一幅影象。這個梯度向量的物理意義就是資料擬閤中對引數調優的過程。似然函式是哪裡來的呢?   
(似然函式:一種關於統計模型引數的函式。給定輸出x時,關於引數θ的似然函式L(θ|x)(在數值上)等於給定引數θ後變數X的概率。這裡的似然函式就是已知樣本特徵X之後,對樣本特徵引數θ進行估計的過程。

對於一幅影象,假設有T個特徵點(影象已完成預處理,已進行特徵提取),那麼影象可以表示為:
X={xt,t=1,2,...,T}
如果假設這些特徵xt符合i.i.d(獨立同分布),於是就有:
--------------------1
取對數(連乘的運算較聯和複雜得多,所以用取對數進行簡化): 
--------------------2
其中θ為xt的特徵引數。
(這裡我是用p(X;θ),而不是p(X|θ),因為p(X|θ)在數理統計中表示的意思是已知θ的情況下X發生的條件概率,顯然這裡不是這樣,p(X;θ)則表示在已知事件X的情況下,關於引數θ的估計函式。
到這一步之後,要對2式進行具體化演算,但我們不知道p(X;
θ)的函式表示式到底是什麼,沒關係我們選擇繞道而行,用某種函式模型來模擬逼近這個p(X;θ),例如下面的GMM。

【GMM引申】

GMM(Gaussian Mixture Model)高斯混合模型,是一種用有限個高斯混合模型進行概率密度函式逼近的方法(具體介紹,以及對下面詳細計算推導過程請戳這裡GMM略解)。如對於上2式的p(xt;θ):
--------------------3
--------------------4,
其中

書接上文
這樣上2式就可以用3、4式帶入得到具體的表示式,並且θ={Wk(權值),Uk(均值),∑k(方差)},則對引數θ的估計,就有了明確的物件,即對樣本的權值、均值、方差進行估計。
這時:
--------------------5
對似然函式L(X;θ)進行θ一階導求解,對於GMM模型下的θ一階導,即對L(X;θ)進行{Wk,Uk,∑k}一階導求解:
--------------------6
利用EM演算法進行優化(具體優化步奏戳這裡EM略解),得到:
http://latex.codecogs.com/gif.latex?%5Cfrac%7B%5Cpartial%20L%28X%3B%5Ctheta%20%29%7D%7B%5Cpartial%20w_%7Bk%7D%7D%3D%5Csum_%7Bt%3D1%7D%5E%7BT%7D%5B%5Cfrac%7B%5Cgamma%20_%7Bt%7D%28k%29%7D%7Bw_%7Bk%7D%7D-%5Cfrac%7B%5Cgamma%20_%7Bt%7D%281%29%7D%7Bw_%7B1%7D%7D%5D,for k>=2
http://latex.codecogs.com/gif.latex?%5Cfrac%7B%5Cpartial%20L%28X%3B%5Ctheta%20%29%7D%7B%5Cpartial%20u_%7Bk%7D%7D%3D%5Csum_%7Bt%3D1%7D%5E%7BT%7D%5Cgamma%20_%7Bt%7D%28k%29%5B%5Cfrac%7Bx_%7Bt%7D-u_%7Bk%7D%7D%7B%5CSigma%20_%7Bk%7D%7D%5D
http://latex.codecogs.com/gif.latex?%5Cfrac%7B%5Cpartial%20L%28X%3B%5Ctheta%20%29%7D%7B%5Cpartial%20%5CSigma_%7Bk%7D%7D%3D%5Csum_%7Bt%3D1%7D%5E%7BT%7D%5Cgamma%20_%7Bt%7D%28k%29%5B%5Cfrac%7Bx_%7Bt%7D-u_%7Bk%7D%7D%7B%5CSigma%20_%7Bk%7D%5E%5Cfrac%7B3%7D%7B2%7D%7D-%5Cfrac%7B1%7D%7B%5Csqrt%7B%5CSigma%20%7D%7D%5D--------------------7
其中http://latex.codecogs.com/gif.latex?%5Cgamma%20_%7Bt%7D%28k%29%3D%5Cfrac%7Bw_%7Bk%7DN_%7Bk%7D%28X%3B%5Ctheta%20%29%7D%7B%5Csum_%7Bk%3D1%7D%5E%7BK%7Dw_%7Bk%7DN_%7Bk%7D%28X%3B%5Ctheta%20%29%7D
因為很多采用內積的判別式分類器要求我們輸入的必須是歸一化的特徵向量,這裡需要引入Fisher Information Matrix (Fisher資訊矩陣。簡稱FI,表示為I )進行歸一化。

【FI引申】

FI說白了就是FV/FK這套演算法裡,構造出來的一個矩陣,它包含資料的豐富資訊,對於計算有很大幫助。(知乎上有介紹FI的,戳這裡知乎FI介紹
對於上6式,我們令:
--------------------8,稱為Score function(S函式),
--------------------9,稱為FI。
FI的近似解:
http://latex.codecogs.com/gif.latex?f_%7Bw_%7Bk%7D%7D%3DT%28%5Cfrac%7B1%7D%7Bw_%7Bk%7D%7D+%5Cfrac%7B1%7D%7Bw_%7B1%7D%7D%29
http://latex.codecogs.com/gif.latex?f_%7Bu_%7Bk%7D%7D%3DT%5Cfrac%7Bw_%7Bk%7D%7D%7B%5CSigma_%7Bk%7D%7D
--------------------10
書接上文
已經知道了了FI的表示式,那麼利用I 進行歸一化。令歸一化前:
--------------------11
令歸一化後:

--------------------12
得到最終形式:


--------------------13
其中http://latex.codecogs.com/gif.latex?%5Cgamma%20_%7Bt%7D%28k%29%3D%5Cfrac%7Bw_%7Bk%7DN_%7Bk%7D%28X%3B%5Ctheta%20%29%7D%7B%5Csum_%7Bk%3D1%7D%5E%7BK%7Dw_%7Bk%7DN_%7Bk%7D%28X%3B%5Ctheta%20%29%7D
到此,就完成了FV的推導計算。

3、FK的妙處

     FK是一種核函式,主要應用於簡化分類步奏中。

核方法是廣義線性判別方法的一種。如果樣本在原始空間線性不可分,對映到更高維度的特徵空間,使樣本線性可分。(這裡有一篇部落格介紹SVM順道將核函式講的十分透徹,我就不班門弄斧了,戳這裡2.2節核函式講解)。

但是原始空間的維度如果較高的話,在對映到高維度的特徵空間,維度的增長是幾何爆炸性的,即維度災難。(樣本空間是2維的,可能對映為5維,3維可能對映為19維。)

核函式的作用就是簡化對映空間的運算,用一種等價的計算結果來避開直接在高維空間進行運算。

如SVM的廣義判別函式:

其中為對映關係。

如果原始空間的維度較高的話,將會很難計算,這時候如果構造一個核函式使,那麼

  

   這樣就避開了在高維直接計算,轉化為原始空間計算即可。那麼核函式如何選擇呢?

【FK的作用】

Fisher Kernel是衡量兩樣本直接的距離,即兩樣本之間的相似度。

FK的函式形式:

其中即Score function,即Fisher Information Matrix.

下面進行簡單的矩陣運算:

為什麼之前用進行單位化,這裡FK為什麼中間成,未得精髓但草蛇灰線負綿千里?

所以對於樣本原始空間X、Y,對映到特徵空間其SVM的廣義判別函式:


可以等價轉換成:

所以這裡就用代替計算,以簡化判別類方法的計算。

4、總結

整片下來,相信也寫成了閉環,這裡再樹立總結一二。

【演算法步奏】

給定兩組樣本X,Y,(以兩類樣本為例,多類的樣本處理方法還待學習): 1、計算Fisher score:這裡需要用到GMM和EM演算法進行似然估計,完成最優化計算) 2、計算Fisher Information Matrix: 3、計算Fisher kernel:  4、等價計算分類判別函式:

【核與分類判決的體會】

一句話概括核方法核函式: 核方法就是將樣本原始空間無法進行線性判決時,對映到高維特徵空間,然後使用廣義線性判決的一種方法;核函式就是為了避開資料在高維特徵空間進行運算,而設計的一種在低維運算結果就可以等價高維計算結果的一種函式; 一言以蔽之:核方法將不可分難題拉到高維進行可分,核函式將極難的計算拉回到低維進行計算。

【參考文件】

1、FIsher Vector與Fisher Kernel:https://zhuanlan.zhihu.com/p/23002901  2、SVM和Kernel:http://blog.csdn.net/v_july_v/article/details/7624837#t14  3、Fisher Information Matrix:https://www.zhihu.com/question/26561604  4、GMM和EM:http://blog.csdn.net/qq_28572673/article/details/53886899

【說明】

1、看到很多博文上引數和下標不是很統一,此文中t=1--T表示樣本的T個特徵點,k=1--K表示某個特徵點用K個高斯分佈進行逼近; 2、此文內容來各大大牛的博文,獨家整理,理解貫通,如有理解錯誤之處會努力更正。 3、對於CSDN的排版真心不良心,勿吐槽。