相似性搜索:第 7 部分--LSH 组合物

Vyacheslav Efimov – Medium

S相似性搜索是一个问题,给定一个查询,目标是在所有数据库文档中找到与其最相似的文档。

一、说明

        在数据科学中,相似性搜索经常出现在 NLP 领域、搜索引擎或推荐系统中,其中需要检索最相关的文档或项目以进行查询。有多种不同的方法可以提高海量数据的搜索性能。

        在本系列文章的最后两部分中,我们深入研究了 LSH——一种将输入向量转换为低维哈希值,同时保留有关其相似性的信息的算法。

        特别是,我们已经研究了两种适用于不同距离度量的算法:

        相似性搜索:第 1 部分- kNN 和倒置文件索引-CSDN博客      

        相似性搜索:第 2 部分:产品量化-CSDN博客 

        相似性搜索:第 3 部分--混合倒排文件索引和产品量化 

        相似性搜索:第 4 部分--分层可导航小世界 (HNSW)  

相似性搜索:第 5 部分--局部敏感哈希 (LSH) 

        相似性搜索:第 6 部分--LSH 森林的随机投影  

        随机投影方法构建了保持向量余弦相似性的超平面森林。

        事实上,LSH 算法也适用于其他距离度量。尽管每种方法都有其独特的部分,但每种方法中都出现了许多共同的概念和公式。为了促进未来新方法的学习过程,我们将更多地关注理论并提供一些经常出现在高级 LSH 文献中的基本定义和定理。在本文结束时,我们将能够通过简单地将基本方案组合为乐高积木来构建更复杂的 LSH 方案。

       最后我们将了解如何将欧几里得距离纳入 LSH 中。

        注意。作为主要先决条件,您应该已经熟悉本系列文章的第 5 部分和第 6 部分。如果没有,强烈建议先阅读它们。

        注意。余弦距离正式定义在 [0, 2] 范围内。为简单起见,我们将其映射到区间 [0, 1],其中 0 和 1 分别表示最低和最高可能的相似度。

二、LSH 的正式定义

给定距离度量 d,如果对于随机选择的对象 x 和 y,满足以下条件,则 H 被称为 (d₁, d2, p₁, p2) 敏感的 LSH 函数:

  • 如果 d(x, y) ≤ d₁,则 p(H(x) = H(y)) ≥ p₁,即 H(x) = H(y) 的概率至少为 p₁。
  • 如果 d(x, y) ≥ d2,则 p(H(x) = H(y)) ≤ p2,即 H(x) = H(y) 的概率至多为 p2。

        让我们了解这些陈述的含义。当两个向量相似时,它们之间的距离较小。基本上,第一个语句确保将它们散列到同一存储桶的概率高于某个阈值。这样,就消除了一些漏报:如果两个向量之间的距离大于d₁,那么它们散列到同一桶的概率始终小于p₁。相反,第二条语句控制误报:如果两个向量不相似并且它们之间的距离大于d2 ,则它们出现在同一桶中的概率上限为p2阈值。

        考虑到上面的陈述,我们通常希望系统中满足以下陈述:

  • p₁应尽可能接近 1,以减少假阴性的数量。
  • p2应尽可能接近 0,以减少误报的数量。
  • d₁d2之间的差距应尽可能小,以减少无法对数据进行概率估计的区间。

        左图显示了一条典型曲线,展示了 (d1, d2, p1, p2) 符号的 LSH 参数之间的关系。右侧的曲线展示了阈值d₁d2之间没有间隙的理想情况。

        有时,上面的陈述是通过使用相似度s而不是距离d 来引入的:

给定相似性度量 s,如果对于随机选择的对象 x 和 y,满足以下条件,则 H 被称为 (s₁, s2, p₁, p2) 敏感的 LSH 函数:

  • 如果 s(x, y) ≥ s₁,则 p(H(x) = H(y)) ≥ p₁,即 H(x) = H(y) 的概率至少为 p₁。
  • 如果 s(x, y) ≤ s2,则 p(H(x) = H(y)) ≤ p2,即 H(x) = H(y) 的概率至多为 p2。

        左图显示了一条典型曲线,展示了 ( s1, s2, p1, p2 ) 符号的 LSH 参数之间的关系。右侧的曲线展示了阈值s₁s2之间没有间隙的理想情况。

        注意。在本文中,将使用两种符号(d1、d2、p1、p2)(s1、s2、p1、p2) 。根据文本中符号中使用的字母,应该清楚是暗示距离d还是相似度s 。默认情况下,使用符号(d₁, d2, p₁, p2) 。

