PM-LSH: A Fast and Accurate LSH Framework for High-Dimensional Approximate NN Search(VLDB)

article/2025/10/29 8:29:44

由于维数灾难的影响,高维空间中的最近邻(NN)搜索本质上是计算开销巨大的。局部敏感哈希(locality-sensitive hashing, LSH)是一种著名的近似神经网络搜索算法,能够以恒定概率在亚线性时间内回答c-近似神经网络(c-ANN)查询。现有的LSH方法主要基于哈希桶建立索引,以便快速地检索候选点。然而,现有的粗粒度结构无法为候选点提供准确的距离估计,这意味着在检查不必要的点时需要额外的计算开销。这反过来又会降低查询处理的性能。相比之下,本文提出了一种快速准确的LSH框架PM-LSH,旨在在大规模、高维数据集上计算cANN查询。首先,采用一种简单有效的pm树对数据点进行索引;其次,我们开发了一个可调的置信区间,以实现准确的距离估计,并保证高结果质量。第三,提出了一种基于pm树的高效算法来提高计算c-ANN查询的性能。真实数据上的大量实验表明,PM-LSH在效率和精度方面都优于现有的方法。

阅读者总结:这篇论文是2020 VLDB的最佳论文之一。这篇论文在理论证明方面很严谨,提出的算法在解决高维数据点近似查询方面具有启发性。1)利用投影方法,将高维空间中的点投影到低维空间中,同时保留在高维空间的相近性 2)实现了一个置信区间可调方法,提高估计精度 3)创建了一个PM树,实现近似性查询。

这篇论文值得学习,在理论证明和相关算法的分析方面,做了很详细的对比,提出采用PM-LSH算法的合理性。

问题:

 方法:本文提出一种快速准确的LSH框架PM-LSH,用于在大规模高维数据集上计算c-ANN查询。该框架由数据划分、距离估计和点探测3个部分组成。首先,采用简单有效的pm树[30]对投影空间中的点进行索引;其次,利用任意两点间投影距离与原始点到投影距离之间的强相关性,在给定的原始点到投影距离的基础上建立一个可调的置信区间,以提高距离估计精度;第三,提出了一种高效的搜索pm树的算法,该算法通过一系列半径越来越大的范围查询来实现。与现有的LSH方法相比,PM-LSH能够同时实现高效率和高精度

 

 

 AWay of Probing

 接着介绍了现有LSH方法的统一框架,如图2所示,由数据划分、距离估计和点探测三个部分组成。

 

1 )Data Partitioning

现有的LSH方法通过哈希函数将数据点映射到投影空间后,采用"分治"的方式将投影空间划分为子空间。当发出查询时,会探测可能包含结果的区域,最后合并并返回这些区域的结果。在现有的LSH方法中,通常有两种数据划分方法:

 (1) Interval based Partitioning.  基本的LSH基于G(o)构造哈希桶,每个桶可以看作是一个边长w相等的m维超立方体。

(2) Metric Space Partitioning. SRS使用r -树来索引投影空间中的所有点,这样就支持增量kNN搜索。 对于内存处理,它也可以使用覆盖树(Cover Tree)。在PM-LSH中,我们使用PM-tree对投影空间进行划分,从而支持高效的范围查询。

2)Distance Estimation 为了准确估计距离,从距离估计器和估计粒度两个方面考虑。

  (1) Distance Estimator.

 

 (2) Estimation Granularity. Distance estimation methods may use different granularities:(i) Bucket to Bucket.(ii) Point to Bucket. (iii) Point to Point.

3)Point Probing.

假设我们探查T点。在基于哈希桶的索引方法中,如Multi-Probe、LSBtree和C2LSH,我们直接探测桶中的点,时间开销为O(T)。第二种方法是QALSH,它搜索B+-树中的点。时间开销为O(log n + T)。与前两种方法不同的是,SRS用r -树来索引点,并在投影空间中迭代寻找下一个NN

我们的PM-LSH可以看作是第二种和第三种方法的组合,因为我们在投影空间中构建pm -树,并执行范围查询来检索点。 

4. THE PM-LSH FRAMEWORK

我们继续介绍PM-LSH框架的细节。如前所述,RE方法通过扩大搜索半径来快速探测存储在哈希桶中的点,但由于索引结构粗粒度,存在距离估计不准确的问题,这将导致在检查不必要的点时产生计算开销。相反,MI方法用r树索引点,并迭代地返回投影空间中与q最近的点。然而,在r树中找到下一个精确神经网络的计算成本也很高,而且下一个神经网络不一定是原始空间中的最佳下一个候选神经网络。为了兼顾二者的优点,PM-LSH方法结合了RE和MI方法的思想,采用PM-tree代替R-tree来索引投影空间中的点,并执行一系列半径越来越大的范围查询,从而实现了效率和精度的兼顾。接下来,我们简要介绍如何构建pm树。

