在Fisher Vector(1)中介绍了线性核,为了满足不同的需求,实际应用中会使用多种多样的核函数,Fisher Kernel就是其中的一种。

Fisher Kernel

此时仍旧对于一个(1,−1)(1,−1)的二分类问题,我们要学习

P(x,y)=P(x|y)P(y)P(x,y)=P(x|y)P(y)

因为 

故P(x,y)=P(x|y)P(y)=P(X|θy)P(y)P(x,y)=P(x|y)P(y)=P(X|θy)P(y)。

则 

若P(y)=P(y¯)P(y)=P(y¯),那么上式可写为

P(y|x)=σ(lnP(x|θy¯)−lnP(x|θy))P(y|x)=σ(lnP(x|θy¯)−lnP(x|θy))

对lnP(x|θy)lnP(x|θy)做一阶泰勒展开,有

lnP(x|θy)≈lnP(x|θ)+(θy−θ)ln′P(x|θ)lnP(x|θy)≈lnP(x|θ)+(θy−θ)ln′P(x|θ)

相应的有

lnP(x|θy¯)≈lnP(x|θ)+(θy¯−θ)ln′P(x|θ)lnP(x|θy¯)≈lnP(x|θ)+(θy¯−θ)ln′P(x|θ)

将这两个展开式带入上式:

P(y|x)=σ((θy−θy¯)ln′P(x|θ))P(y|x)=σ((θy−θy¯)ln′P(x|θ))

令Ux=ln′P(x|θ)=∂∂θlnP(x|θ)Ux=ln′P(x|θ)=∂∂θlnP(x|θ),这就是Fisher Score. 故

P(y|x)=σ((θy−θy¯)Ux)=σ((θ1−θ−1)Ux)P(y|x)=σ((θy−θy¯)Ux)=σ((θ1−θ−1)Ux)

这里引入一个Kullback–Leibler divergence的概念,也叫做相对熵,这个值通常用来计算两个分布之间的距离,比如θ1和θ−1θ1和θ−1之间的距离为:

DKL(θ1||θ−1)=∫∞−∞P(x|θ1)lnP(x|θ1)P(x|θ−1)dxDKL(θ1||θ−1)=∫−∞∞P(x|θ1)lnP(x|θ1)P(x|θ−1)dx

∫∞−∞P(x|θ)∂∂θlnP(x|θ)dx=∫∞−∞P(x|θ)∂∂θP(x|θ)P(x|θ)dx=∂∂θ∫∞−∞P(x|θ)dx=0∫−∞∞P(x|θ)∂∂θlnP(x|θ)dx=∫−∞∞P(x|θ)∂∂θP(x|θ)P(x|θ)dx=∂∂θ∫−∞∞P(x|θ)dx=0

根据上面的一阶展开式可知如果做一阶展开相对熵为00,故对lnP(x|θ1)在θ−1lnP(x|θ1)在θ−1处进行二阶展开

lnP(x|θ1)≈lnP(x|θ−1)+(θ1−θ−1)ln′P(x|θ−1)+(θ1−θ−1)2∂2lnp(x|θ−1)2∂θ−1lnP(x|θ1)≈lnP(x|θ−1)+(θ1−θ−1)ln′P(x|θ−1)+(θ1−θ−1)2∂2lnp(x|θ−1)2∂θ−1

