A Survey of Product Quantization 论文笔记

  • 摘要

  乘积量化(PQ)搜索及其衍生产品是用于大规模近似最近邻搜索的流行且成功的方法。 在本文中,我们回顾了这类算法的基本算法,并提供了可执行的示例代码。 然后,我们对最近基于PQ的方法进行了全面的调查。

  • PQ编码的推广与改进
  • 预先旋转

   原始PQ简单地将输入向量均匀地划分为子向量,而不考虑数据分布。 这对于诸如SIFT的结构化矢量很有效,但并非总是如此,例如,D / M维子矢量没有任何含义。 对于这种一般情况,原始论文提出对所有矢量初始应用随机旋转(x←Rx,其中R∈RD×D是随机旋转矩阵)以使维度不相关。 然后,作者提出通过一组具有方差平衡准则的反射来优化正交矩阵。

  优化乘积量化(OPQ)扩展了这个想法。 OPQ计算旋转(正交)矩阵,迭代地最小化量化误差。 所有矢量初步旋转R。 OPQ的训练阶段重复两个步骤:(1)通过应用R来旋转所有训练向量,然后以与PQ相同的方式训练码字。 (2)给定经过训练的码字,通过求解正交Procrustes问题来更新R(18)。 OPQ是PQ的直接扩展,并且总是通过应用旋转矩阵的适度额外成本来提高精度。 OPQ是PQ最广泛使用的改进之一。

  • 概括

  加法量化(AQ)和复合量化(CQ)推广PQ表示。

  原始PQ表示作为M个D / M维向量的级联的向量。 另一方面,AQ和CQ表示作为M个D维向量之和的向量。 第m个子码本是表示为其中cm 维度为RD但现在重建的矢量获得为

   由于AQ和CQ是PQ的推广,因此AQ / CQ的重建误差优于PQ。 另一方面,AQ / CQ的训练,编码和搜索需要更复杂的步骤,这导致更多的计算成本。

  • 替代编码策略

  为了获得更好的准确度(重建误差),已经提出了几种编码策略。 主要思想是设计一种更好的方法来将码字分配给输入向量。

  优化的Ck-means扩展了笛卡尔k-means在PQ中,向量的每个维度由单个码字表示。 优化的Ck-means使用多个码字来表示每个维度以实现更低的重建错误。

  树量化(TQ)遵循类似的想法。 TQ创建了一个赋值树,可以优化每个维度的码字的最佳分配。

  一些作品借用了残差编码的概念,这是源编码的另一种经典方法。 CompQ提出了一种有效的残差编码训练策略,并表明这种简单编码适用于ANN任务。 旨在提高PQ的表示能力的其他扩展包括用于编码阶段的稀疏编码。

    上述策略通常会增加PQ编码的准确性以及额外的分配成本。表1显示了本节介绍的方法的准确性比较。

  

  • 新问题设置

  虽然PQ的最初目标是解决一般的ANN搜索问题,但文献中已经考虑了其他设置。

  如何快速地使每个查询预处理的计算成本(而不是数据库上的距离搜索成本)成为一个开放的问题,特别是对于诸如AQ / CQ的复杂编码。 这对于高维向量尤其重要,因为每个请求每个预处理(建立距离表)取决于D.稀疏复合量化(SCQ)揭示了上述公式的第二项。 如果子码字的元素是稀疏的,则可以有效地计算。 SCQ实现与CQ相同的精度水平,具有与PQ几乎相同的计算成本。

  监督量化以监督方式扩展CQ。 基于PQ的方法最初是为无监督设置开发的,而监督搜索问题是由基于二进制的方法处理的。 据报道,与基于二元的监督方法相比,监督量化实现了更好的性能,但是一些研究人员最近质疑用于评估的设置。

  协作量化结合了多模态数据源,例如文本和图像。 这也优于基于二进制的方法的竞争对手。

猜你喜欢

转载自www.cnblogs.com/dushuxiang/p/10409264.html