更高效的近似最近邻搜索
当今许多机器学习应用都涉及最近邻搜索:数据被表示为高维空间中的点;查询(如图片或文本字符串)被嵌入该空间;检索与查询最接近的数据点作为候选解决方案。然而,计算查询与数据集中每个点之间的距离通常耗时过长,因此模型构建者转而使用近似最近邻搜索技术。其中最流行的是基于图的近似方法,即将数据点组织成图结构,搜索算法遍历图并持续更新遇到的最近邻点列表。
在今年的网络会议上发表的一篇论文中,提出了一种新技术,使基于图的最近邻搜索更加高效。该技术基于以下观察:当计算查询与当前候选列表中所有点更远的点之间的距离时,近似距离测量通常已足够。因此,提出了一种高效计算近似距离的方法,显示可将近似最近邻搜索所需时间减少20%至60%。
基于图的搜索
大致来说,近似k最近邻搜索算法(寻找最接近查询向量的k个邻居)分为三类:量化方法、空间分区方法和基于图的方法。在多个基准数据集上,基于图的方法目前表现最佳。
给定查询q的嵌入,基于图的搜索选择图中的一个点c,并探索其所有邻居(即与其共享边的节点)。算法计算这些节点与查询的距离,并将最接近的节点添加到候选列表中。然后从这些候选中选择最接近查询的点,探索其邻居,必要时更新列表。此过程持续进行,直到未探索的图节点与查询向量之间的距离开始增加——表明算法正在离开真实最近邻的邻域。
过去关于基于图近似的研究集中于构建底层图的方法。例如,有些方法在给定节点和远处节点之间添加连接,以确保搜索不会陷入局部最小值;有些方法专注于修剪高度连接的节点,防止同一节点被重复访问。每种方法各有优势,但没有一种在所有情况下都明显胜出。
转而专注于一种适用于所有图构建方法的技术,因为它提高了搜索过程本身的效率。该技术称为FINGER(基于图的近似最近邻搜索的快速推理)。
近似距离计算
考虑查询向量q、正在探索其邻居的节点c,以及c的一个邻居d(我们希望计算其与q的距离)。
q和d都可以表示为沿c的投影和垂直于c的“残差向量”之和。这本质上是将c视为空间的基向量。如果算法正在探索c的邻居,

最低0.47元/天 解锁文章
3131

被折叠的 条评论
为什么被折叠?