DKL(θ1||θ−1)=∫∞−∞P(x|θ1)lnP(x|θ1)P(x|θ−1)dx=∫∞−∞P(x|θ1)lnP(x|θ1)−P(x|θ1)lnP(x|θ−1)dx=∫∞−∞P(x|θ1)((θ1−θ−1)ln′P(x|θ−1)+∂2lnp(x|θ−1)2∂θ−1(θ1−θ−1)2dxDKL(θ1||θ−1)=∫−∞∞P(x|θ1)lnP(x|θ1)P(x|θ−1)dx=∫−∞∞P(x|θ1)lnP(x|θ1)−P(x|θ1)lnP(x|θ−1)dx=∫−∞∞P(x|θ1)((θ1−θ−1)ln′P(x|θ−1)+∂2lnp(x|θ−1)2∂θ−1(θ1−θ−1)2dx

假设,故 所以

DKL(θ1||θ−1)=(θ1−θ−1)2∫∞−∞P(x|θ1)∂2lnp(x|θ−1)2∂θ−1dxDKL(θ1||θ−1)=(θ1−θ−1)2∫−∞∞P(x|θ1)∂2lnp(x|θ−1)2∂θ−1dx

这里再引入Fisher信息矩阵I(θ)=∫P(x|θ)∂2∂θlnP(x|θ)2dxI(θ)=∫P(x|θ)∂2∂θlnP(x|θ)2dx, 故

DKL(θ1||θ−1)=(θ1−θ−1)2I(θ1)DKL(θ1||θ−1)=(θ1−θ−1)2I(θ1)

(这一段我也不是很明白π__π,可以看看维基百科)根据相对熵可以对θθ指定一个先验分布,可以看出,当θ1和θ1θ1和θ1相当接近的时候,相对熵较小,因而概率较大(这点是原博说的,没看明白)。 可以定义

P(θ)=e(θ1−θ−1)2I(θ)P(θ)=e(θ1−θ−1)2I(θ)

这时就可以根据最大后验概率来计算θθ,类似的,最终可以得到

P(y∣x)=σ(∑i=1Nλi(UTXiI−1UX)))P(y∣x)=σ(∑i=1Nλi(UXiTI−1UX)))

与线性核函数类似,这里令K(Xi,X)=UTXiI−1UXK(Xi,X)=UXiTI−1UX,称为Fisher Kernel。

说了这么多,终于到重点了,可以看出Fisher Kernel将原特征xx通Ux=∂∂θlnP(x|θ)Ux=∂∂θlnP(x|θ)映射到另一个空间,映射后得到的Fisher score也就是Fisher Vector。很多文献介绍Fisher Vector的时候都直接给了计算公式,然后说似然函数的参数的变化非常有判别性所以用作特征。我个人认为与其这么理解,还不如把Fisher Vector看作一种映射或者变换比较简单。

别忘了,前文提到Fisher Vector通常和高斯混合模型搭配使用,一般流程是:

所以当给定训练集特征x1,x2,..,xm∈Rdx1,x2,..,xm∈Rd,先训练高斯混合模型,得到参数

θ=(μk,σk,πk)k=1,...,Kθ=(μk,σk,πk)k=1,...,K
p(x|θ)=∑k=1Kπkp(x|μk,σk)p(x|θ)=∑k=1Kπkp(x|μk,σk)

下一步利用Ux=∂∂θlnP(x|θ)Ux=∂∂θlnP(x|θ),分别计算对三个参数求导,并将结果串联,得到

(∂∂μklnP(x|θ),∂∂σklnP(x|θ),∂∂πklnP(x|θ))k=1,...K(∂∂μklnP(x|θ),∂∂σklnP(x|θ),∂∂πklnP(x|θ))k=1,...K

这个2K(d+1)2K(d+1)维的向量就是最终的特征,有的时候不计算∂∂πklnP(x|θ)∂∂πklnP(x|θ),最终的特征就是2Kd2Kd维。

from: http://bucktoothsir.github.io/blog/2014/11/27/10-theblog/

