A Survey of Product Quantization

本文主要参考自:A Survey of Product Quantization,2018 by ITE Transactions on Media Technology and Applications (MTA)。Yusuke Matsui , Yusuke Uchida , Herv´e J´egou,Shin’ichi Satoh (member)

notation:M,D,K:每个D维的vector分成M段,每段D/M维,每段聚K类

1.Pre-rotation(OPQ)

PQ只是简单地将维度划分成M份,不考虑数据分布,子向量没有含义,原文提出可以先将数据用正交矩阵旋转一下。

OPQ实现了这一点:迭代计算正交矩阵,使得量化误差最小。训练阶段分两步:

  1. 所有训练数据都用R旋转,接下来codeword和PQ一样处理。
  2. 给定训练过的codeword,用Orthogonal Procrustes Problem的处理方法来更新R。

OPQ是对PQ的直接扩展,通常情况下,应用旋转矩阵的附加损失适中,但增加了精度。

2.Generalization(AQ,CQ)

Additive Quantization和Composite Quantization泛化了PQ表示。原始PQ用M个D/M维向量concat而成,AQ和CQ表示M个D维向量的和向量。

第m个子码书表示为A Survey of Product Quantization,其中A Survey of Product Quantization。输入向量x依然编码成M份,但重组的向量变为求第m份K个向量的和。(这个重组向量就相当于过去的编(聚类)号后concat的那个,比如x~=[0001 0011 0010]现在就是x~=6,如理解有错请指正)

过去:A Survey of Product Quantization现在:A Survey of Product Quantization

这句话不理解:If we restrict each sub-codeword such that only values for mth region is nonzero, Eq. (10) becomes Eq. (6).
This shows that PQ is a special case of AQ/CQ.其中Eq6和Eq10分别是上面左右两个公式。

给定查询y,和AQ/CQ码ix,AQ/CQ的非对称距离计算方式是:

A Survey of Product Quantization

第一项忽略,因为查询过程中不变;第二项和PQ中一样可以预先计算O(DKM),在线查表即可O(M);第三项的计算是个问题,要是和第二项一样处理,在线过程时间复杂度是O(M^2),成为了计算瓶颈,AQ和CQ对此提出了不同解决方式。

AQ中使用额外的一字节标量量化来存储这一项,查询时时间复杂度是O(1);CQ训练子codeword(子codeword的内积),第三项近似成一个常数。注意在原始PQ中这一项总是0,因为子codebook是正交的。

3.编码策略

A Survey of Product Quantization

A Survey of Product Quantization

 

 

 

 

 

 

 

 

 

 

 

 

上一篇:原来js让任务栏闪烁这么简单


下一篇:基于LVS-NAT的WEB服务的负载均衡实现