终于把微软BING搜索-SPTAG算法的原理搞清了
作者 | beyondma
转载自 CSDN 博客
近日,微软在GitHub上开源了其BING的搜索算法SPTAG,github地址:https://github.com/microsoft/SPTAG。这个算法笔者简单看了一下,的确是很有价值可以看大家介绍下,这种称为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算法来了解,具体可参考我之前的博客https://blog.csdn.net/BEYONDMA/article/details/90114016
那么说到现在我们可以了解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 两种算法的精华,才允许用户利用深度学习模型在几毫秒内搜索数十亿条信息。
原文:https://blog.csdn.net/BEYONDMA/article/details/90578111
(*本文为 AI科技大本营转载文章,转载请联系作者)
◆
公开课精彩推荐
◆
本次课程将会介绍如何利用TensorRT加速YOLO目标检测,课程将会着重介绍编程方法。本次课程还会涉及到 TensorRT 中数据类型,流处理,多精度推理等细节的展示。本次课程特色是讲解+示例分享。本次课程中,QA也是一个非常精彩的环节。
推荐阅读
拍照技术烂?实时在线AI构图模型VPN,让你变身摄影大神!
继往开来!目标检测二十年技术综述
阿里巴巴杨群:高并发场景下Python的性能挑战
为Python回测代码提升10倍性能,具体做了哪些?
鸿蒙将至,安卓安否?
面试阿里,我还是挂在了第四轮……
独家对话V神! 质疑之下的以太坊路在何方?
那些去德国的程序员后来怎么样了?
你点的每个“在看”,我都认真当成了喜欢
终于把微软BING搜索-SPTAG算法的原理搞清了相关推荐
- 开发者周刊:英特尔再爆重大芯片漏洞;微软开源Bing搜索关键算法;Facebook联合创始人呼吁拆分Facebook
开发者周刊:只为传递"有趣/有用"的开发者内容,点击订阅! 本周热门项目 GitHub推出软件包托管服务Package Registry 本周,GitHub 再下一城,推出自己的软 ...
- 北京/苏州内推 | 微软STCA搜索广告算法团队招聘NLP算法工程师
合适的工作难找?最新的招聘信息也不知道? AI 求职为大家精选人工智能领域最新鲜的招聘信息,助你先人一步投递,快人一步入职! 微软亚洲互联网工程院 微软搜索广告算法团队隶属微软亚洲互联网工程院,我们与 ...
- 微软bing搜索好强大
搜索自己的名字,居然前6条记录都是我,微软bing必赢好强大啊!!!
- 关于微软Bing搜索语言无法更改的问题
一(在Chrome浏览器打开Bing网页的解决方案) 首先我们会发现,bing网页打开后是英文的(这个不局限于Chrome浏览器,在别的浏览器,不管是桌面或者移动端设备默认的都是English),在解 ...
- 关闭win8/8.1开机自动弹出微软bing搜索网页
来源:http://www.yishimei.cn/network/321.html 笔者使用的是win8.1专业版系统,最近每次开机都发现会自动弹出一个网页,大概域名是http://go.micro ...
- 千亿级照片,毫秒间匹配最佳结果,微软开源Bing搜索背后的关键算法
[导读]随着互联网的普及,搜索成为人们最常用的基本功能之一,但这背后的秘密是什么呢?近日,微软公司介绍了他们是其如何应对用户搜索习惯的改变,并开源了支撑 Bing 搜索背后的算法. 作者 | Char ...
- 千亿级照片,毫秒间匹配最佳结果,微软开源 Bing 搜索背后的关键算法
作者 | Charlie Waldburger 译者 | 刘畅 责编 | 一一 出品 | AI科技大本营(id:rgznai100) [导读]随着互联网的普及,搜索成为人们最常用的基本功能之一,但这背 ...
- 千亿级照片,毫秒间匹配最佳结果,微软开源 Bing 搜索背后的关键算法!
随着互联网的普及,搜索成为人们最常用的基本功能之一,但这背后的秘密是什么呢?近日,微软公司介绍了他们是其如何应对用户搜索习惯的改变,并开源了支撑 Bing 搜索背后的算法. 作者 | Charlie ...
- 微软开源Bing搜索背后的关键算法
微软今天宣布开源了一项 Bing 搜索背后的关键算法 -- SPTAG,它使 Bing 能够快速将搜索结果返回给用户. 仅在几年前,网络搜索很简单,用户输入几个关键词然后浏览结果页面.现如今,这些用户 ...
最新文章
- BK资本管理公司创始人阐述BCH接下来的三种“催化剂”
- 对F-score的理解
- 将数字n转换为字符串并保存到s中
- 连接目标数据库+无恢复目录连接目标数据库+使用有恢复目录连接目标数据库+注册数据库+目录同步+取消目标数据库的连接...
- 学会Web前端,高薪工作任你挑!
- PHP函数的引用传递(地址传递)
- CentOS服务器上搭建Gitlab安装步骤、中文汉化详细步骤、日常管理以及异常故障排查
- 开课吧:为什么指针被誉为C语言灵魂?
- 【原】执行nosetests 报错:pkg_resources.DistributionNotFound: nose==0.10.4
- Mysq 隔离级别操作
- IntelliJ IDEA 调试技巧,比 Eclipse 强太多了!
- [ROS]1 小乌龟
- python (元祖\列表\集合\字典)基础用法
- SetupParameter(mil)
- DINO: 让目标检测拥抱Transformer!霸榜COCO!
- python用渐变色画圆_画圆圈和设置渐变色
- 关于父组件向子组件传值
- AC695X_独立3路串口UART收发数据配置
- 嵌入式硬盘录像机和PC电脑+视频卡录像比较
- 罗胖做的还是知识服务吗?