Fishe向量Fisher Vecotr(二)相关推荐

  1. Fishe向量Fisher Vecotr(一)

    在高斯混合模型中,我提到了特征处理的一般流程: 事实上高斯混合模型完成的是k-means的任务,那么通过高斯混合模型聚类后,也用一般的基于距离的方法进行feature encoding么?不是的,高斯 ...

  2. 自然语言处理之词向量技术(二)

    1. 词向量技术 词向量(word2vec)是一种表示自然语言中单词的方法,即把每个词都表示为一个N维空间内的点,即一个高维空间内的向量,通过这种方法,把自然语言计算转换为向量计算.词向量的基本内容包 ...

  3. NLP︱高级词向量表达(二)——FastText(简述、学习笔记)

    FastText是Facebook开发的一款快速文本分类器,提供简单而高效的文本分类和表征学习的方法,不过这个项目其实是有两部分组成的,一部分是这篇文章介绍的 fastText 文本分类(paper: ...

  4. ITK系列28_ 区域增长(置信连接)对PNG向量图像进行二维分割

    向量图像中的置信连接 这个例子阐述了应用在含有向量像素类型的图像中的置信连接的用法.对向量图像执行的置信连接在类itk::VectorConfidenceConnected 中.标量版本和向量版本之间 ...

  5. 卷积算子的矩阵向量乘积表示二维离散降质模型

    @图像处理入门学习知识(一) 卷积算子的矩阵向量乘积表示&二维离散降质模型 在图像处理过程中,有时候我们需要将卷积运算转化为矩阵乘积运算,这也是离散降质模型构成的基础,那么怎么将卷积乘法转化为 ...

  6. c++ 一维向量,和二维向量的基本使用

    首先是一维向量和二维向量的初始化 //很简单,初始化一个n个元素值为1的向量. //括号可选 vector<int> res(n,1); //相当于二维m*n的数组,不过数组的memset ...

  7. 8.4 向量应用(二)——空间直线

    本篇内容接上篇,还是关于向量应用的内容.没有废话,直接来. 空间直线方程 (一)点向式方程(对称式方程) 从名字上看,点向式两个关键,一个是点,一个是向,点是直线上一点,向是直线的方向,或者是和直线方 ...

  8. 机器学习中的矩阵向量求导(二) 矩阵向量求导之定义法

    在机器学习中的矩阵向量求导(一) 求导定义与求导布局中,我们讨论了向量矩阵求导的9种定义与求导布局的概念.今天我们就讨论下其中的标量对向量求导,标量对矩阵求导, 以及向量对向量求导这三种场景的基本求解 ...

  9. 机器学习之基于Fisher实现二分类的人脸识别

    实验 2:基于 ORL 人脸库,实验样本主要来自于两个人,每人 45 张图片,共有 90 个样本,其中的 80 个样本作为训练样本,10 个作为测试样本.通过 LDA 实现两类问题的线性判别. 一个F ...

最新文章

  1. 三大运营商集体为电费发愁,宣布“智能化关闭5G基站”,5G建设能省则省!
  2. 通信系统中对眼图的理解(二)
  3. 不会代码,如何搭建一个个人博客?
  4. 【视频讲解】基础实验4-2.1 树的同构 (25 分)
  5. PC 上访问设备数据库的方法
  6. zabbix 安装_安装zabbix
  7. Windows 10 x64 安装 Visual Basic 6.0 SP6
  8. 【网络编程】——windows socket 编程
  9. 敏捷开发框架—Scrum
  10. 惠普电脑如何安装双系统
  11. 第一章 大数据发展数据与鲲鹏大数据
  12. chmod 777 修改文件权限
  13. 【微信小程序】设置合法域名
  14. open source 3d map_3D视觉技术在机器人抓取作业中的应用实例
  15. 投资组合的有效边界及基于目标函数的组合优化
  16. php mysql 开启事务
  17. 资源篇(二)-Photoshop插件~Kockout
  18. 【Ubuntu】Ubuntu 20.04安装
  19. PHP-Laravel简介
  20. 国盛源app投资放心有多少积储才能够理财?理财门槛高吗?

热门文章

  1. 基于Java语言构建区块链(六)—— 交易(Merkle Tree)
  2. 贾跃亭画了一个8500亿的大饼
  3. Apache ZooKeeper - 使用原生的API操作ZK
  4. java guava 使用_Java8-Guava实战示例
  5. java的lr词法编译器_Sample语言编译器(词法分析、正规式、LL、LR、 算符优先)...
  6. 学习笔记Spark(十)—— Spark MLlib应用(2)—— Spark MLlib应用
  7. 武汉专科计算机学校排名2015,武汉前十名的大专:2021武汉职校排名榜
  8. 安卓队列缓存文件,包括断点续传
  9. 【新星计划】汽车纵向动力学模型
  10. 2021-01-13 Matlab求解微分代数方程 (DAE)