2014CVPR(累积量化)-Additive Quantiza

2022-06-10  本文已影响0人  Caucher

1. Introduction

针对于此,本文提出累积量化(Additive Quantization, AQ)方案,泛化PQ并进一步提升PQ准确性。

2. Additive quantization

2.1. Additive quantization representation

2.2. Fast distance and scalar product computations

本节将查询时如何算压缩向量x和未压缩的查询向量q的距离。
【编者注:按照文中的意思,距离度量应为欧氏距离L2】
压缩向量x是从codebooks中取出codewords相加得来的。

向量内积:
可以在查询时,首先将q和所有codewords的内积预先算出来,代价为O(MKD)
向量模长:
x向量是一组codewords加起来构造出来的,它的模长也是一组向量加和的模长。可以转换为和的乘积,如下式:

image.png
这样就可以在构建索引时,预先算好codeword之间的两两乘积,共K^2M^2项,查询的时候需要M^2/2次取用和累加。
【编者注:原文作者还提出了对向量模长也进行量化的方法,但肯定有精度损失,编者觉得意义有限】

2.3. Codebook learning

接下来的问题就是codebooks如何获得,每个向量的编码(本质是一个分配向量)如何做。
这两者是一个互相依赖的关系,需要不断迭代。
需要首先初始化codebooks或者向量编码。作者的做法是初始化向量编码,每个位置[1,k]随机选一个数,然后根据这个分配向量,构建codebooks,构建好之后,再去调整分配向量;依次类推,循环迭代,直到收敛或达到收敛指标为止。
这个过程和一般的K-means算法也是很像的。

本节首先讲在给定分配向量之后,如何确定codebooks。

2.4. Vector encoding

和找codebooks一样,纯粹按照精确的代价函数去找编码,代价太高,难以接受,仍然要想一些近似的办法。
本文给的方法是一个beam search的方法来寻找原始向量x的编码。
共迭代M次。

2.5. Additive product quantization

3. Experiments

作者选取了原始PQ和Cartesian K-means作为OPQ进行对比。

上一篇 下一篇

猜你喜欢

热点阅读