一、背景知识

1. Discriminant  Learning Algorithms(判别式方法) and Generative Learning Algorithms(生成式方法)

现在常见的模式识别方法有两种,一种是判别式方法;一种是生成式方法。可以这样理解生成式方法主要是数据是如何生成的,从统计学的角度而言就是模拟数据的分布distribution;而判别式方法,不管数据是如何生成而是通过数据内在的差异直接进行分类或者回归。举个例子你现有的task是去识别一段语音属于哪一种语言。那么生成式模型就是你先让你的model先去学习各种可能性的语言,然后使用你学到的知识来对你要识别的语音做分类;而判别式模型是根据语音中的lingustic characteristic语言学特点来识别这段语音。July_Zh1博文认为生成式方法主要反映同类数据之间的相似度,判别式方法反映数据之间的的差异度。Fihser Kernel结合了二者的差异。PRML中有更加理论的阐述,有兴趣可以参考。

2. Fisher Information matrix

设一随机变量$x$

如果$x$ 为连续型随机变量,那么$x$的分布$p(x|\theta)$可以用正态分布模拟: $p(x|\theta) = \frac{1}{\sqrt{2\pi\sigma^2}}exp\left\{-\frac{(x-u)^2}{2\sigma^2}\right\}$

如果$x$是离散型随机变量,那么$x$的分布可以可以用类别分布categorical distribution模拟: $p(x|\theta) = \prod_{k=1}^{K}\theta_k^{x_k}$

式中: $0 \leq \theta_k \geq 1, \sum_k \theta_k = 1$

定义Fisher Score 为: $g(\theta,x) = \triangledown_\theta ln(p|\mathbf{\theta}) $

定义Fisher Information Matrirx 为: $ F = E_x\left[g(\theta,x),g(\theta,x)^T\right] $

二、 Fisher Kernel Methods

假设我们训练数据集为 $ X_t$,对应的Label 为 $S_t $(±1)(先考虑只有两类样本的情况) 。设 $X$  为测试样本,$\hat{S} $为对测试样本预测值。

我们有:$\hat{S}$ = $sign\left (\sum_t S_t\lambda_t K(X_t,X)\right )$;

而对核函数有以下形式: $ K(X_i,X_i) = \phi_{X_i}^T \phi_{X_j} $.

对于每一个新样本的预测值$\hat{S}$是由原来样本的Label $S_t$ ”加权”得到。而“加权”由两部分组成:1)$\lambda_t$ 2) $K(X_t,X) $

这个Kernel描述的是训练样本$X_t$ 和测试样本$X$之间的相似度,Kernel有很多种,这里选择的是Fisher Kernel. 使用$U_x$代表Fisher Score, $F_\lambda$ 代表 Fisher Information Matrix。

如果将函数数看作一种映射方式,那么这个等式代表着我们不需要将每个样本真的映射到核空间进行计算,而只要确定核函数对应的$\phi_x$直接对函数进行计算就可以得到将样本映射到核空间的效果。(这也是支持向量机最重要的trick之一)

$\phi_x$ 就是我们定义的Fisher Vector

对于Fisher Kernel我们有: $\phi_x = F_\lambda^{-\frac{1}{2}}U_x$

对应的样本生成模型为:GMM(Gaussian Mixture Model) 即$X$服从的分布为GMM模型。此时$X = x_1,...,x_N$ 代表GMM中一系列变量。

二、对图像使用Fisher Encoding

Fisher encoding 的基本思想就是用GMM去构建一个视觉字典,本质上是用似然函数的梯度来表达一幅图像。

1. GMM构建视觉词典

对于图像而言$x$可以代表图像的特征(比如SIFT特征),一幅图像有很多特征$X = x_1,...x_T$

对于GMM model  $X$的分布为:

$$p(X|\omega,\mu,\sum)$$

$\omega,\mu,\sum$分别为GMM中每个特征的权重,均值,协方差。

2. 计算Fisher Vector

首先定义:

$$L(X|\lambda) = logp(X|\lambda) = sum_{t=1}^{T} logp(x_t|\lambda)$$.

图像中每个特征都是相互独立的:

$$p(x_t|\lambda) = sum_{i=1}^{N}w_ip_i(x_t|\lambda)$$.

$p_i$位GMM中第i个component的pdf,$w_i$为其权值, $sum_{i=1}^Nw_i=1$.

