哈希函数的学习算法整理

news2024/11/29 12:33:26

前言

如果你对这篇文章可感兴趣,可以点击「【访客必读 - 指引页】一文囊括主页内所有高质量博客」,查看完整博客分类与对应链接。


概述

哈希函数学习的两个步骤:

  • 转为二进制编码:可以先降维成实数,再转为二进制,也可以直接学习一个二进制编码;
  • 学习哈希映射函数:基于二进制编码设计或学习哈希方式,使得相似元素靠近,不相似元素远离。

根据哈希函数性质,可做如下分类:

  • 数据无关的方法 (Data-Independent Methods)
    • 特点:哈希函数与训练集无关,通常为随机投影或手动构造
    • 举例:Locality-sensitive hashing (LSH), Shift invariant kernel hashing (SIKH), MinHash;
  • 数据相关的方法 (Data-Dependent Methods)
    • 特点:哈希函数通过训练集学习得到
    • 分类:单模态哈希(无监督 / 有监督)、基于排序的方法(监督信息为排序序列)、多模态哈希、深度哈希

无监督哈希 (Unsupervised Hashing)

问题定义:

  • 输入:特征向量 { x i } \{\mathbf{x}_i\} {xi},对应矩阵 X \mathbf{X} X
  • 输出:二进制编码 { b i } \{\mathbf{b}_i\} {bi},对应矩阵 B \mathbf{B} B,相似的特征对应相似的编码

PCA Hashing (PCAH)

选取矩阵 X X ⊤ \mathbf{X X}^\top XX 最大的 m m m 个特征向量,组成投影矩阵 W ∈ R d × m \mathbf{W}\in \mathbb{R}^{d\times m} WRd×m,并定义哈希函数为:
h ( x ) = sgn ⁡ ( W ⊤ x ) . h(\mathbf{x})=\operatorname{sgn}\left(\mathbf{W}^\top \mathbf{x}\right). h(x)=sgn(Wx).

Spectral Hashing (SH)

min ⁡ { y i }     ∑ i j W i j ∥ y i − y j ∥ 2  s.t.    y i ∈ { − 1 , 1 } k ∑ i y i = 0 1 n ∑ i y i y i ⊤ = I \begin{aligned} \mathop{\min}\limits_{\left\{\mathbf{y}_i\right\}} \ \ \ & \sum_{i j} W_{i j}\left\|\mathbf{y}_i-\mathbf{y}_j\right\|^2 \\ \text { s.t.} \ \ \ & \mathbf{y}_i \in\{-1,1\}^k \\ &\sum_i \mathbf{y}_i=0 \\ &\frac{1}{n} \sum_i \mathbf{y}_i \mathbf{y}_i^\top=\mathbf{I} \end{aligned} {yi}min    s.t.   ijWijyiyj2yi{1,1}kiyi=0n1iyiyi=I

其中 W i j W_{ij} Wij x i \mathbf{x}_i xi x j \mathbf{x}_j xj 的相似度,第二个约束意味着所有数据映射后,每一位上 1 1 1 − 1 -1 1 的数量相同,第三个约束意味着不同位之间没有关联。上述优化问题为整数规划,难以求解,可将 y i ∈ { − 1 , 1 } k \mathbf{y}_i \in\{-1,1\}^k yi{1,1}k 约束取消,对问题进行放松,并将求得的 { y i } \{\mathbf{y}_i\} {yi} 每一位通过 sgn ⁡ \operatorname{sgn} sgn 函数映射,得到最终的二进制编码。

Anchor Graph Hashing (AGH)

