美文网首页
2015TPAMI(IMI多维倒排索引)-The Inverte

2015TPAMI(IMI多维倒排索引)-The Inverte

作者: Caucher | 来源:发表于2022-06-17 14:19 被阅读0次

2012CVPR是本论文的会议版本。
本文是乘积量化技术(PQ) 最典型的索引方式。

1 INTRODUCTION

  • 乘积量化技术在查询时,需要找到query对应Voroni cell或者和周边cell的点,如果数据量比较大,Cell也比较大的话,那么返回的点就会很多,需要花在Refine上的时间也会更多。因此一个迫切的要求是设计更为细粒度的分区,即vorooni cell面积更小。

  • 一个最直接的方式是把codewords的个数提升一些,但是这同时意味着索引构建时间(学习时间)也更长。

  • 一些索引方法也可以引入进来,比如kd-tree,tree codebooks等,但是经常会降低查询准确性。

  • 本文提出的方法:多维倒排索引,在很多方面和倒排索引很相似,其优势是在不增加查询和构建时间的基础上,相比于倒排索引,能产生更细粒度的子分割(在中等大小的codebooks上)。内存消耗的增长也非常微小。

  • 多维倒排索引尤其适用于大数据集上。

3 THE INVERTED MULTI-INDEX

3.1 The structure of the inverted multi-index.

  • 乘积量化的核心思想就是先分段,每段分别聚类量化。
  • 问题出在查询上。简单点说,现在假设就分两段,每段K个codewords,那么在PQ空间上,一共有K^2个聚类中心。
  • 标准的倒排索引就是把这个空间划分成K^2个Voroni cell,查询时query在哪个cell就定位即可。如下左图(两维数据),但是会产生一些边界问题,也容易产生倾斜问题。
image.png
  • 本文的思想就是不用voroni cell,用grid,来切割PQ空间。每个轴上各格子中心点,其实就是那一组codewords聚类的中心。
  • 形式化上的来讲,空间上的每一个点,都找每一段(每个轴/维度)上找和它最近的那个聚类中心(codeword),各个维拼起来,就找到了所在的格子。


    image.png

3.2 Querying the multi-index.

  • 查询的时候,第一阶段分段query,分别找每一段落在轴的哪个位置上,和轴其他格子刻度的距离是多少;第二阶段是将各个轴的距离组合起来,找到最合适的若干格子用于查询。
    • 注意,这里需要各段的距离可以线性叠加,或至少有公式可以计算,比如欧氏距离的平方就可以直接相加表示拼接起来的距离。


      image.png

3.3 Inverted index vs. inverted multi-index.

  • 这里的标准倒排索引,指的是不分段,直接K-means,找出K个聚类中心,用Voroni cell划分空间,共K个cell,做倒排索引的情况。
    • 划分较粗;
    • 列表长度基本均衡;
    • 查询时,K次M维距离计算;
  • 多维倒排索引,就是分成2段,每段K-means找K个聚类中心,用gird划分空间,共K^2个cell,做成倒排索引。
    • 划分较细;
    • 列表长度不均衡,甚至有很多空列表;
    • 查询时,每个维度K次计算,每次计算M/2向量距离,总共还是KM次计算。额外的计算量是给cell排序选TopK的计算量,但作者说这个量不大,应该确实如此。
    • 内存负载额外会承担一些列表元信息,因为列表更多了,但是这个信息是很小的。数据或者数据指针二者的内存消耗都是一样的,因为数据总数是一致的。codebooks大小也是一致的。

【编者注:考虑用Voroni cell做空间划分,然后用倒排索引做索引结构的情况:此时codeboos的大小也是一样的,但是在查询时,需要额外增加K^2次计算算出和各个聚类中心的距离,计算到每个聚类中心的距离只需要查表就可以了。内存负载和多维倒排索引是一样的。列表长度相对也会更为均衡。】

  • 【论文中后面补充了一段为什么选择分两段是最优选择,不过编者没有理解,希望有理解的朋友给予指教。】

4 APPROXIMATE NEAREST NEIGHBOR SEARCH WITH INVERTED MULTI-INDEX

通过上述搜索方法得到的candidate vectors,被赋予量化后的向量和量化后的残存向量,进一步进行rerank。
本文将rerank过程进一步加速。
【编者注:有空更新】

5 EXPERIMENTS

5.1 Indexing Performance

Recall定义为1-NN准确找到的概率。

5.1.1 Candidate List Quality

T是检索的对象数。个人觉得和非PQ系列的方法对比意义有限。


image.png

5.1.2 Retrieval Speed

  • 首先是红色实线和蓝色实线,之间的差距就是multi-sequence算法,可见算法复杂度比较稳定,但仍有一定影响。
  • 红色线在列表长度较长时,查询时间开始线性增长。
  • 作者说,标准倒排索引的速度快,很可能来自向量化实现。


    image.png

5.1.3 Multi-Index + PCA

引入PCA降维之后,查询速度肯定会变快,文中没有实验。问题在于精确率会不会下降。
作者做了两种pca,一种native是直接对原始数据PCA,128维降成32维;另一种是分PQ-aware是分两段分别PCA再拼起来。
可以看到PQ-aware-PCA对准确率影响很小。


image.png

5.2 Approximate Nearest Neighbor Search

相关文章

  • 2015TPAMI(IMI多维倒排索引)-The Inverte

    2012CVPR是本论文的会议版本。本文是乘积量化技术(PQ) 最典型的索引方式。 1 INTRODUCTION ...

  • IMI 倒排多索引

    倒排多索引 倒排多索引体现在倒排索引的的时候,使用PQ M=2来代替倒排的K-means,把整个数据集划分为两个子...

  • Elasticsearch(一):概念与基本API

    安装 Elasticsearch 常用 API index Document 倒排索引与分词 倒排索引 倒排索引与...

  • ElasticSearch(基础)

    1.1 倒排索引 倒排索引原理?? ElasticSearch使用一种称为 ==倒排索引== 的结构,它适用于快...

  • ElasticSearch 倒排索引简析

    内容概要 倒排索引是什么?为什么需要倒排索引? 倒排索引是怎么工作的? 1. 倒排索引是什么? 假设有一个交友网站...

  • 搜索引擎索引-倒排索引

    倒排索引基础 倒排索引示范 Elasticsearch中使用一种称为倒排索引的结构,适用于快速的全文搜索。一个倒排...

  • ElasticSearch知识库

    一、原理篇 Elasticsearch 的倒排索引是什么? 倒排索引=term字典+docId倒排表,term字典...

  • Elasticsearch学习笔记(06) - 倒排索引简介

    Elasticsearch的核心是基于倒排索引。因此,我们有必要了解一下倒排索引算法。 简单的例子 既然有倒排索引...

  • Elasticsearch之映射与分析

    倒排索引 Elasticsearch 使用一种称为 倒排索引 的结构,它适用于快速的全文搜索。一个倒排索引由文档中...

  • 搜索引擎之倒排索引浅析

    上一篇文章 ElasticSearch 术语中提到了倒排索引,那么这篇文章就来讲解下什么是倒排索引,倒排索引的数据...

网友评论

      本文标题:2015TPAMI(IMI多维倒排索引)-The Inverte

      本文链接:https://www.haomeiwen.com/subject/wzfamrtx.html