然后,分析了pm树和r树的代价模型,以了解在相应的范围查询负载下,pm树的性能如何优于r树。最后,给出了算法的具体实现。

4.1 Building a PM-tree in the Projected Space

 例3。如图4所示,我们选择o1和o11作为枢轴,采用球分区的方式对空间进行分区,如图4(a)所示。内部节点e1、e2、···、e6包含超球区域内的点,它们的中心和半径被保存为入口的一部分。当执行范围查询range(q, 2)时,我们在访问内部节点时检查剪枝条件。这里只检查了e4和e6。最后,我们返回{o14}作为结果。

4.3 Tunable Confidence Interval 

 根据引理3,我们建立了原始距离和投影距离置信区间之间的强关系,可用于回答(r, c)-BC和c- ann查询

 6. EXPERIMENTS

 

 

 

 

 

 结论:

本文提出一种快速准确的框架PMLSH,用于计算(c, k)-ANN查询,并在理论上保证结果质量。首先,采用pm树在投影空间中索引待查询的数据点;其次,为了提高投影空间中距离估计的精度,根据给定的原始距离建立一个可调的投影距离置信区间。最后,提出了一种有效的PMtree范围查询算法。在7个广泛使用的数据集上的实验结果表明,PM-LSH在查询效率和结果准确性方面均优于5个同类算法。与最接近的竞争对手(SRS)相比,PM-LSH将查询时间平均提高了30%。当所有竞争对手的查询时间大致相同时,PM-LSH比最近竞争对手(SRS)的查全率提高了约10%。


http://chatgpt.dhexx.cn/article/HRpnqOql.shtml

相关文章

Updatable Learned Index with Precise Positions(VLDB2022)

在现代数据库引擎中,索引在加速查询处理方面起着至关重要的作用。“学习索引”的新范式极大地改变了DBMS中索引结构的设计方式。关键的见解是,索引可以被视为预测数据集中查找键位置的学习模型。虽然这类研究在查找时间和索引大小方面都显示出良好的结果…

VLDB 2023 | 北大河图发布分布式训练神器Galvatron, 一键实现大模型高效自动并行...

关注公众号,发现CV技术之美 本文转自机器之心。 北大河图团队提出了一套面向大模型的自动并行分布式训练系统Galvatron,相比于现有工作在多样性、复杂性、实用性方面均具有显著优势,论文成果已经被 VLDB 2023 接收。 最近一段时间&#xff0c…

Benchmarking Learned Indexes(VLDB2021)

最近学习索引结构的进步建议用近似学习模型来替代现有的索引结构,比如b树。在这项工作中,我们提出了一个统一的基准,它将三种已经学习过的索引结构的优化实现与几种最先进的传统基准进行比较。通过使用四个真实的数据集,我们证明了…

阿里云数据库再获学术顶会认可,一文全览VLDB最新亮点

一年一度的数据库领域顶级会议VLDB 2019于当地时间8月26日-8月30日在洛杉矶圆满落幕。在本届大会上,阿里云数据库产品团队浓墨登场,不仅有多篇论文入选Research Track和Industrial Track,为了进一步加深产学研学术交流,阿里云还在…

2019计算机研究生暑期学校,2019年度VLDB暑期学校

由CCF数据库专业委员会、VLDB中国数据库学院主办,中国人民大学信息学院与数据工程与知识工程教育部重点实验室承办的2019年度VLDB暑期学校(VLDB Summer School 2019)于2019年7月22日在中国人民大学信息楼报告厅隆重举行开班仪式。出席开班仪式的嘉宾有:中…

13 种高维向量检索算法全解析!数据库顶会 VLDB 2021 论文作者干货分享

编者按: 以图搜图、商品推荐、社交推荐等社会场景中潜藏了大量非结构化数据,这些数据被工程师们表达为具有隐式语义的高维向量。为了更好应对高维向量检索这一关键问题,杭州电子科技大学计算机专业硕士王梦召等人探索并实现了「效率和精度最…

Deep Upsupervised Cardinality Estimation 解读(2019 VLDB)

Deep Upsupervised Cardinality Estimation 解读(2019 VLDB) Deep Upsupervised Cardinality Estimation选择度(基数)估计问题定义选择度和数据联合分布的关系深度自回归模型如何计算joint distribution编码解码策略具体执行属性的…

VLDB 2021 COCO 论文阅读

Epoch-based Commit and Replication in Distributed OLTP Databases 记录一篇之前读过的论文。。。 整篇论文的核心在于Epoch,将传统数据库以事务为粒度提交和恢复变成了以Epoch为粒度来提交和恢复,这样做的好处就是可以减少2PC和同步复制的时间开销。…

