HashLearning
1. 背景介绍
首先介绍一下最近邻搜索:最近邻搜索问题,也叫相似性搜索,近似搜索,是从给定数据库中找到里查询点最近的点集的问题。

给定一个点集,以及一个查询点q,需要找到离q最近的点的集合;在大规模高维度空间的情况下,这个问题就变得非常难,而且大多数算法计算量极大,复杂度很高; 因此,一般用近似的最邻近搜索代替;哈希就是解决上述这类问题的主要方法;
2. 哈希学习概述
定义:哈希学习(learning to hash)是通过机器学习机制将数据映射成二进制串的形式,能显著减少数据的存储和通信开销,从而有效提高学习系统的效率。
目的:通过机器学习机制将数据映射成简洁的二进制串的形式, 同时使得哈希码尽可能地保持原空间中的近邻关系, 即保相似性.(这一点很重要,如果失去了原来的相似性,那么哈希学习也就变得没有意义了) 以下面这幅图为例,原始数据是三幅图像,其中后面这两幅相似度比较高,也就是说在原始空间中从语义层次的距离或者欧氏距离都比较近,映射为哈希码之后,距离也应该更近。

图1 哈希学习示意图
图 1是哈希学习的示意图,以图像数据为例,原始图像表示某种经过特征抽取后的高维实数向量,通过从数据中学习到的哈希函数
重要地位
- 使用哈希码表示数据后,所需要的存储空间会被大幅减小。
- 因为通过哈希学习得到的哈希码位数(维度)一般会比原空间的维度要低,哈希学习也能降低数据维度,从而减轻维度灾难问题。
- 基于哈希学习得到的二进制哈希码可以构建索引机制,实现常数或者次线性级别的快速近邻检索,为上层学习任务的快速实现提供支撑。
分类:
第一种的代表是局部敏感哈希,这种方法主要是人工设计或者随机生成哈希函数,是一种数据独立的方法;
第二种是哈希学习的方法,希望从数据中自动学习出哈希函数,是一种数据依赖的方法;也是现在主流的方法;
显然第二种具有数据依赖性,是一种更有适应性的方法。
3. 哈希学习的一般步骤
- 先对原空间的样本进行降维, 得到1个低维空间的实数向量表示;
- 对得到的实数向量进行量化(即离散化)得到二进制哈希码;