Fishe向量Fisher Vecotr(一)

来源:互联网 发布:ibm spss modeler mac 编辑:程序博客网 时间:2024/05/09 01:52

高斯混合模型中,我提到了特征处理的一般流程:

Alt text

事实上高斯混合模型完成的是k-means的任务,那么通过高斯混合模型聚类后,也用一般的基于距离的方法进行feature encoding么?不是的,高斯混合模型通常和Fisher Vector一起使用。现在就来对Fisher Vector做个简单介绍。

首先,Fisher Vector是一种Feature coding的方法。网上相关的中文资料很少,比较有价值的只有Fisher Vector一篇。但是对于我这种数学不太好的人看起来还是有点难度,所以把所有的公式都推导了一遍,且又写了一次理一理。所以这篇博客的大纲和Fisher Vector大致相同,只是在简略的地方加上了一些自己的理解。

Kernel Trick

要理解Fisher Vector, 也要先了解下Kernel。知乎上关于Kernel的问题我比较赞同第三个答案。Kernel不是一种神秘的东西,只是一种计算的trick。 在CV界中亘古不变的主题分类中,假设要训练一个(1,1)(−1,1)的二分类器,则当有一个新样本的时候,则其属于一类yy的概率为:

P(y|x)P(y|x)

可以看出这是一个判别模型,利用logistic function对其建模(为什么使用logistic function可以参考Andrew Ng的机器学习讲义):

P(y|x;θ)=11+eθTXP(y|x;θ)=11+e−θTX

我们的目标是找到最好的θθ(θθ是向量),如果样本很多的话,可以通过最大似然估计找到一组最佳的θ^θ^来达到最好的分类效果。但是在样本较少的情况下,可假设θθ的先验概率分布服从均值00的高斯分布,即θN(0,ξ),ξθ∼N(0,ξ),ξ可通过统计样本得到,那么有

P(θ)=σ(θ)=12πξeθTξ1θ2P(θ)=σ(θ)=12πξe−θTξ−1θ2

利用最大后验概率来估计,假设一共有NN个样本xi(i=1,2,3,,N)xi(i=1,2,3,…,N),且相互独立,则

θ^MAP=argmaxθi=1NP(yi|xi;θ)P(θ)θ^MAP=arg⁡maxθ∏i=1NP(yi|xi;θ)P(θ)
lθ=i=1NP(yi|xi;θ)P(θ)lθ=∏i=1NP(yi|xi;θ)P(θ)

lθ两边取lnln对数,则:

L(θ)=ln(lθ)=i=1N(lnP(yi|xi;θ)+lnP(θ))L(θ)=ln(lθ)=∑i=1N(lnP(yi|xi;θ)+lnP(θ))

θθ求导:

L(θ)θ=θlnP(θ)+i=1NθlnP(yi|xi;θ)∂L(θ)∂θ=∂∂θlnP(θ)+∑i=1N∂∂θlnP(yi|xi;θ)
θlnP(θ)=θθTξ1θ2=ξ1θ∂∂θlnP(θ)=−∂∂θθTξ−1θ2=−ξ−1θ
θlnP(yi|xi;θ)=θ(ln1ln(1+eθTxi))=xieθTxi1+eθTxi∂∂θlnP(yi|xi;θ)=∂∂θ(ln1−ln(1+e−θTxi))=xie−θTxi1+e−θTxi

L(θ)θ=0∂L(θ)∂θ=0,有

i=1NxieθTxi1+eθTxiξ1θ=0∑i=1Nxie−θTxi1+e−θTxi−ξ−1θ=0

求解过程如下:

i=1NxieθTxi1+eθTxi=i=1Nxi1+eθTxi=ξ1θ∑i=1Nxie−θTxi1+e−θTxi=∑i=1Nxi1+eθTxi=ξ−1θ

11+eθTxi=σ(θ)=λi11+eθTxi=σ(−θ)=λi,则有:

θ^=i=1Nxiλiξθ^=∑i=1Nxiλiξ
λi=1eθ^Txiλi=−1eθ^Txi

将结果带入 P(y|x;θ)P(y|x;θ),最终得到:

P(y|x;θ)=11+eNi=1λi(xTiξx)P(y|x;θ)=11+e∑i=1Nλi(xiTξx)

K(xi,x)=xTiξxK(xi,x)=xiTξx为核函数,该核函数为线性核。


from: http://bucktoothsir.github.io/blog/2014/11/24/9-th/

0 0