X \mathbf{X} X 使用 k-means 聚类,得到 { u j ∈ R d } j = 1 m \{\mathbf{u}_j\in \mathbb{R}^d\}_{j=1}^m {ujRd}j=1m,重新定义矩阵 Z ∈ R n × m \mathbf{Z}\in \mathbb{R}^{n\times m} ZRn×m
Z i j = { exp ⁡ ( − D 2 ( x i , u j ) / t ) ∑ j ′ ∈ J i exp ⁡ ( − D 2 ( x i , u j ′ ) / t ) , ∀ j ∈ J i 0 ,  otherwise  Z_{i j}=\left\{\begin{array}{l} \frac{\exp \left(-\mathcal{D}^2\left(\mathbf{x}_i, \mathbf{u}_j\right) / t\right)}{\sum_{j^{\prime} \in\mathcal{J}_i } \exp \left(-\mathcal{D}^2\left(\mathbf{x}_i, \mathbf{u}_{j^{\prime}}\right) / t\right)}, \forall j \in \mathcal{J}_i \\ 0, \text { otherwise } \end{array}\right. Zij= jJiexp(D2(xi,uj)/t)exp(D2(xi,uj)/t),jJi0, otherwise 

其中 J i \mathcal{J}_i Ji 为一个下标集合,对应 { u j ∈ R d } j = 1 m \{\mathbf{u}_j\in \mathbb{R}^d\}_{j=1}^m {ujRd}j=1m s s s 个离 x i \mathbf{x}_i xi 最近的点的下标。定义哈希函数为:
h ( x ) = sign ⁡ ( W ⊤ z ( x ) ) , h(\mathbf{x})=\operatorname{sign}\left(W^\top z(\mathbf{x})\right), h(x)=sign(Wz(x)),

其中 W = n Λ − 1 / 2 V Σ − 1 / 2 W=\sqrt{n} \Lambda^{-1 / 2} V \Sigma^{-1 / 2} W=n Λ1/2VΣ1/2 Λ = diag ⁡ ( Z ⊤ 1 ) \Lambda=\operatorname{diag}\left(Z^\top\mathbf{1}\right) Λ=diag(Z1) V V V Σ \Sigma Σ 由矩阵 Λ − 1 / 2 Z ⊤ Λ − 1 / 2 \Lambda^{-1 / 2} Z^\top \Lambda^{-1 / 2} Λ1/2ZΛ1/2 的特征向量和特征值组成。该方法整体目标与 Spectral Hashing 一致,但通过引入 Anchor,使问题求解得到了加速,时间复杂度从 O ( n 3 ) O(n^3) O(n3) 降至为 O ( n m 2 ) O(nm^2) O(nm2)。具体细节可参照原论文。


有监督哈希 (Supervised Hashing)

问题定义:

  • 输入:特征向量 { x i } \{\mathbf{x}_i\} {xi},对应矩阵 X \mathbf{X} X,类别向量 { y i } \{\mathbf{y}_i\} {yi},对应矩阵 Y \mathbf{Y} Y
  • 输出:二进制编码 { b i } \{\mathbf{b}_i\} {bi},对应矩阵 B \mathbf{B} B,相同类别对应相似编码

常见算法如下所示,具体信息见参考资料,此处不再展开。

在这里插入图片描述


基于排序的方法 (Ranking-based Methods)

该部分属于有监督哈希一类,不过监督信息从标记变为了排序信息,例如三元组 ( x , x + , x − ) \left(x, x^{+}, x^{-}\right) (x,x+,x)。该部分涉及的常见算法如下:

在这里插入图片描述


参考资料

  • Learning to Hash
  • Learning to Hash for Big Data: A Tutorial

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/367377.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【Spark分布式内存计算框架——离线综合实战】4. IP 工具类

2.2 IP 工具类 需要将IP地址代码封装到工具类中,方便后续使用,在包【cn.itcast.spark.utils】创建工具类:IpUtils.scala,定义方法【convertIpToRegion】,传递参数【ip地址和DbSearch对象】,返回Region对象…

数据结构-树的理解

目录 一:要解决的问题,出发点 1.演进 树的定义: 树的深度(高度) 平衡二叉树(AVL树) 红黑树: B树: 深夜有感,灵感乍现,忽然感觉对这个数据结…

Unity(二)--通过简单例子了解UGUI几个常用对象操作(Text,Image,Button)

目录 文本框等UI对象的添加Canvas 画布给Canvas添加脚本,绑定要操作的对象文本框Text的使用图像Image的使用更换图片Type:显示图片相关按钮Button的使用过渡导航事件绑定文本框等UI对象的添加 Canvas 画布 当创建一个UI元素的时候,如果没有Canvas 画布,就会自动创建一个画布…

学习资料|SSH隧道端口转发功能详解

概念ssh隧道大致可以分为3种,分别为本地端口转发,远程端口转发,动态端口转发,本文将让你彻底搞懂这3个转发的命令表达形式,让你能够灵活运用解决生活中的各种特殊场景。如果你正在使用mobaxterm、xshell、secureCRT、p…

怎样深度学习?主题碾压式学习法

怎样最深度的学习?【主题碾压式!】 对一个学习主题,大体量投入学习资源 进行对比和实践 会取得突破 限定在社会科学和社会应用范围 趣讲大白话:大力出奇迹 【趣讲信息科技:84期,下期预告:很少有…

C++条件变量唤醒问题 notify_one() 唤醒不及时问题

条件变量唤醒问题 & notify_one() 唤醒不及时问题 因为我对于 C中条件变量的等待唤醒部分、notify_all & notify_one 的区别方面有些疑点,因此就有了以下的同 chatgpt 的沟通,希望同样能够帮助到大家 感叹于 chatgpt的强大 问题? 我比…

(三十二)大白话MySQL一起来看看INSRET语句的undo log回滚日志长什么样?

昨天我们讲解了undo log回滚日志的作用,说白了,就是你执行事务的时候,里面很多INSERT、UPDATE和DELETE语句都在更新缓存页里的数据,但是万一事务回滚,你必须有每条SQL语句对应的undo log回滚日志,根据回滚日…

Docker 名词介绍

Docker核心名词镜像文件镜像:简单理解为就是一个安装包,里面包含容器所需要运行的的基础文件和配置信息,比如:redis镜像、mysql镜像等。镜像的来源方式:1. 自己做镜像 比如(自己开发微服务项目)2. 拉取别人…

python学习笔记——数据类型总结

1.基本数据类型  数据类型对应的内置函数:将其他类型,转换成自己的类型。 int()float()bool()str()list()tuple()set()dict() 2.数据类型对比  3.列表 w [a,b,c] #查 print(w[0]) print(w[0:3:2]) #增 w.appe…

css 属性和属性值的定义

文章目录css文本属性作业列表属性背景属性作业css文本属性 序号属性描述说明1font-size字体大小浏览器默认16px;2font-family字体当字体是中文字体,英文字体,中间有空格时候,要加双引号,多字体之间用逗号隔开 默认微软…

绿通科技在创业板开启申购:超额募资约19亿元,收入依赖贴牌

2月23日,广东绿通新能源电动车科技股份有限公司(下称“绿通科技”,SZ:301322)开启申购。据贝多财经了解,绿通科技本次上市的发行价为131.11元/股,发行数量为1749万股,市盈率73.75倍。 按发行价…

为什么数字孪生技术对工业物联网基础设施至关重要

随着工业物联网基础设施的不断建设和发展,数字孪生技术的重要性也变得越来越明显。由于数字孪生模型是工厂或其资产的虚拟版本,其高度精确和详细的特点使决策者获得了更高的可见性。下面让我们了解一下数字孪生技术给工业物联网基础设施带来的有效帮助。…

【Axure教程】自动生成页码的中继器表格

当表格数据较多时,我们经常会分页显示,这时我们就需要用到页码的元件了。所以作者今天就教大家如何在Axure中制作一个能自动根据中继器表格的数据以及分页情况,自动生成对应页码的原型模板。一、效果展示1、页码能根据表格数据和每页显示条数…

Apache Commons FileUpload Apache Tomcat拒绝服务漏洞解决方案

近日,安全狗应急响应中心关注到Apache官方发布安全公告,披露在Apache Commons FileUpload<1.5版本中存在一处拒绝服务漏洞(CVE-2023-24998)。Commons FileUpload是Apache组织提供的免费的上传组件。由于Apache Commons…

pyaudio声卡信息中hostApi是什么意思?

hostApi是声卡驱动协议,声卡驱动模式,有如下很多类。下面的类型是网上找的PortAudio的类,不不确定是不是python的。typedef enum PaHostApiTypeId{paInDevelopment0, /* use while developing support for a new host API */paDirectSound1,p…

EMC诊断技术

第一课 探讨EMC诊断技术-滤波篇EMC法规:CISPR16-1、GB/T 6113.1 GB/T 7343dBuV3dB是1.41倍6dB是2倍20dB是10倍差模噪声在电源/信号到地上走,差模噪声是电源/地/信号/到EGNDEMI滤波器的性能指标:滤波器插入损坏(共模插损、差模插损)

儿童全脑九大能力,3-6岁的家长都应该知道

什么是全脑? 人的大脑分左右两个半球,形态虽然相似,功能却各有不同。其中,左脑负责文字、数学、计算、分析、逻辑、顺序、事实和记忆,掌管右侧肢体的感觉和运动;右脑则负责颜色、音乐、想象、韵律、感觉、…

【原创】java+swing+mysql物业管理系统设计与实现

之前的文章里也讲过物业管理系统的开发,不过使用的是javaweb技术,bs架构,网页的形式。今天我们主要介绍使用javaswing技术同样去开发一套物业管理系统。以方便管理员进行物业信息的管理。 功能分析: 物业管理系统主要是为了方便…

买卖股票的最佳时机II-力扣122-java贪心策略

一、题目描述给你一个整数数组 prices ,其中 prices[i] 表示某支股票第 i 天的价格。在每一天,你可以决定是否购买和/或出售股票。你在任何时候 最多 只能持有 一股 股票。你也可以先购买,然后在 同一天 出售。 返回 你能获得的 最大 利润 。…

SAP PI PO JDBC接口培训视频

SAP PI PO JDBC接口培训视频XML Document Format for the Message Protocol XML SQL Format You can modify one or more database tables by means of a message. Depending on the content of the message, you can either insert (INSERT), update (UPDATE), or delete (DEL…