之前想了解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的排版真心不良心,勿吐槽。

Fisher Vector费舍尔向量and FIsher Kernel费舍尔核相关推荐

  1. Fisher Vector(FV)向量

    在图像分类或者检索领域,相对于BOV模型来说,Fisher Vector可以包含更深层次的图像信息,从而达到更好的效果.在实际的图像分类或检索的操作中,会事先对提取出来的图像特征使用GMM来聚类得到一 ...

  2. GMM、fisher vector、SIFT与HOG特征资料

    GMM与fisher vector理解 查阅fisher vector资料时看到的几篇介绍fisher vector很不错的博文,要了解fisher vector你需要先了解GMM高斯混合模型,这两篇 ...

  3. C++ Vector(向量容器)

    Vector介绍 C++ Vector(向量容器) 是一个线性顺序结构.相当于数组,但其大小可以不预先指定,并且自动扩展.它可以像数组一样被操作,由于它的特性我们完全可以将vector 看作动态数组. ...

  4. Kernel Trick——核机制,更高维空间内积的快速计算

    这是小弟的第一篇技术博客,功力尚浅,写的不准确不专业的地方,还请各位同仁,多多包涵. blog归正传. 引言 理论 1 Kernel SVM 2 2阶多项式核 3 常见核的种类 应用 1 Kernel ...

  5. 边界Fisher分析(MFA)及其非线性改进核边界Fisher分析(KMFA)的验证对比

    0.前言 前期博文讲述了MFA相关理论及其可以改进的点,本期文章对MFA进行非线性改进,提出核边界Fisher分析(KMFA)方法,并将MFA与KMFA在相同数据集上进行验证对比分析.MFA理论介绍见 ...

  6. java向量vector类,java数据结构——Vector(向量类)

    Vector底层是用数组实现的,其容量是可以动态扩展的,默认初始容量是10,默认增长因子是0,详细的扩容方式会在构造方法中讲述. Vector对象和ArrayList一样可以随意插入不同类的对象,因为 ...

  7. 【转】C++ Vector(向量容器)

    转自:https://blog.csdn.net/studentyyl/article/details/21177445 vector是一个线性顺序结构.相当于数组,但其大小可以不预先指定,并且自动扩 ...

  8. C++ STL vector(向量)

    转自博客园:https://www.cnblogs.com/zhonghuasong/p/5975979.html 介绍 vector是表示可变大小数组的序列容器. 就像数组一样,vector也采用的 ...

  9. paper 6:支持向量机系列三:Kernel —— 介绍核方法,并由此将支持向量机推广到非线性的情况。...

    前面我们介绍了线性情况下的支持向量机,它通过寻找一个线性的超平面来达到对数据进行分类的目的.不过,由于是线性方法,所以对非线性的数据就没有办法处理了.例如图中的两类数据,分别分布为两个圆圈的形状,不论 ...

最新文章

  1. golang笔记——struct
  2. SEO优化之meta标签
  3. oracle的管理工具
  4. yshon对讲机如何调频率_99%的人都不知道对讲机的这些功能.....
  5. Fabric 链码Chaincode 的安装、初始化、调用、升级
  6. Exp8 web基础
  7. android -上传文件到服务器
  8. 推荐一个很好的富文本web编辑器UEditor
  9. Spring Boot 核心原理与源码解析-大纲
  10. linux数据向量化指令,不充分SIMD向量化技术研究.PDF
  11. miniui中的相关问题
  12. SSM excel文件的导入导出基于apache poi
  13. inurl faq.php,seo新手工作就是做外链
  14. 计算机高一基础知识大全,计算机基础知识大全
  15. 史上最简便的可以直接用的登录验证码攻略(前后端都有)
  16. bootstraptable冻结列无效_Bootstrap Table 冻结列功能详解
  17. 学生图书馆系统mysql数据库设计
  18. mysql对表中添加属性_MySQL数据库增删改字段(属性)
  19. 网站被UC浏览器转码怎么办,夸克浏览器转码怎么办,百度浏览器转码怎么办,解决所有浏览器转码。
  20. 美国总统拜登下令降半旗悼念枪击案遇难者

热门文章

  1. 0.Mysql数据库——创建数据库
  2. Linux之root密码破解
  3. spring使用@Primary注解
  4. Break Continue Return( BCR ) 三者的区别
  5. 吻过你这三个地方的男人,定是对你动了真情,错不了
  6. Audioservice、Audiomanager和Audiosystem
  7. RTL8189ES/ETV/FTV系列模块定频软件操作手册
  8. 不要忘了我们心中的梦
  9. IP分片报文的接收与重组
  10. 一颗椰子糖机器人_“媒体训练营”走进海南春光 聆听椰子糖诞生故事