三、LSH 示例

        为了让事情更清楚,让我们证明以下陈述:

        如果距离度量s是 Jaccard 指数,则H是一个(0.6, 0.6, 0.4, 0.4)敏感的 LSH 函数。基本上,必须证明等价的陈述:

  • 如果 d(x, y) ≤ 0.6,则 p(H(x) = H(y)) ≥ 0.4
  • 如果 d(x, y) ≥ 0.6,则 p(H(x) = H(y)) ≤ 0.4

        从本系列文章的第 5 部分中,我们知道两个二进制向量获得相等哈希值的概率等于 Jaccard 相似度。因此,如果两个向量相似度至少为 40%,那么就保证获得相等哈希值的概率也至少为 40%。同时,至少 40% 的 Jaccard 相似度相当于最多 60% 的 Jaccard 指数。至此,第一个命题得证。对于第二个语句可以进行类似的思考。

        这个例子可以推广为定理:

定理。如果 d 是杰卡德指数,则 H 是 LSH 函数的 (d₁, d2, 1 — d₁, 1 — d2) 族。

        同样,根据第6部分得到的结果,可以证明另一个定理:

定理。如果 s 是余弦相似度(在 -1 和 1 之间),则 H 是 LSH 函数的 (s₁, s2, 1 — arccos(s₁) / 180, 1 — arccos(d2) / 180) 系列。

四、组合 LSH 函数

        让我们参考一下之前在 LSH 中学到的有用概念:

  • 回到关于 minhashing 的第 5 部分,每个向量都被分成几个带,每个带包含一组行。为了将一对向量视为候选向量,必须存在至少一个所有向量行都相等的带。
  • 关于随机投影的第 6 部分,仅当存在至少一棵树且所有随机投影均未分离初始向量时,才将两个向量视为候选向量。

        我们可以注意到,这两种方法在底层有相似的范例。仅当n 个配置向量中至少有一次k次具有相同的哈希值时,它们才将一对向量视为候选向量。使用布尔代数符号,可以写成这样:

        基于这个例子,让我们介绍逻辑运算符ORAND,它们允许聚合一组哈希函数。然后我们将估计它们如何影响两个候选向量的输出概率以及假阴性假阳性错误率。

3.1 与运算符

给定 n 个独立的 LSH 函数 H₁、H2、…Hₙ,仅当两个向量的所有n 个对应哈希值都相等时, AND运算符才会将两个向量视为候选对。否则,向量不被视为候选向量。

如果通过AND运算符聚合两个高度不同的向量的哈希值,那么它们成为候选者的概率随着使用的哈希函数数量的增加而降低。因此,假阳性的数量减少了。

同时,两个相似的向量可能会偶然产生一对不同的哈希值。因此,算法不会认为此类向量相似。这方面导致假阴性率较高。

定理。考虑 r 独立 (s₁, s2, p₁, p2) 敏感的 LSH 函数。将这些 r LSH 函数与 AND 运算符组合会产生一个新的 LSH 函数,其参数为

        使用几个独立事件的概率公式很容易证明这个说法,该公式乘以所有事件的概率来估计所有事件发生的概率。

2.2 或运算符

给定 n 个独立的 LSH 函数 H₁、H2、…Hₙ,仅当两个向量的 n 个对应哈希值中至少有一个相等时, OR运算符才会将两个向量视为候选对。否则,向量不被视为候选向量。

        与AND运算符相反,OR运算符增加了任意两个向量成为候选向量的概率。对于任何向量对,至少有一个对应的哈希值相等就足够了。因此,OR 聚合会减少假阴性的数量并增加假阳性的数量。

定理。考虑b 个独立的 (d₁, d2, p₁, p2) 族 LSH 函数。将这b 个LSH 函数与 AND 运算符组合会产生一个新的 LSH 函数,其参数为

        我们不会证明这个定理,因为本系列文章的第 5 部分已经获得并解释了由此产生的类似概率公式。

