Fishe向量Fisher Vecotr(二)

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)

因为 Alt text

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)

则 Alt text

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θ)lnP(x|θ) lnP(x|θy)≈lnP(x|θ)+(θy−θ)ln′P(x|θ)

相应的有

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

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

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

Ux=lnP(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)dx DKL(θ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

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

lnP(x|θ1)lnP(x|θ1)+(θ1θ1)lnP(x|θ1)+(θ1θ1)22lnp(x|θ1)2θ1 lnP(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)lnP(x|θ1)+2lnp(x|θ1)2θ1(θ1θ1)2dx 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)2dx

假设Alt text,故Alt text 所以

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

这里再引入Fisher信息矩阵 I(θ)=P(x|θ)2θlnP(x|θ)2dx I(θ)=∫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(yx)=σ(i=1Nλi(UTXiI1UX))) P(y∣x)=σ(∑i=1Nλi(UXiTI−1UX)))

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

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

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

Alt text

所以当给定训练集特征 x1,x2,..,xmRd x1,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|θ),最终的特征就是 2Kd 2Kd维。

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值