最近正好在看关于线性判别式的东西,正好看到了Fisher vector encoding,所以总结一下,如有不足欢迎指正!
首先为什么kernel,kernel的好处在于将原本线性不可分点通过一系列非线性变换映射到高维线性可分的空间。因此将kernel和线性判别式结合,可以很好地结合。
首先定义线性判别的kernel函数如下:
Snew=sign(∑iSiλiK(Xi,Xnew))
其中
Snew
为输入的新样本的预测类别,
Xi
表示第i个kernel核,
Xnew
代表新输入的样本。
其中
K(Xi,Xnew)
还可以表示为:
ϕTi∗ϕnew
关于核函数的选择可以参考Mercer定理。
在Fisher vector中:
ϕi=F−0.5λ∗Ux
其中,
Ux
是Fisher information矩阵中的Fisher score,它相当于针对log似然对于参数的一阶导数。(记住这个就好)
而
F−0.5λ
则是针对
Ux
的归一化因子。
因此现在就只有一个问题,log似然是怎么确定的。也就是概率分布,这里采用了GMM先去拟合一个混合高斯分布即可。
具体文章可以参考2007-Fisher kernels on visual vocabularies for image categorization