来源:我爱计算机视觉
编辑:安然
图灵联邦编辑部出品
最近邻搜索(Nearest neighbor search)是指在数据库中查找与查询数据距离最近的数据点,是计算机视觉、推荐系统、机器学习等领域的基本问题。
比如在基于内容的图像检索中,在计算完查询图像特征向量后,需要在成千上万甚至几十亿的数据库图像特征向量中查找距离最小的Top n 幅图像,作为结果返回给用户。
Facebook的FAISS是这一领域重要的开源库:
https://github.com/facebookresearch/faiss
这个过程必须考虑计算和存储效率,而使用哈希算法将特征向量二值化,把问题转化为二值向量再进行比较是使用最广泛的方法。随着深度学习在该领域的应用,深度哈希算法取得了比传统方法更好的结果。
昨日,阿里巴巴达摩院与北京大学的研究学者发布了一篇论文A Survey on Deep Hashing Methods,参考了138篇近几年的文献,对使用深度学习的哈希方法进行了全面的综述,非常值得该领域的朋友参考。
![d98f0b49438810925f808c7ad254c174.png](https://i-blog.csdnimg.cn/blog_migrate/efa18b84b2c048dafb995c231258c85c.jpeg)
哈希方法既然是将原浮点型向量转化为0-1二值向量,使得原空间中两数据点与二值向量空间数据点的距离尽量相似,作者就按照在深度哈希方法中损失函数里相似性保留方法对算法进行了分类。
主要分五类:
1. 成对相似性保留(pairwise similarity preserving)
在计算Loss时,以保留两个数据项之间距离相似性为目标,这一类别下包含Product loss minimization、Difference loss minimization、 Likelihood loss minimization方法。
2. 多对相似性保留(multiwise similarity preserving)
在计算Loss时,以保留多于两个数据项之间距离相似性为目标,三元组损失函数(triplet loss)是这一方向最常见的。
Deep Neural Network Hashing、Deep Regularized Similarity Comparison Hashing、Deep Triplet Supervised Hashing、Deep Semantic Ranking-based Hashing 是这一类中代表性方法。
3. 隐式相似性保留(implicit similarity preserving)
在Loss函数设计时,没有显式的使用成对或多对的相似性信息保留,但他们依然利用了其间的相似关系,比如利用互信息。
Hashing with Mutual Information、Hashing as Tie-Aware Learning to Rank、Angular Deep Supervised Hashing是这一类代表性方法。
4. 面向分类的深度哈希(Classification-oriented deep hashing)
Loss函数设计时,利用分类信息而非距离相似性信息,哈希码是与数据的类别标签相关的,这一类中迁移学习和特征提取是主流方法。
Deep Binary Hashing、Supervised Semantics-preserving Deep Hashing、Very Deep Supervised Hashing、SUBIC、Mutual Linear Regression-based Discrete Hashing、Central Similarity Hashing、Hadamard Codebook Based Deep Hash是这一类的代表性方法。
5. 量化(quantization)
使用量化方法进行深度监督哈希的方法。
Deep Quantization Network、Deep Triplet Quantization、Deep Visual-semantic Quantization、Deep Product Quantization、Deep Spherical Quantization、Similarity Preserving Deep Asymmetric Quantization 是这一方向的代表性方法。
论文还讨论了该领域的一些新方向:
- GAN与深度哈希学习
- 集成学习的哈希方法
- 深度哈希的训练策略
- 深度无监督哈希方法
- 多模态深度哈希方法
作者指出MNIST、CIDAR-10、ImageNet、NUS-WIDE、COCO是该领域常用数据集。
作者列出了部分算法在CIFAR-10、NUS-WIDE数据集上的结果:
![6fc71ed5f3d3f15eca9c344fe507d3cf.png](https://i-blog.csdnimg.cn/blog_migrate/c3928f52dbf879826feb94abd49340f5.jpeg)
由此结果作者总结:
- 深度哈希算法大大优于传统方法;
- 在深度哈希算法中相似性信息是需要的;
- 分类标签信息可以增加深度哈希算法性能;
- 一些技巧(正则化项、集成学习、bit平衡、bit independence )可使得算法更精确和鲁棒。
论文地址:
https://arxiv.org/abs/2003.03369