3.3 作品

        通过ANDOR运算,可以通过各种方式将它们组合在一起,以更好地控制误报率漏报率。让我们想象一下AND组合器使用r LSH 函数,OR组合器使用b LSH 函数。使用这些基本组合器可以构建两种不同的组合:

        AND-OR 和 OR-AND 是可以使用 AND 和 OR 运算符构建的两种组合类型。

        前两篇文章中描述的算法使用AND-OR组合。事实上,没有什么可以阻止我们基于ANDOR运算构建更复杂的组合。

3.4 构图示例

        让我们研究一个示例,了解ANDOR的组合如何显着提高性能。假设参数b = 4r = 8的OR-AND组合。根据上面的相应公式,我们可以估计两个候选向量在组合后的初始概率如何变化:

        通过应用参数 b = 4 和 r = 8 的 OR-AND 组合来改变概率。第一行显示初始概率,第二行显示转换后的概率。

        例如,如果对于两个向量之间的某个相似度值,单个 LSH 函数在 40% 的情况下将它们散列到同一个存储桶,那么在 OR- AND组合之后,在 32.9% 的情况下它们将被散列。

        要了解组合的特殊之处,请考虑(0.4, 1.7, 0.8, 0.2)敏感的 LSH 函数。经过OR-AND转换后,LSH 函数转换为(0.4, 1.7, 0.0148, 0.987)敏感格式。

        本质上,如果最初两个向量非常相似并且距离小于 0.4,那么在 80% 的情况下它们将被视为候选向量。然而,通过应用组合,它们现在是 98.7% 场景的候选者,从而导致假阴性错误大大减少!

        类似地,如果两个向量彼此非常不同并且距离大于 1.7,那么现在仅在 1.48% 的情况下将它们视为候选向量(之前为 20%)。这样,误报错误的频率减少了 13.5 倍!这是一个巨大的进步!

        显示不同组合后初始概率如何转换的曲线

一般来说,通过使用(d₁, d2, p₁, p2)敏感的 LSH 函数,可以将其转换为(d₁, d2, p'₁, p'2)格式,其中p'₁接近 1 p'2接近 0。越接近 1 和 0 通常需要使用更多的组合

五、其他距离指标的 LSH

        我们已经深入研究了 LSH 方案,用于保存有关 Jaccard 指数和余弦距离的信息。自然出现的问题是是否可以将 LSH 用于其他距离度量。不幸的是,对于大多数指标,没有相应的 LSH 算法。

        然而,LSH 模式适用于欧几里得距离——机器学习中最常用的指标之一。由于它经常使用,我们将研究如何获取欧氏距离的哈希值。通过上面介绍的理论符号,我们将证明该指标的一个重要的 LSH 属性。

4.1 欧几里得距离的 LSH

        欧几里得空间中点的散列机制包括将它们投影到随机线上。算法假设

  • 如果两个点彼此相对接近,那么它们的投影也应该接近。
  • 如果两点彼此相距很远,那么它们的投影也应该很远。

        为了测量两个投影的接近程度,可以将一条线分为几个相等的段(桶),每个段的大小为a。每条线段对应一个特定的哈希值。如果两个点投影到同一条线段,则它们具有相同的哈希值。否则,哈希值是不同的。

        在随机线上投影点

        尽管该方法乍一看似乎很强大,但它仍然可以将彼此相距较远的点投影到同一段。当连接两点的线几乎垂直于初始投影线时,尤其会发生这种情况。

        尽管两个点彼此相距较远,但它们仍然有可能被散列到同一个桶中。

        为了降低错误率,强烈建议使用随机投影线的组合,如上所述。

        几何上可以证明,如果a是欧氏空间中单条线段的长度,则H(a/2,2a,1/2,1/3)敏感的LSH函数。

六、结论

        在本章中,我们积累了一般 LSH 表示法的知识,这有助于我们正式引入组合操作,从而显着降低错误率。值得注意的是,LSH 仅适用于一小部分机器学习指标,但至少适用于最流行的指标,如欧氏距离、余弦距离和杰卡德指数。当处理测量向量之间相似性的另一个度量时,建议选择另一种相似性搜索方法。

        作为参考,本文中介绍的陈述的正式证明可以在这些注释中找到。

