哈希学习

1 背景介绍

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

  给定一个点集,以及一个查询点q,需要找到离q最近的点的集合;在大规模高维度空间的情况下,这个问题就变得非常难,而且大多数算法计算量极大,复杂度很高; 而且一般用近似的最邻近搜索代替;哈希就是解决上述这类问题的主要方法。

2 哈希学习的目的与分类

  哈希学习的目的:通过机器学习机制将数据映射成简洁的二进制串的形式, 同时使得哈希码尽可能地保持原空间中的近邻关系, 即保相似性.(这一点很重要,如果失去了原来的相似性,那么哈希学习也就变得没有意义了)
  以下面这幅图为例,原始数据是三幅图像,其中后面这两幅相似度比较高,也就是说在原始空间中从语义层次的距离或者欧氏距离都比较近,映射为哈希码之后,距离也应该更近。

  哈希的方法主要分为两大类:1、第一种的代表是局部敏感哈希(LSH),这种方法主要是人工设计或者随机生成哈希函数,是一种数据独立的方法;2、第二种是哈希学习的方法,希望从数据中自动学习出哈希函数,是一种数据依赖的方法;也是现在主流的方法;显然第二种具有数据依赖性,是一种更有适应性的方法。  
3 哈希学习的步骤

  1. 先对原空间的样本进行降维, 得到1个低维空间的实数向量表示; 
  2. 对得到的实数向量进行量化(即离散化)得到二进制哈希码;

  对于第一步如何降维,我们这里不再做介绍,下面主要介绍一下量化的方法。

4 量化方法
  目的:对于一个低维向量把它映射为一个二进制哈希码,并且尽可能的保持原来的相似性。 

1、SBQ 
  介绍:对于给出向量的每一个维度的数值,我们设定一个阈值。然后根据这个维度数值的情况与阈值作比较,确定其映射的二进制数是0还是1。之后我们把每个维度映射出的二进制数串起来组成哈希码。 

  举例:比如某一向量为[4,3,7,8],我们设定阈值为5,并且>=5为1,反之为0.  那么该向量对应的二进制哈希码为0011.

  相似性的衡量方法:对于映射好的哈希码如何衡量他们之间的相似度呢?我们采用汉明距离来衡量(二进制对应位不同的个数,比如0011与0000的汉明距离是2)

2、HQ
  跟SBQ比较类似,是将每一个维度划分为四个区域,使用三个阈值和两位二进制码来编码;

  相似性的衡量方法:也是采用汉明距离来衡量。

转:liyongqi_

关于哈希学习这篇文章也不错!

流形学习(与哈希学习对比)

 

posted @ 2019-04-01 13:25  珠峰上吹泡泡  阅读(604)  评论(0编辑  收藏  举报