在高斯混合模型中,我提到了特征处理的一般流程:
事实上高斯混合模型完成的是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)的二分类器,则当有一个新样本的时候,则其属于一类 y y的概率为:
可以看出这是一个判别模型,利用logistic function对其建模(为什么使用logistic function可以参考Andrew Ng的机器学习讲义):
我们的目标是找到最好的 θ θ( θ θ是向量),如果样本很多的话,可以通过最大似然估计找到一组最佳的 θ^ θ^来达到最好的分类效果。但是在样本较少的情况下,可假设 θ θ的先验概率分布服从均值 0 0的高斯分布,即 θ∼N(0,ξ),ξ θ∼N(0,ξ),ξ可通过统计样本得到,那么有
利用最大后验概率来估计,假设一共有 N N个样本 xi(i=1,2,3,…,N) xi(i=1,2,3,…,N),且相互独立,则
对 lθ lθ两边取 ln对数 ln对数,则:
对 θ θ求导:
令 ∂L(θ)∂θ=0 ∂L(θ)∂θ=0,有
求解过程如下:
令 11+eθTxi=σ(−θ)=λi 11+eθTxi=σ(−θ)=λi,则有:
将结果带入 P(y|x;θ) P(y|x;θ),最终得到:
令 K(xi,x)=xTiξx K(xi,x)=xiTξx为核函数,该核函数为线性核。
from: http://bucktoothsir.github.io/blog/2014/11/24/9-th/