七、资源

  • 局部敏感哈希 | 大数据分析讲义| 尼姆拉·穆斯塔法
  • 余弦距离 | 维基百科

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/163118.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【Java系列】Java 简介

目录 Java 简介主要特性发展历史Java 开发工具系列文章版本记录 Java 简介 Java 是由 Sun Microsystems 公司于 1995 年 5 月推出的 Java 面向对象程序设计语言和 Java 平台的总称。由 James Gosling和同事们共同研发,并在 1995 年正式推出。 后来 Sun 公司被 Ora…

黑豹程序员-架构师学习路线图-百科:MySQL

文章目录 1、什么是MySQL2、MySQL受喜爱程度经典四人组: 3、发展历史4、MariaDB 1、什么是MySQL MySQL是一个关系型数据库管理系统,由瑞典MySQL AB 公司开发,属于 Oracle 旗下产品。MySQL 是最流行的关系型数据库管理系统之一,在 …

canvas绘制扫描图

先定义一个canvas <div class"canFa"><canvas width"380" id"can3"></canvas></div>主要绘制函数 var chosHeight document.getElementsByClassName("canFa")[0].children[0].clientHeight;var chosWidth …

Anthropic全球上线AI语言模型Claude 2;多模态系统:融合文本和图像的新前沿

&#x1f989; AI新闻 &#x1f680; Anthropic全球上线AI语言模型Claude 2&#xff0c;编程、数学、推理能力大幅提升 摘要&#xff1a;Anthropic在全球正式上线了AI语言模型Claude 2。相比前代版本&#xff0c;Claude 2在编程、数学、推理等方面都有大幅提升&#xff0c;支…

论坛介绍 | COSCon'23 云计算(C)

众多开源爱好者翘首期盼的开源盛会&#xff1a;第八届中国开源年会&#xff08;COSCon23&#xff09;将于10月28-29日在四川成都市高新区菁蓉汇举办。本次大会的主题是&#xff1a;“开源&#xff1a;川流不息、山海相映”&#xff01;各位新老朋友们&#xff0c;欢迎到成都&am…

关于opencv的contourArea计算方法

cv::contourArea计算的轮廓面积并不等于轮廓点计数&#xff0c;原因是cv::contourArea是基于Green公式计算 老外的讨论 github 举一个直观的例子&#xff0c;图中有7个像素&#xff0c;橙色为轮廓点连线&#xff0c;按照contourArea的定义&#xff0c;轮廓的面积为橙色所包围…

anaconda中安装pytorch(GPU版)(离线安装)(最简单)

anaconda中安装pytorch&#xff08;GPU版&#xff09;&#xff08;离线安装&#xff09;&#xff08;最简单&#xff09;_anaconda安装pytorch gpu-CSDN博客anaconda里安装pytorch,GPU版本&#xff0c;离线本地安装&#xff0c;新手_anaconda安装pytorch gpuhttps://blog.csdn.…

头歌平台——基于数组的工资处理系统

第1关&#xff1a;数据输入和计算 任务描述 本关任务&#xff1a; 编写函数input_data(char uid[10][5], int salary[10], int csalary[10], int revenue[10], int _water_electricity[10], int _deductions[10])&#xff0c;作用为输入职工的代号&#xff0c;岗位工资&#…

打工人一定要学会找资源~

还有很多小伙伴不知道怎么找资源吗&#xff1f;今天就给大家推荐一下几个资源网站&#xff0c;无论是图片又或是视频。通通都能找到&#xff01; 一、全网1000平台视频解析下载器——XDown 在线视频下载工具&#xff0c;几乎能下全网所有平台的视频&#xff0c;而且下完还能自…

javaEE - 2(11000字详解多线程)

一&#xff1a;多线程带来的的风险-线程安全 线程安全的概念&#xff1a;如果多线程环境下代码运行的结果是符合我们预期的&#xff0c;即在单线程环境应该的结果&#xff0c;则说这个程序是线程安全的。 当多个线程同时访问共享资源时&#xff0c;就会产生线程安全的风险&am…

