当前位置: 首页 > news >正文

局部敏感哈希(LSH)

概述

欧式空间中,将高维空间的点映射到低维空间,原本接近的点在低维空间中肯定依然接近,但原本远离的点则有一定概率变成接近的点。

这句话的意思是,在欧氏空间中,使用随机投影等降维映射时,原本距离较近的点在映射后仍然会保持较近的距离,因此它们被划分到同一个哈希桶中的概率很高。

而原本距离较远的点也可能因为投影碰撞而意外被划分到同一个桶中,但这种情况发生的概率较低。

这正是局部敏感哈希(LSH) 能够高效进行近似最近邻搜索的核心依据。

直观理解

近距离点(相似):由于它们在原始空间中很近,在任意随机方向上的投影值也相差不大,因此它们落入同一个桶(如取整后编号相同)的概率高。

远距离点(不相似):它们在随机方向上的投影值相差较大,落入同一个桶的概率低(但可能发生碰撞,只是概率小)。

LSH 通过多次独立随机投影,将每个点映射为一个由多个整数组成的哈希码,并将具有相同哈希码的点放入同一个桶。查询时,只需计算查询点的哈希码,然后在对应桶中搜索即可。

构造 LSH 桶的经典方法:p-stable LSH(欧氏距离)

对于欧氏距离,常用的构造方式是:

  • 从标准正态分布中随机生成一个 d 维向量 v(每个分量独立同分布)。

  • 随机选择一个实数 b,均匀分布在 [0,w) 上(w 是桶宽,可调参数)。

  • 定义哈希函数:
    h(x)=[v⋅x+bw],其中v⋅x是点积 h(\mathbf{x}) = \left[ \frac{\mathbf{v} \cdot \mathbf{x} + b}{w} \right] ,其中 v⋅x 是点积h(x)=[wvx+b],其中vx是点积

  • 为了降低单次投影碰撞概率,通常使用 L 个哈希表,每个表由 k 个独立的哈希函数组成,将 k 个输出值拼接成一个 k 维的桶编号(或字符串),作为该表的键。

当两个点距离较近时,它们在每个哈希函数上的输出值相同的概率较高;距离远时,相同的概率较低。

具体例子