每个component $p_i$是多元高斯函数,期pdf如下:

$$p_i(x|\lambda) = \frac{exp\left{-1/2(x-\mu_i)'\sum_i^{-1}(x-\mu_i)\right}}{(2\pi)^{D/2}|\sum_i|^{1/2}}$$

D是特征向量的维数,$\sum_i^-1位协方差矩阵

再定义特征$x_t$由第i个Gaussian component生成概率,这里使用了贝叶斯公式:

$$\gamma_t(i) = p(i|x_t,\lambda) = \frac{w_ip_i(x_t|\lambda)}{\sum_{j=1}^Nw_jp_j(x_t|\lambda)}$$

然后对各个参数求偏导:

$$U_x = \left[ \frac{\partial L(X|\lambda)}{\partial{\omega_i}}, \frac{\partial{L(X|\lambda)}}{\partial{\mu_i^d}}, \frac{\partial{L(X|\lambda)}}{\partial{\sigma_i^d}} \right]$$

这里i是指第i个component,d是指特征$x_t$的维度,偏导是对每个componnet求,每个特征的维度都要计算,$U_X$维度是(2*D+1)*N; 又由于$\omega_i$有约束$\sum_i \omega_i=1$,所以会少一个自由变量,所以$U_x$ 最终的维度是(2D+1)*N-1.

对上面的三个公式分别引入三个对应的fisher matrix:

$$ f_{w_i} = T\left(\frac{1}{w_i} +  \frac{1}{w_1} \right) $$

$$ f_{u_i^d} = \frac{Tw_i}{\sigma_i^d)^2} $$

$$ f_{\sigma_i^d} = \frac{2T\omega_i}{(\sigma_i^d)^2}

之后便可缺德归一化的fisher vector.

参考资料:

1. 【Paper】: The Devil is in the details: an evaluation of recent feature encoding methods

比较了在目标识别领域不同encoding feature 的效果

2. 如何使用vl_feat计算Fisher Vectors:

http://www.vlfeat.org/overview/encodings.html

3. 如何使用vl_feat实现GMM

http://www.vlfeat.org/overview/gmm.html

4. Fisher information matrix for Gaussian and categorical distributions

https://www.ii.pwr.edu.pl/~tomczak/PDF/%5bJMT%5dFisher_inf.pdf

5. Fisher Vector Encoding

http://www.cs.ucf.edu/courses/cap6412/spr2014/papers/Fisher-Vector-Encoding.pdf

6. 【Paper】: Exploiting generative models in discriminative classifiers

Fisher Kerner 的推导和阐述

7【Paper】: Fisher Kernels on Visual Vocabularies for Image Categorization

http://www.cs.ucf.edu/courses/cap6412/spr2014/papers/2006-034.pdf

8. 【Paper】: Improving the Fisher Kernel for Large-Scale Image Classification

Fisher Kernel的优化

7. Fisher Vector and Fisher Score

http://blog.csdn.net/happyer88/article/details/46576379

Fisher Vector Encoding and Gaussian Mixture Model的更多相关文章

  1. [zz] 混合高斯模型 Gaussian Mixture Model

    聚类(1)——混合高斯模型 Gaussian Mixture Model http://blog.csdn.net/jwh_bupt/article/details/7663885 聚类系列: 聚类( ...

  2. 聚类之高斯混合模型(Gaussian Mixture Model)【转】

    k-means应该是原来级别的聚类方法了,这整理下一个使用后验概率准确评测其精度的方法—高斯混合模型. 我们谈到了用 k-means 进行聚类的方法,这次我们来说一下另一个很流行的算法:Gaussia ...

  3. 漫谈 Clustering (3): Gaussian Mixture Model

    上一次我们谈到了用 k-means 进行聚类的方法,这次我们来说一下另一个很流行的算法:Gaussian Mixture Model (GMM).事实上,GMM 和 k-means 很像,不过 GMM ...

  4. Gaussian Mixture Model

    Gaussian Mixture Model (GMM).事实上,GMM 和 k-means 很像,不过 GMM 是学习出一些概率密度函数来(所以 GMM 除了用在 clustering 上之外,还经 ...

  5. 高斯混合模型Gaussian Mixture Model (GMM)——通过增加 Model 的个数,我们可以任意地逼近任何连续的概率密分布

    从几何上讲,单高斯分布模型在二维空间应该近似于椭圆,在三维空间上近似于椭球.遗憾的是在很多分类问题中,属于同一类别的样本点并不满足“椭圆”分布的特性.这就引入了高斯混合模型.——可以认为是基本假设! ...

  6. 混合高斯模型(Gaussian mixture model, GMM)

    1. 前言 这就是为什么我要学习一下二维高斯分布的原因: 总感觉数学知识不够用呐,顺带把混合高斯模型也回顾一下. 2. 单高斯模型(Gaussian single model, GSM) 2.1 一维 ...

  7. 我自己用C++写了个GMM(Gaussian mixture model)模型

    我自己用C++写了个GMM(Gaussian mixture model)模型 Written for an assignment 之前粗粗了解了GMM的原理,但是没有细看,现在有个Assignmen ...

  8. 高斯混合模型Gaussian Mixture Model (GMM)

    混合高斯模型GMM是指对样本的概率密度分布进行估计,而估计采用的模型(训练模型)是几个高斯模型的加权和(具体是几个要在模型训练前建立好).每个高斯模型就代表了一个类(一个Cluster).对样本中的数 ...

  9. 计算Fisher vector和VLAD

    This short tutorial shows how to compute Fisher vector and VLAD encodings with VLFeat MATLAB interfa ...

随机推荐

  1. 第三人称角色移动及自由移动视野(RigidBody实现)

    重点:向量的运算.在获得水平及垂直方向的速度之后,将方向进行重设,让方向与视野同步(即:相机的方向与人物方向相同) 下面以一个实例来说明如何操作: 1.如图创建一个地形(Terrain),两个正方体( ...

  2. 原生JavaScript实现焦点图轮播

    不管是高校的网站还是电商的页面,焦点图的切换和轮播应该是一项不可或缺的应用.今天把焦点图轮播制作的技术要点做下笔记,以供日后查看. 一.结构层(HTML) 焦点图的HTML结构很简单,就是一个父容器( ...

  3. [UWP]了解模板化控件(5):VisualState

    1. 功能需求 使用TemplatePart实现上篇文章的两个需求(Header为空时隐藏HeaderContentPresenter,鼠标没有放在控件上时HeaderContentPresent半透 ...

  4. [编织消息框架][JAVA核心技术]动态代理应用10-水平扩展方案

    服务分为系统服务同用户服务两种 水平扩展是基于系统服务,而拆分方式又有几种方案,按数据跟业务情况来做决策 1.每个服务独立存储(图1):每个服务只负责一个或多个领域实体存储,A服务不能直接修改B服务的 ...

  5. 【TED】如何掌握你的自由时间

    [TED]如何掌握你的自由时间 生活 某天翻阅自己原来记录的有道云笔记,发现自己在学校的时候,要求自己每周看三个TED视频,并写一些看后的总结,随意翻阅了下,就发现当时做的好的一些笔记,现在一看就能想 ...

  6. canvas与svg区别

    canvas与svg区别 和SVG比起来有两个弱点,一个是画布里的内容是独立的,不能当成html元素:二是CANVAS是属于位图格式,而SVG是矢量图,可以平滑放大. HTML5的canvas画出来的 ...

  7. juery悬浮框

    现在的淘宝啊,京东啊等很多平台都用到了一个技术,就是当页面下拉时,某个div会一直悬浮在页面顶端.具体代码如下<p>jQuery实现页面滚动时层智能浮动定位</p><!D ...

  8. zepto.js介绍

    是一个阉割版的jQuery zepto不支持jQuery过于复杂的选择器,比如:first :last :eq zepto如果要用动画必须再次引包 zepto能将css3中transition支持的动 ...

  9. IOC容器的依赖注入

    1.依赖注入发生的时间 当Spring IoC容器完成了Bean定义资源的定位.载入和解析注册以后,IoC容器中已经管理类Bean定义的相关数据,但是此时IoC容器还没有对所管理的Bean进行依赖注入 ...

  10. easyUI中datagrid的使用

    easyUI中的datagrid数据表格经常被用到,结合项目中的使用情况,总结一下datagrid使用中需要注意的一些问题.使用datagrid展示数据,需要在html.css.js中都要编写代码,h ...