• 哈希学习


    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_

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

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

  • 相关阅读:
    5个步骤迅速脱离低薪族
    phpdebugapd调试器
    重置zend studio 默认设置的方法
    CMD用什么命令可以删除服务?
    PHP自动识别字符集并完成转码
    一只赖蛤蟆写给白天鹅的情书
    遇到的问题
    Sql 注入漏洞
    分页技术
    flex学习记录——加载图片
  • 原文地址:https://www.cnblogs.com/Terrypython/p/10635840.html
Copyright © 2020-2023  润新知