1.背景介紹
Fisher Vector是一種編碼方式,它和Bag-of-Words一樣,都能夠實現對於不等長特徵矩陣的歸一化。例如,對於一段語音信號,每幀上可以提取MFCC特徵(假設有13維),由於每段語音信號的長度不等,導致每段語音的總幀數不等,得到的特徵向量可能是這樣的:13*N,這裏的N就是指總幀數。將特徵送入網絡進行語音識別時,一般要對特徵進行歸一化,即處理成統一大小的特徵矩陣。今天介紹的Fisher Vector 和之前講的Bag-of-Words詞袋模型都是常規的處理手段。與詞袋模型不同的是, Fisher Vector利用的是多個高斯分佈對於權重、均值、方差求偏導數得來的。
2.Fisher Vector原理介紹
在講Fisher Vector之前,先講GMM高斯混合模型,GMM由多個高斯模型線性疊加而成。混合高斯模型可以用下面的公式表示:
其中,表示數據點x出現的概率,K表示高斯模型的個數,表示第k個高斯模型的權重,表示第k個高斯分佈(component),表示第k個高斯分佈的均值,表示第k個高斯分佈的方差。理論上,如果component的個數足夠多的話,GMM可以逼近任意一種概率分佈。這裏顯然,滿足以下條件:
我們在GMM中的目標是:求參數、、,使得它確定的概率分佈生成這些給定數據點的概率最大。即最大,這裏假設各個數據點之間滿足獨立同分布。這就是似然函數。通常我們轉換成對數形式的最大值:
我們假設要對T個D維的特徵向量進行處理,首先生成GMM模型(K個D維的高斯分佈的混合),然後再對原始特徵進行編碼。假設高斯分佈的參數集合爲:
假設共有T個特徵向量,似然函數可以表示爲:
而其中的高斯分佈是多個基高斯分佈的混合,所以可以表示爲:
而每個基高斯分佈又可以表示爲:
然後,我們再求似然函數L對權重、均值、方差的偏導:
最後,將三者歸一化之後,就可以作爲Fisher Vector向量。對於每一個D維的高斯分佈,都有一個權重,並且有D個均值求了一次偏導,對D個方差求了一次偏導,所以Fisher Vector向量的維度是K*(2*D+1)。此外,由於所有的權重滿足和爲1,所以只要求其中K-1個高斯分佈的權重的偏導即可。即維度爲:(K-1)*(2*D+1) + 1*(2*D) = K*(2D+1)-1
參考資料:
[1] Image Classification with the Fisher Vector: Theory and Practice. Jorge Sánchez , Florent Perronnin , Thomas Mensink , Jakob Verbeek.