多下标哈希表——Fast Exact Search in Hamming Space with Multi-Index Hashing
来源:互联网 发布:php访客统计 编辑:程序博客网 时间:2024/05/27 20:31
《Fast Exact Search in Hamming Space with Multi-Index Hashing》这篇文章的第一作者是多伦多大学的Mohammad Norouzi,最早发表在CVPR2012,后被PAMI2014收录。中文译名是《基于多下标哈希的汉明空间的快速精确搜索算法》。下文是本人lhaof对文章的部分翻译和解析。
Norouzi考虑在汉明空间的两个相关的搜索问题。给定一个二进制编码串的数据集H。第一个问题是对于一个给定的编码在H内找k个离给定编码最近的编码。这称为汉明空间内的kNN搜索。比如1-NN问题,除了穷举式搜索,没有更好的办法。
第二个问题是对一个查询,在数据库中找距离查询点小于一个固定的汉明距离的所有编码。有时被称为近似查询问题,或者PLEB(point location in equal balls,等球内点定位)问题。一个二进制编码是一个查询码的r邻居,当且仅当它们不同的比特数小于等于r。r邻居搜索问题定义为在H中找到查询g的所有r邻居。
一种解决r邻居搜索问题的方法是用一个哈希表把H中的二进制编码都存起来,然后访问查询g的r距离内的哈希位置内是否有数据点。假设二进制码是q比特的,那么就要查询C(q,0)+C(q,1)+...+C(q,r)共计这么多次,记作L(q,r)。这个关于q和r的函数随r增长得非常快,在实际中并不可行。
多下标哈希(mih)是一种将数据库中的二进制编码分割成m个不相交的子字符串,然后对m个不同的哈希表索引m次,来实现插入的操作。给定一个查询码,若数据库中有一个数据码,它至少有一个子字符串与查询码是相近的,那么这个数据码被称作邻居候选。对于每个邻居候选,用整个的二进制编码串来检测它的合法性,然后移除里面的非r邻居。为了对于大规模的数据集也可行,这些不相交子字符串的选择要使得邻居候选集合小,同时所需内存在合理范围内。同时也要求所有在符合条件的即在r距离内的邻居都要被找到。
mih为二进制编码串的子字符串创建哈希表。每个二进制编码h都包含q比特,然后被分成m个不相交的子字符串,记作h(1),h(2),...,h(m),每个子字符串的长度都是q/m比特。为了方便,假设q能被m整除,并且子字符串包括的都是连续的比特。那么有以下的关键结论:当两个二进制编码串h和g有r或者小于r个对应位置的比特是不同的时候,那么在它们的m个子字符串中,至少有一个子字符串最多有[r/m]个比特是不同的。这一结论可由鸽笼原理得出。
那么,就可以将问题转化为:在每个子字符串i内,在所有h(i)中找二进制编码g(i)的[r/m]邻居候选。这样,对于每个子字符串都得到一个邻居候选的集合,将这m个集合求并得到整个邻居候选集。然后逐一检测这些邻居候选是否与查询编码g的汉明距离小于等于r,最终得到r邻居搜索问题的精确解。由于邻居候选的数目不会很多,而每次检测邻居候选是否合法,即计算邻居候选到查询码g的距离时,只需要O(q)的时间复杂度。所以时间效率得到提高。
- 多下标哈希表——Fast Exact Search in Hamming Space with Multi-Index Hashing
- Fast Exact Search in Hamming Spacewith Multi-Index Hashing
- exact nn search in hamming space
- 深度学习入门笔记:Fast Image Search with Deep Convolutional Neural Networks and Efficient Hashing Codes
- Adaptive Hashing for Fast Similarity Search
- Fast Multi-GPU collectives with NCCL-翻译
- Tricks in decide the index in the binary search with duplicate elements
- Fast Supervised Hashing with Decision Trees for High-Dimensional Data
- Index (search engine) In Wiki
- 1.Index Mapping (or Trivial Hashing) with negatives allowed[数据结构]
- Fast Scrolling in Tweetie with UITableView
- Fast Updates with MongoDB (update-in-place)
- Uva11057——Exact Sum
- elasticsearch---search in depth之multi-field search
- Max space clustering (Hamming)
- <Chapter 2>Fast Index Creation in the InnoDB Storage Engine
- NeMa: fast graph search with label similarity-VLDB2013
- Fast, Scalable Networking in Go with Mangos-nanomsg in go
- git in action
- What is EJB
- [Vala+Gtk3.0]Fixed固定布局基本模板
- 不同浏览器获取DOM元素的各种高度
- linux下文本读写:面向二进制字节流方式
- 多下标哈希表——Fast Exact Search in Hamming Space with Multi-Index Hashing
- Codeforces Round #304 (Div. 2) 546D Soldier and Number Game 质因子个数
- C#WinForm打开文件夹并选中文件
- Jquery实现图片播放
- Codeforces Round #304 (Div. 2) 546 E - Soldier and Traveling 最大流
- Codeforces Round #305 (Div. 2) 548C - Mike and Frog 循环节
- Hadoop链式MapReduce、多维排序、倒排索引、自连接算法、二次排序、Join性能优化、处理员工信息Join实战、URL流量分析、TopN及其排序、求平均值和最大最小值、数据清洗ETL、分析气
- C/C++中的数据存储方式
- 4264: 小C找朋友 hash