Unity3D 拖拽赋值组件与通过Find赋值组件的优点与缺点详解

Unity3D是一款流行的游戏开发引擎&#xff0c;提供了丰富的功能和工具&#xff0c;使开发人员能够轻松创建高质量的游戏。在Unity3D中&#xff0c;我们经常需要通过拖拽赋值组件或通过Find赋值组件来实现不同对象之间的交互。本文将详细介绍这两种方法的优点和缺点&#xff0c;…

ICML2021 | RSD: 一种基于几何距离的可迁移回归表征学习方法

目录 引言动机分析主角&#xff08;Principal Angle&#xff09;表征子空间距离正交基错配惩罚可迁移表征学习实验数据集介绍 实验结果总结与展望 论文链接 相关代码已经开源 引言 深度学习的成功依赖大规模的标记数据&#xff0c;然而人工标注数据的代价巨大。域自适应&…

VA01/VA02/VA03 销售订单根据定价和步骤校验权限隐藏价格

1、业务需求 针对用户使用销售订单时&#xff0c;根据定价和步骤顺序&#xff0c;判断是否有权限&#xff0c;没有权限时隐藏销售订单抬头和行项目的部分价格数据 要限制的定价和步骤在spro中的位置 限制的步骤 2、增强实现 2.1权限对象 创建带有定价和步骤的权限对象 分配…

力扣刷题 day48:10-18

1.4的幂 给定一个整数&#xff0c;写一个函数来判断它是否是 4 的幂次方。如果是&#xff0c;返回 true &#xff1b;否则&#xff0c;返回 false 。 整数 n 是 4 的幂次方需满足&#xff1a;存在整数 x 使得 n 4x 方法一&#xff1a;不断除以4 #方法一&#xff1a;不断除…

如何用工业树莓派和MQTT平台打通OT和IT?

一、应用设备 OT端设备&#xff1a;步进电机&#xff0c;MODBUS TCP远程I/O模块&#xff0c;PLC设备 边缘侧设备&#xff1a;宏集工业树莓派&#xff1b; IT端设备&#xff1a;PC、安卓手机&#xff1b; IT端软件&#xff1a;宏集HiveMQ MQTT通信平台 二、原理 宏集工业树…

python之自动化点餐定时任务

1、准备一个可执行的python文件 2、使用定时任务管理器配置定时任务 Cron是linux系统的任务管理器 2.1打开终端或控制台 2.2进入crontab编辑器&#xff1a; crontab -e 编辑crontab文件 crontab -l 列出当前用户的所有定时任务 crontab -r 删除当前用户的crontab文…

Web安全测试详解

前言 随着互联网时代的蓬勃发展&#xff0c;基于Web环境下的应用系统、应用软件也得到了越来越广泛的使用。 目前&#xff0c;很多企业的业务发展都依赖于互联网&#xff0c;比如&#xff0c;网上银行、网络购物、网络游戏等。但&#xff0c;由于很多恶意攻击者想通过截获他人…

虹科 | 解决方案 | 机械免拆压力测试方案

对于发动机的气门卡滞或气门开闭时刻错误、活塞环磨损、喷油嘴泄漏/堵塞等故障&#xff0c;往往需要解体发动机或拆卸部件才能发现&#xff1b;而对于某些轻微的故障&#xff0c;即使解体了发动机后也经常难于肉眼判别 虹科Pico提供的WPS500压力测试方案&#xff0c;可以动态测…

7+非肿瘤+WGCNA+分型+实验,筛选关键基因进一步分型以及表达验证

今天给同学们分享一篇非肿瘤WGCNA分型实验的生信文章“Identification of molecular subtypes and immune infiltration in endometriosis: a novel bioinformatics analysis and In vitro validation”&#xff0c;这篇文章于2023年8月18日发表在Front Immunol期刊上&#xff…

IPV6 ND协议--源码解析【根源分析】

ND协议介绍 ND介绍请阅读上一篇文章&#xff1a;IPv6知识 - ND协议【一文通透】11.NDP协议分析与实践_router solicitation报文中不携带source link-layer address-CSDN博客 ND协议定义了5种ICMPv6报文类型&#xff0c;如下表所示&#xff1a; NS/NA报文主要用于地址解析RS/…