合作专线:17362615757
行业资讯

AI科技

当前位置:首页 > 行业资讯 > AI科技

终于把微软sheng搜素-SPTAG算法的基本原理弄清了

作者 | beyondma
转载自 CSDN 博客近日,微软在GitHub上开源了其BING的搜索算法SPTAG,github地址:。这个算法笔者简单看了一下,的确是很有价值可以看大家介绍下,这种称为SPTAG (Space Partition Tree And Graph)目前的翻译多称为“空间分区式的树和图”,其实个人认为这种说法不太准确,其实这里的图与图论中的图意思一致,表示的是连接关系,并不是图像的意思,,而且我们一会仔细也会发现其算法中还带有平衡(balance)的概念,感觉译为”高维空间平衡树“更为准确。
SPTAG能做什么

微软在github上的介绍中给出的官方解释如下“This library assumes that the samples are represented as vectors and that the vectors can be compared by L2 distances or cosine distances. Vectors returned for a query vector are the vectors that have smallest L2 distance or cosine distances with the query vector. "简单解释一下,就是微软认为图像、声音文字都能被表示为向量,而且可以用L2距离及余弦距离(cosine distances)表示其关系。这段我给读者解释一下,什么叫可以用余弦距离表示向量之间的关系。图1.北京地图图2.中国地址图3.华盛顿特区地图图4.美国地图那么如果我把上述这四个图都转化为了向量,那么会有vec图2-vec图1=vec图4-vec图3也就是说在图片转化为向量后,向量的位置关系保留了其图片含义所代表的逻辑关系。这就是”L2距离及余弦距离(cosine distances)表示其关系“的具体解释。不过这次微软并没有公开把图片、声音及文字转化为向量的技术,目前文字转化为向量的主要技术是word2vec算法,图片转化为文字的技术,读者也可以通过Facebook前些时候公开的Pytorch-Biggraph算法来了解,具体可参考我之前的博客那么说到现在我们可以了解SPTAG算法工作的前提就是将已经将用户搜索的要素转化为了正确位置上的向量,SPTAG就是要找到这个向量在空间上的最近邻,说到这读者是否对SPTAG的工作方式有了更进一步的认识了呢。

SPTAG工作原理简述

对于搜索算法有了解的同学可能都会了解,搜索算法中一般有索引(index)和查寻(search)两个重要部分组成。SPTAG的索引(index)算法是基于kd-tree的。kd-tree听起来很高大上,其实他在于一维空间上的情况就是”平衡二叉树“,在高维空间上kd-tree会用第k维的大小来决定一个元素应该插入左子树还是右子树,同时为保持tree的平衡,剩余未进入tree的元素除第k维外方差最小。SPTAG正是以此来加速算法的速度。kmeans其实就是一种自动聚类的方法,算法先随机指定选取K个点做为初始聚集的簇心,分别计算每个样本点到 K个簇核心的余弦距离,找到距离最近的核心点,将它归属到对应的簇,所有点都归属到簇之后, M个点就分为了 K个簇。之后重新计算每个簇的重心,将其定为新的“核心”,重复上述步骤直到新核心不再改变为止或者改变距离达到一定值后中止。那么最终的K个簇就是最终的聚类结果。SPTAG 正是集合了kd-tree 和 kmeans 两种算法的精华,才允许用户利用深度学习模型在几毫秒内搜索数十亿条信息。原文: (*本文为 AI科技大本营转载文章,转载请联系作者)
◆公开课精彩推荐◆

本次课程将会介绍如何利用TensorRT加速YOLO目标检测,课程将会着重介绍编程方法。本次课程还会涉及到 TensorRT 中数据类型,流处理,多精度推理等细节的展示。本次课程特色是讲解+示例分享。本次课程中,QA也是一个非常精彩的环节。

推荐阅读拍照技术烂?实时在线AI构图模型VPN,让你变身摄影大神!继往开来!目标检测二十年技术综述阿里巴巴杨群:高并发场景下Python的性能挑战
为Python回测代码提升10倍性能,具体做了哪些?
鸿蒙将至,安卓安否?面试阿里,我还是挂在了第四轮……独家对话V神! 质疑之下的以太坊路在何方?
那些去德国的程序员后来怎么样了?

你点的每个“在看”,我都认真当成了喜欢
粤ICP备19111974号