机器学习-向量检索+存储格式技术

(1) 向量相似性检索

算向量相似度在很多算法中都有应用,对大规模服务来说,如何加速向量检索与相似度计算

是非常有价值的。

应用场景:

1 机器学习算法内部步骤:KNN, K-means

2 向量相似搜索:图像检索,word关键词检索

 

下面列出了其中的一些方式和方法:

两个问题:

- 1 检索-相似向量检索:

引用自:

http://www.flickering.cn/ads/2018/03/%E3%80%90%E8%BD%AC%E3%80%91%E5%A4%A7%E8%A7%84%E6%A8%A1%E9%AB%98%E7%BB%B4%E6%95%B0%E6%8D%AE%E5%AE%9E%E6%97%B6%E7%9B%B8%E4%BC%BC%E6%90%9C%E7%B4%A2%E7%AE%97%E6%B3%95%EF%BC%9Aproduct-quantization/

参考文献很好的总结了相似搜索的几类方法,这里简要总结几个核心点。可以将方法分为三大类:

  • 基于树的方法
    • KD树是其下的经典算法。一般而言,在空间维度比较低时,KD树的查找性能还是比较高效的;但当空间维度较高时,该方法会退化为暴力枚举,性能较差,这时一般会采用下面的哈希方法或者矢量量化方法。
  • 哈希方法
    • LSH(Locality-Sensitive Hashing)是其下的代表算法。文献[7]是一篇非常好的LSH入门资料。
    • 对于小数据集和中规模的数据集(几个million-几十个million),基于LSH的方法的效果和性能都还不错。这方面有2个开源工具FALCONN和NMSLIB。
  • 矢量量化方法
    • 矢量量化方法,即vector quantization。在矢量量化编码中,关键是码本的建立和码字搜索算法。比如常见的聚类算法,就是一种矢量量化方法。而在相似搜索中,向量量化方法又以PQ方法最为典型。
    • 对于大规模数据集(几百个million以上),基于矢量量化的方法是一个明智的选择,可以用用Faiss开源工具。

- 2 检索成功后-向量相似度计算:

(2) 向量存储格式

稀疏矩阵存储格式

https://blog.csdn.net/wangjian1204/article/details/52149199

 

参考文章:

[1]火光摇曳:

[2] 图像检索:再叙ANN Search

[3] What are some fast similarity search algorithms and data structures for high-dimensional vectors?

友情推荐:ABC技术研习社

为技术人打造的专属A(AI),B(Big Data),C(Cloud)技术公众号和技术交流社群。

你可能感兴趣的:(算法研究)