【区块链论文整理】VLDB篇

VLDB (Very Large Data Base)是数据库三大顶会之一,近几年也发表了不少水平很高的文章。本文主要针对VLDB 会议中区块链相关的论文进行简单整理。 2021 SlimChain: Scaling Blockchain Transactions through Off-Chain Storage and Parallel Processing…

入选数据库顶会 VLDB:如何有效降低产品级内存数据库快照尾延迟?

阿里云操作系统团队、阿里云数据库团队以及上海交通大学新兴并行计算研究中心一起合作的论文 “Async-fork: Mitigating Query Latency Spikes Incurred by the Fork-based Snapshot Mechanism from the OS Level” 被数据库系统领域顶会 Very Large Data Bases Conferences (V…

VLDB 2023 | 基于擦除的浮点无损压缩(附论文和源码)

大量浮点时间序列数据正以前所未有的高速率生成。一种高效、紧凑、无损的时间序列数据压缩方法对海量数据的应用场景至关重要。现有的大多数浮点无损压缩方法是基于异或操作,但它们没有充分利用尾随零,这通常会导致压缩率不尽如人意。本次为大家带来重庆…

运算符—逻辑运算符

目录 5.逻辑运算符 5.1逻辑运算符概述 5.2短路逻辑运算符 5.逻辑运算符 (学完之后要求能够使用逻辑运算符完成逻辑运算) 5.1逻辑运算符概述 在数学中,一个数据x,大于3,小于6,我们可以写为这样来表示&am…

C语言关系运算和逻辑运算

一、关系运算 1.关系运算符 每个关系运算符对它左侧值和右侧值进行比较大小的运算 2.关系表达式 用关系运算符连接起来的式子。 若关系为真,关系表达式的值为1; 若关系为假,关系表达式的值为0; 3.优先级 关系运算符优先级低于算术…

C语言复习--逻辑运算符|| 和,!

&& 只有两个条件都为真时,才为真。||只要一个为真,就为真。 逻辑运算符很重要的法则是短路法则。 逻辑运算符的运算顺序都是从左到右计算。 && 当左侧条件为假时,就不计算右侧。 || 都左侧条件为真时,就不计…

C语言:关系运算符逻辑运算符

本节的所讲解的符号,大家在生活中应该都有用过,像我们去商场买东西,都会比较一下价格,是不是相等啊,哪家的贵,哪家的便宜啊。 在C语言中程序中也存在这样的比较,这个时候就需要用到关系运算符了…

C语言逻辑运算符详解

情景模式&#xff1a;现在研发出了一款新的软件&#xff0c;要求使用者必须成年&#xff0c;并且成绩大于等于60&#xff0c;该怎么办呢&#xff1f; 或许你会想到使用嵌套的 if 语句&#xff0c;类似下面这样的代码&#xff1a; #include <stdio.h> int main() {int a…

C 语言 逻辑运算符

文章目录 介绍逻辑运算符一览案例演示 介绍 用于连接多个条件&#xff08;一般来讲就是关系表达式&#xff09;&#xff0c;最终的结果要么是真(非 0 表示)&#xff0c;要么是 假(0 表示) 。 逻辑运算符一览 下表显示了 C 语言支持的所有逻辑运算符。假设变量 A 的值为 1&am…

☀️光天化日学C语言☀️(11)- 逻辑运算符 | 我是一个有逻辑的人

&#x1f649;饭不食&#xff0c;水不饮&#xff0c;题必须刷&#x1f649; C语言免费动漫教程&#xff0c;和我一起打卡&#xff01; &#x1f31e;《光天化日学C语言》&#x1f31e; LeetCode 太难&#xff1f;先看简单题&#xff01; &#x1f9e1;《C语言入门100例》&#…

C语言逻辑运算符介绍和示例

文章目录 1、逻辑运算符介绍2、逻辑表达式的书写3、不得不说的逻辑非4、获取视频教程5、版权声明 1、逻辑运算符介绍 在日常生活中&#xff0c;要做出某个决定&#xff0c;需要判断的条件往往不止一个&#xff0c;需要判断多个条件&#xff0c;例如超女选秀&#xff0c;参与选…

C语言按位逻辑运算符总结-与、或、非、异或

点击上方蓝字关注我&#xff0c;了解更多咨询 C中有按位逻辑运算符&#xff1a;按位取反、按位与、按位或、按位异或。这4个运算符可以用于整型&#xff0c;包括char类型。按位操作针对每一个位进行操作&#xff0c;不影响左右两边的位。4个运算符的作用总结如下&#xff1a; 一…