微软开源算法为Bing提供了一些聪明才智
今天的搜索引擎不仅仅是他们曾经的愚蠢的关键词匹配器。你可以问一个问题 - “巴黎的塔楼有多高?” - 他们会告诉你艾菲尔铁塔高324米(1,063英尺),与81层高的建筑大致相同。他们可以做到这一点,即使问题从未实际命名塔。
他们如何做到这一点?与其他一切一样,他们使用机器学习。机器学习算法用于构建向量 - 本质上是长数字列表 - 在某种意义上表示它们的输入数据,无论是网页上的文本,图像,声音还是视频。Bing为其索引的所有不同类型的媒体捕获了数十亿个这些向量。为了搜索向量,Microsoft使用一种称为SPTAG的算法(“Space Partition Tree and Graph”)。输入查询被转换为矢量,并且SPTAG用于快速找到“近似最近邻居”(ANN),也就是说,与输入类似的矢量。
这个(有一些挥手的)是艾菲尔铁塔问题的答案:搜索“巴黎的塔有多高?”将是“近”页面谈论塔楼,巴黎,以及有多高的东西。这些页面几乎肯定会关于艾菲尔铁塔。
微软今天发布的SPTAG算法是GitHub上MIT许可的开源软件。此代码经过验证和生产级,用于回答Bing中的问题。开发人员可以使用此算法搜索他们自己的向量集并快速完成:单个计算机可以处理2.5亿个向量并每秒回答1,000个查询。Microsoft的AI实验室中有一些示例和解释,Azure将使用相同的算法提供服务。
微软首席执行官萨蒂亚·纳德拉(Satya Nadella)多次谈到他希望“人工智能化”并将其提供给每个人,不仅创造了一个集中的专业工具,需要相当多的专业知识,而且广泛的开发人员,广泛的解决方案一系列问题,可以作为其工具包的一部分使用。SPTAG的发布就是微软如何将这些话付诸实践的一个例子;Azure服务和开源的结合意味着开发人员可以从更受约束,易于使用的服务开始,随着他们的专业知识或要求变得越来越复杂,他们可以使用SPTAG来构建自己的服务。