假设二维平面中的三个点:

  • A=(1,2)
  • B=(2,3)(与 A 距离近,2\sqrt{2}2
  • C=(10,10)(与 A 距离远,约 12.7)

我们设定参数:w=4,使用两个独立的哈希函数(每个函数不同随机向量 v 和随机偏移 b)。

哈希函数 h1

  • 随机向量 v1=(0.5,1.0)从标准正态分布采样
  • 随机偏移 b1=0.2 ,桶宽 w=4

计算:

  • A:⌊(0.5∗1+1.0∗2+0.2)/4⌋=⌊(0.5+2+0.2)/4⌋=⌊2.7/4⌋=0\lfloor(0.5 * 1 + 1.0 * 2 + 0.2)/4\rfloor = \lfloor(0.5 + 2 + 0.2)/4\rfloor = \lfloor 2.7/4 \rfloor = 0⌊(0.51+1.02+0.2)/4=⌊(0.5+2+0.2)/4=2.7/4=0
  • B:⌊(0.5∗2+1.0∗3+0.2)/4⌋=⌊(1+3+0.2)/4⌋=⌊4.2/4⌋=1\lfloor(0.5 * 2 + 1.0 * 3 + 0.2)/4\rfloor = \lfloor(1 + 3 + 0.2)/4\rfloor = \lfloor 4.2/4 \rfloor = 1⌊(0.52+1.03+0.2)/4=⌊(1+3+0.2)/4=4.2/4=1
  • C:⌊(0.5∗10+1.0∗10+0.2)/4⌋=⌊(5+10+0.2)/4⌋=⌊15.2/4⌋=3\lfloor(0.5 * 10 + 1.0 * 10 + 0.2)/4\rfloor = \lfloor(5 + 10 + 0.2)/4\rfloor = \lfloor 15.2/4 \rfloor = 3⌊(0.510+1.010+0.2)/4=⌊(5+10+0.2)/4=15.2/4=3

哈希函数 h2

  • 随机向量 v2=(0.8,−0.6)
  • 随机偏移 b2=0.5
  • 桶宽 w=4

计算:

  • A:⌊(0.8∗1+(−0.6)∗2+0.5)/4⌋=⌊(0.8−1.2+0.5)/4⌋=⌊0.1/4⌋=0\lfloor(0.8 * 1 + (-0.6) * 2 + 0.5)/4\rfloor = \lfloor(0.8 - 1.2 + 0.5)/4\rfloor = \lfloor 0.1/4 \rfloor = 0⌊(0.81+(0.6)2+0.5)/4=⌊(0.81.2+0.5)/4=0.1/4=0
  • B:⌊(0.8∗2+(−0.6)∗3+0.5)/4⌋=⌊(1.6−1.8+0.5)/4⌋=⌊0.3/4⌋=0\lfloor(0.8 * 2 + (-0.6) * 3 + 0.5)/4\rfloor = \lfloor(1.6 - 1.8 + 0.5)/4\rfloor = \lfloor 0.3/4 \rfloor = 0⌊(0.82+(0.6)3+0.5)/4=⌊(1.61.8+0.5)/4=0.3/4=0
  • C:⌊(0.8∗10+(−0.6)∗10+0.5)/4⌋=⌊(8−6+0.5)/4⌋=⌊2.5/4⌋=0\lfloor(0.8 * 10 + (-0.6) * 10 + 0.5)/4\rfloor = \lfloor(8 - 6 + 0.5)/4\rfloor = \lfloor 2.5/4 \rfloor = 0⌊(0.810+(0.6)10+0.5)/4=⌊(86+0.5)/4=2.5/4=0

组合哈希码

  • 一个哈希表由两个哈希函数组成,桶键为 (h1,h2) 对
  • A:(0,0)
  • B:(1,0)
  • C:(3,0)

可以看到,A 和 B 在 h1 上不同,但考虑到两个哈希函数,它们依然不在同一桶中;而 C 和 A 在 h2 上相同,但 h1 不同,也不在同一桶。

为了增加相似点碰撞概率,实际中会使用多个这样的哈希表(每个表有自己的随机向量和偏移),并采用 OR 策略(只要在任一个表中同桶,就视为候选)。

这样,A 和 B 虽然在这个表中没同桶,但在其他表中很可能同桶。

如果增加更多哈希函数(如 k=5),以及多个哈希表(如 L=10),那么对于近距离点,它们至少在一个表中同桶的概率会非常高(接近1),而远距离点同桶的概率很低。

http://www.jsqmd.com/news/1211202/

相关文章:

  • 从 Chat 到 Agent:Codex 保姆级教程,一篇文章教会你怎样用 Codex 做项目 (万字长文)
  • Docker镜像构建最佳实践:从基础命令到多阶段构建与安全优化
  • 雷达中国官方售后服务中心|最新电话和维修地址权威信息通告(2026年7月更新) - 亨得利官方服务中心
  • 先进工艺下芯片时序分析方法:OCV、AOCV、POCV与LVF对比
  • 《驾驭你的AI同事:WorkBuddy深度精通》032:14.2 智能体间通信与协同
  • 苏州万国回收价格查询及靠谱回收平台实测排行(2026年7月最新) - 诚收名表回收平台
  • 认知的纵贯线:长程预测、抽象攀升与存续的双轨落地
  • 3个小众宝藏软件工具APP,实用又强大
  • 凡诺电子:拆一块显示屏,科普里面的材料构造
  • CNN、ViT、TVA三种具身智能视觉范式的巅峰对决(7)
  • 2026 年新发布:吴忠靠谱的石雕供货厂家竞争格局,揭秘那些让石头瞬间活起来的雕刻术 - 企业推荐官【认证】
  • CrossFlow:单步生成高质量图像的跨空间流匹配技术
  • 题解:AcWing 246 区间最大公约数
  • FastAPI开发实战:高性能Python Web API框架解析
  • J2EEScan插件安装教程(Burp Suite)
  • 半导体制造中的刻蚀工艺:原理、控制与前沿挑战
  • ESP32与LVGL开发环境搭建及优化指南
  • CNN、ViT、TVA三种具身智能视觉范式的巅峰对决(9)
  • Sapiens_人体姿态识别_分割_深度_发线模型_meta的实践和成果_Sapiens-1B训练过程---AI大模型系统从零开始0042
  • Unity游戏资源逆向提取实战:AssetRipper核心原理与高级应用指南
  • 2026年7月国内评价高的冷却塔散热胶片生产厂家哪家好,冷却塔散热胶片/元亨冷却塔填料,冷却塔散热胶片公司选哪家 - 品牌推荐师
  • Python全自动求职系统全链路落地|全网独家复现岗位智能抓取简历结构化解析多渠道自动投递,助力校招央企社招高效求职、批量投递提效
  • 亨得利官方名表服务中心|详细地址与官方热线权威信息通知(2026年7月更新) - 亨得利官方
  • WA2417 LLC工业开关电源完整测试指南:从参数解读到故障排查
  • Nginx 连接处理方法 - 核心编程
  • C++封装艺术:从Point类看访问控制与数据安全设计
  • 技术博客写作指南:编程语言、框架与开发工具实践
  • 长沙积家回收价格查询与靠谱平台实测排行(2026年7月最新数据) - 收的高名表回收平台
  • MCP协议如何优化长上下文AI开发流程
  • 【Java零基础连载19】Java 异常多线程JUC 面试全集|高频真题+标准答案+避坑汇总