哈希学习简介

一、背景介绍

1、首先介绍一下最近邻搜索:最近邻搜索问题,也叫相似性搜索,近似搜索,是从给定数据库中找到里查询点最近的点集的问题。
哈希学习简介_第1张图片

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

二、哈希学习的目的及分类

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

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

三、哈希学习的一般步骤

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

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

四、量化方法

目的:对于一个低维向量把它映射为一个二进制哈希码,并且尽可能的保持原来的相似性。
1、SBQ
介绍:对于给出向量的每一个维度的数值,我们设定一个阈值。然后根据这个维度数值的情况与阈值作比较,确定其映射的二进制数是2还是1。之后我们把每个维度映射出的二进制数串起来组成哈希码。
这里写图片描述
举例:
比如某一向量为[4,3,7,8],我们设定阈值为5,并且>=5为1,反之为0.
那么该向量对应的二进制哈希码为0011.

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

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

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

你可能感兴趣的:(机器学习)