局部敏感哈希(LSH)
概述欧式空间中将高维空间的点映射到低维空间原本接近的点在低维空间中肯定依然接近但原本远离的点则有一定概率变成接近的点。这句话的意思是在欧氏空间中使用随机投影等降维映射时原本距离较近的点在映射后仍然会保持较近的距离因此它们被划分到同一个哈希桶中的概率很高。而原本距离较远的点也可能因为投影碰撞而意外被划分到同一个桶中但这种情况发生的概率较低。这正是局部敏感哈希LSH 能够高效进行近似最近邻搜索的核心依据。直观理解近距离点相似由于它们在原始空间中很近在任意随机方向上的投影值也相差不大因此它们落入同一个桶如取整后编号相同的概率高。远距离点不相似它们在随机方向上的投影值相差较大落入同一个桶的概率低但可能发生碰撞只是概率小。LSH 通过多次独立随机投影将每个点映射为一个由多个整数组成的哈希码并将具有相同哈希码的点放入同一个桶。查询时只需计算查询点的哈希码然后在对应桶中搜索即可。构造 LSH 桶的经典方法p-stable LSH欧氏距离对于欧氏距离常用的构造方式是从标准正态分布中随机生成一个 d 维向量 v每个分量独立同分布。随机选择一个实数 b均匀分布在 [0,w) 上w 是桶宽可调参数。定义哈希函数h(x)[v⋅xbw]其中v⋅x是点积 h(\mathbf{x}) \left[ \frac{\mathbf{v} \cdot \mathbf{x} b}{w} \right] 其中 v⋅x 是点积h(x)[wv⋅xb​]其中v⋅x是点积为了降低单次投影碰撞概率通常使用 L 个哈希表每个表由 k 个独立的哈希函数组成将 k 个输出值拼接成一个 k 维的桶编号或字符串作为该表的键。当两个点距离较近时它们在每个哈希函数上的输出值相同的概率较高距离远时相同的概率较低。具体例子假设二维平面中的三个点A(1,2)B(2,3)与 A 距离近2\sqrt{2}2​C(10,10)与 A 距离远约 12.7我们设定参数w4使用两个独立的哈希函数每个函数不同随机向量 v 和随机偏移 b。哈希函数 h1随机向量 v1(0.5,1.0)从标准正态分布采样随机偏移 b10.2 ,桶宽 w4计算:A:⌊(0.5∗11.0∗20.2)/4⌋⌊(0.520.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.5∗11.0∗20.2)/4⌋⌊(0.520.2)/4⌋⌊2.7/4⌋0B:⌊(0.5∗21.0∗30.2)/4⌋⌊(130.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.5∗21.0∗30.2)/4⌋⌊(130.2)/4⌋⌊4.2/4⌋1C:⌊(0.5∗101.0∗100.2)/4⌋⌊(5100.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.5∗101.0∗100.2)/4⌋⌊(5100.2)/4⌋⌊15.2/4⌋3哈希函数 h2随机向量 v2(0.8,−0.6)随机偏移 b20.5桶宽 w4计算:A:⌊(0.8∗1(−0.6)∗20.5)/4⌋⌊(0.8−1.20.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.8∗1(−0.6)∗20.5)/4⌋⌊(0.8−1.20.5)/4⌋⌊0.1/4⌋0B:⌊(0.8∗2(−0.6)∗30.5)/4⌋⌊(1.6−1.80.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.8∗2(−0.6)∗30.5)/4⌋⌊(1.6−1.80.5)/4⌋⌊0.3/4⌋0C:⌊(0.8∗10(−0.6)∗100.5)/4⌋⌊(8−60.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.8∗10(−0.6)∗100.5)/4⌋⌊(8−60.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 虽然在这个表中没同桶但在其他表中很可能同桶。如果增加更多哈希函数如 k5以及多个哈希表如 L10那么对于近距离点它们至少在一个表中同桶的概率会非常高接近1而远距离点同桶的概率很低。

相关新闻

umount 报 “device is busy“解决方法

umount 报 “device is busy“解决方法

查找占用进程 lsof D /挂载点路径例如磁盘挂载在 /mnt/data: lsof D /mnt/data输出会显示 进程ID (PID)、进程名 (COMMAND)、用户 (USER) 和打开的文件名。 优雅终止进程(推荐) kill -15 PID号 # 发送SIGTERM信号,允许进程清理资…

2026/10/12 2:56:35 阅读更多 →
WorkBuddy:AI办公协作工具的高效配置与实战技巧

WorkBuddy:AI办公协作工具的高效配置与实战技巧

1. 为什么WorkBuddy正在重新定义AI办公协作三周前我接手了一个跨国团队的文档协作项目,团队成员分布在5个不同时区。当第7版方案在凌晨3点被不知名成员误删关键段落时,我意识到传统协作工具已经触达效率天花板。这正是WorkBuddy展现魔力的时刻——它不仅…

2026/10/7 1:59:41 阅读更多 →
Python基础学习-13

Python基础学习-13

一、面向对象编程入门 1、知识点 为什么要面向对象? 面向对象编程(OOP)的核心思想是:把数据和处理数据的方法打包在一起,形成一个"对象"。就像现实世界中,一辆车既有属性(颜色、速度、…

2026/10/9 6:35:50 阅读更多 →

最新新闻

Windows浏览器多开实战:基于user-data-dir实现独立分身与批量管理

Windows浏览器多开实战:基于user-data-dir实现独立分身与批量管理

先说个结论:Windows下让浏览器“多开”这件事,听起来像是随便点几个窗口就行,但真正想做到“开一百个窗口互不干扰、不串号、不崩溃”,完全不是一回事。这段时间我为了给一套多账号运营工作流做技术验证,把浏览器多开从…

2026/10/12 2:56:41 阅读更多 →
互联网医院源码拆包实战:在线问诊与处方流转全链路解析

互联网医院源码拆包实战:在线问诊与处方流转全链路解析

简介:这份互联网医院源码面向医疗信息化开发者与创业团队,用于快速搭建支持在线问诊与在线开处方的远程医疗服务平台,帮助打破地域限制、提升问诊效率。源码围绕患者与医生的即时沟通展开,涵盖文字聊天、语音视频诊疗、病情描述与…

2026/10/12 2:56:41 阅读更多 →
Vagrant多虚拟机实战:VirtualBox兼容、SSH超时与磁盘清理全记录

Vagrant多虚拟机实战:VirtualBox兼容、SSH超时与磁盘清理全记录

最近在重建开发环境时,卡了我整整两天的一件事,就是在一台宿主机上用 Vagrant 同时管理三台虚拟机:CentOS8、Ubuntu22.04 和 Ubuntu24.04。原以为无非就是装三个 box、写一个 Vagrantfile,然后 vagrant up 一把梭。结果从 Virtual…

2026/10/12 2:56:41 阅读更多 →
点云特征识别实战:从法向量估计到FPFH描述子的关键技术

点云特征识别实战:从法向量估计到FPFH描述子的关键技术

简介:这是一份面向C开发者及三维视觉学习者的点云特征识别项目资料,对应CloudPoint完整工程包。内容围绕点云处理经典流程展开:从统计离群点去除、体素滤波等预处理,到区域分割、关键点检测,再到PFH、FPFH、SHOT等特征…

2026/10/12 2:56:41 阅读更多 →
Netty源码地图:从Channel到EventLoop的请求生命周期解析

Netty源码地图:从Channel到EventLoop的请求生命周期解析

学Netty的人很多,但真正打开过Netty源码的人,比想象中少得多。大多数时候我们停留在“会用”的层面:知道Bootstrap怎么配、ChannelHandler怎么写、EventLoopGroup开几个线程,一旦跑到线上出问题,比如连接积压、内存涨、…

2026/10/12 2:56:41 阅读更多 →
MySQL 64学时教学大纲拆解:从E-R图到PetStore建库全链路

MySQL 64学时教学大纲拆解:从E-R图到PetStore建库全链路

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/12 2:55:40 阅读更多 →

日新闻

复古胶片颗粒感噪点合成器:Canvas ImageData 像素高斯杂色注入算法

复古胶片颗粒感噪点合成器:Canvas ImageData 像素高斯杂色注入算法

在数码相机、高清显示屏与现代矢量图形技术高度发达的今天,画面可以做到绝对的锐利、平滑与无瑕。然而,当一张秋日手账插画或拍立得照片过于“平整无瑕”时,往往会散发出一种冰冷生硬的“数码塑料感(Digital Plasticity&#xff0…

2026/10/12 0:00:59 阅读更多 →
活字印刷古籍线装排版:Canvas 竖排文字与栏线自适应算法

活字印刷古籍线装排版:Canvas 竖排文字与栏线自适应算法

在现代网页与移动端设计中,横排(Horizontal Layout)早已经成为了绝对的主流。然而,当我们翻开泛黄的线装古籍、宋版木刻诗集,或是欣赏一张茶道雅集的手写便签时,那种**自上而下纵向书写、自右向左逐列铺展&…

2026/10/12 0:00:59 阅读更多 →
周日晚间的“精神松绑减震器”:无压力情绪倾倒箱与温和轻声陪伴

周日晚间的“精神松绑减震器”:无压力情绪倾倒箱与温和轻声陪伴

每到周日的晚上八点到十点,很多人心里都会悄悄亮起一盏警示灯。 在心理学上,这种现象有一个专门的称谓——“周日夜晚焦虑症(Sunday Scaries)”。明天又是周一,闹钟又要重新在七点响彻卧房;脑海里仿佛有一个…

2026/10/12 0:00:59 阅读更多 →

周新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/12 0:16:30 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/12 0:16:38 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/12 0:16:43 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/11 10:45:37 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/11 14:36:53 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/11 14:36:54 阅读更多 →