一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

用于搜索检索和排名的神经网络的制作方法

2022-02-20 00:08:40 来源:中国专利 TAG:


1.本技术大体上涉及神经网络在搜索检索(search retrieval)和排名中的使用。更具体地,本技术涉及用于在信息检索系统中检索文档并且对文档排名的神经网络的改进。


背景技术:

2.诸如互联网搜索系统等信息检索系统以大规模操作,索引数百万个网页,以使信息可通过用户提交的查询进行搜索。这种搜索系统的目标是快速标识与用户查询相关的那些文档并且返回相关搜索结果。正确配置的神经网络已在研究环境中证明,以提高搜索结果的相关性。然而,由于这种方法在计算上是昂贵的,并且由于规模庞大且需要低时延,因此在搜索系统中使用神经网络被限于对研究环境之外的搜索结果的有限集合进行重新排名。
3.本实施例正是在该上下文内出现的。
附图说明
4.图1图示了现有技术搜索系统架构的示例。
5.图2图示了现有技术神经网络的示例。
6.图3图示了用于在搜索系统中训练神经网络的示例现有技术方法。
7.图4图示了根据本公开的一些方面的用于转换训练数据的示例方法。
8.图5图示了根据本公开的一些方面的用于训练机器学习模型的示例方法。
9.图6图示了根据本公开的一些方面的描绘预先计算项目(term)

文档索引的示例图。
10.图7图示了根据本公开的一些方面的示出预先计算的项目

文档如何被计算的示例流程图。
11.图8图示了根据本公开的一些方面的示出使用预先计算的项目

文档分数来计算文档排名的示例流程图。
12.图9图示了用于实现本文公开的系统和其他方面或者用于执行本文公开的方法的代表性架构。
具体实施方式
13.以下描述包括例示说明性实施例的说明性系统、方法、用户界面、技术、指令序列和计算机器程序产品。在以下描述中,出于解释的目的,若干具体细节被陈述,以便提供对本发明主题的各种实施例的理解。然而,将显而易见的是,对于本领域技术人员而言,本发明主题的实施例可以在没有这些具体细节的情况下实践。通常,众所周知的指令实例、协议、结构和技术不一定被详细示出。
14.概述
15.以下概述被提供来以简化的形式介绍对下面在描述中进一步描述的概念的选择。
该概述不旨在标识要求保护的主题的关键特征或者必要特征,也不旨在被用于限制要求保护的主题的范围。其唯一目的是以简化形式提出一些概念,作为稍后提出的更详细描述的序言。
16.在搜索系统中,基于机器学习的排名模型将整个查询与要被搜索的整个文档集合中的每个文档进行比较,因此仅被用于后期重新排名。每当搜索系统基于用户查询检索文档时,本公开的实施例能够应用于多种系统。本公开的实施例采用在查询项目无关构造下操作的机器学习模型。在本公开的上下文中,“查询项目”是指任何字符集合,诸如单词、子词、字节串等。“查询项目”小于整个查询字符串。因此集合中的每个文档能够被独立比较,然后各个查询项目的分数能够被组合为加权和,以得出整个查询的分数。
17.因为使用整个查询(或来自查询的n元语法的组合)的机器学习模型揭示并利用查询项目之间的隐藏关系,预计虽然本公开的实施例中公开的方法在计算上更有效,但是与使用整个查询的机器学习模型相比,它们的排名效率也会下降。然而,实验示出,与整个查询方法相比,在最先进的基于深度学习的排名模型上使用所公开实施例的查询项目无关方法示出最小的(或没有)排名有效性下降。
18.此外,本公开的查询无关方法允许使用深度学习排名模型离线地预先计算所有项目

文档分数。在搜索时,最终的查询

文档分数是通过预先计算的项目

文档分数的线性和来计算的。此外,预先计算的分数能够与倒排索引组合使用,以从web规模集合执行非常有效的检索。总而言之,这允许深度学习模型被用于大集合(例如web索引)上的检索。
19.此外,项目

文档分数的预先计算允许在诸如移动或其他客户端侧设备等计算有限的环境中部署深度学习搜索能力。这开辟了全新的场景,其中最先进的排名和检索模型能够在它们当前无法被部署的环境中使用。因此,本公开的实施例相对于当前方法具有效率、存储和隐私益处。
20.描述
21.基础搜索系统架构
22.图1图示了现有技术搜索系统架构的示例100。图1的架构的简化之处在于它没有讨论所有的实现细节。然而,它提供了足够的细节以允许本实施例的上下文被设置,并且它覆盖了与本公开相关的方面。
23.针对web规模的搜索系统(例如搜索数百万个文档的搜索系统),该系统首先提取关于要被搜索的文档的信息,并且构建能够针对用户查询进行搜索以标识相关文档的一个或多个索引。因此,一个或多个爬行器104标识文档集合,这些文档将表示搜索将在其上执行的语料库。web搜索系统中的文档集合是驻留在互联网102上的文档。因此,爬行器104爬行web,并且提取关于驻留在web上的文档的信息。在该上下文中,文档包括在互联网上可访问的任何信息,诸如网页、图像、其他类型的文档等。
24.所提取的信息由存储管理器106管理,该存储管理器106对信息进行去重(deduplicate),并且将信息存储在一个或多个页面存储库108中。一个或多个索引器110从页面存储库108中的信息创建文档索引112和/或具体类型信息114的索引。
25.当用户经由用户机器116提交搜索查询时,它由查询引擎接收,该查询引擎搜索索引112、114并且标识与搜索查询相关的文档集合。文档集合被排名120,并且最终结果集合响应于对用户机器116的查询返回。
26.文档通常通过多层排名器112、124进行排名,以便得到将被返回给用户的搜索结果的最终集合。多个层被用于计算效率。第一排名层122通常采用在计算上非常有效的方法来将文档集合快速缩小到可能与搜索查询相关的文档集合。后期排名层124通常采用更复杂但在计算上不太有效的方法,这些方法能够以更高的计算成本更好地将相关文档与非相关文档区分开来。因此,上层的目标是快速缩小考虑中的文档集合,而下层的目标是标识各个文档的相对相关性。
27.由于深度学习方法在计算上是昂贵的,但是能够更好地确定相对排名,它们通常仅被用于系统的后期排名阶段,因此被限于重新排名数据集而不是初始文档选择。
28.虽然以上描述是参照文档进行的,但是搜索结果通常不包括文档本身,而是包括文档可能所在的位置的链接。然而,本公开的实施例能够返回包括到文档的链接、文档本身和/或其组合的搜索结果。因此,本描述不区分返回搜索结果中的文档和返回到搜索结果中的文档的链接,并且返回文档应该包括返回文档、到文档的链接及其组合。
29.示例神经网络架构
30.图2图示了现有技术神经网络200的示例。该架构代表一般架构而不是任何具体架构。不同的深度学习模型架构已经被开发,并且一些在某些任务上比其他的更好。然而,图2的一般架构就足够了,以图示与本公开相关的原理。
31.搜索系统中的深度学习模型将输入查询202与候选文档206进行比较,以便产生候选文档206相对于输入查询202的排名分数218。深度学习模型通常包括嵌入层204、208,其为输入查询202和/或候选文档206产生单词嵌入。在嵌入层之后是一个或多个神经网络和/或编码层210、214。神经网络和/或编码层能够包括各种类型的层,取决于特定的模型架构。这些是在经训练的模型中使用和产生输入查询202和/或候选文档206的特征的相关性的层,使得说明相关性的排名分数218能够被产生。该模型具有产生排名分数218的一个或多个输出层216。各种输出层216能够被使用,诸如本领域已知的softmax、求和、sigmoid等。
32.如本文讨论的,用于搜索的神经网络架构具有限制它们在搜索系统中的有用性的几个特点。首先,为大量候选文档计算排名分数的计算负担使它们无法用于大规模搜索和排名问题。因此,在研究问题之外,神经网络架构被限于后期搜索结果重新排名,其中考虑中的候选文档的数量更加有限。
33.其次,神经网络架构的整个前提是揭示查询特征与候选文档的特征之间的“隐藏”(例如未知)相关性,以标识与搜索查询更相关的文档和/或在排名分数上获得更多的准确性。训练过程会调整神经/编码层中的权重,使得对排名分数准确性很重要的特征/相关性被强调,并且不重要的那些特征/相关性被最小化。因此,本能是呈现给神经网络的信息越多,相关性就越能够被揭示和利用。因此,当使用神经网络模型对搜索文档进行排名时,本能是整个查询字符串比仅输入几个关键字更好。
34.训练机器学习模型
35.图3图示了用于在搜索系统中训练神经网络的示例现有技术方法300。在本公开中,项目“机器学习模型”将被用于涵盖神经网络、深度学习模型和适用于信息检索的其他形式的学习模型,诸如本文描述的搜索系统中的文档标识和排名。
36.机器学习工具通过使用示例训练数据304调整机器学习模型的权重和其他参数来进行操作,以便做出表达为输出或评估314的数据驱动的预测或决策。尽管示例实施例相对
于几个机器学习模型提出,但是本文提出的原理可以被应用于其他机器学习模型。
37.通过训练过程,机器学习模型开始识别数据302中的特征之间的相关性和相互作用,这导致对输入数据的正确评估314。特征是观察到的现象的个体特性。特征并不总是对应于数据的易于标识的方面,因为机器学习中由机器学习模型“发现”的一些重要特征是输入数据特征的混合或合并。
38.机器学习算法利用训练数据304来找到影响结果或评估314的数据302的特征之间的相关性。在一些示例实施例中,训练数据304包括标记数据,其标识输入数据的正确结果。在搜索查询的上下文中,训练数据包括查询

文档“对(pair)”306。这种查询

文档对通常包含示例搜索查询、与查询相关的文档(称为doc )和与查询不相关的文档(称为doc

)。doc 是搜索查询的正示例,并且doc

是搜索查询的负示例。在本公开的上下文中,查询

文档对将指代查询和示例文档的不同组合。例如,查询

文档对能够包括查询和关联的doc 。查询

文档对还能够包括查询和关联的doc

。最后,查询

文档对能够包括查询、关联的doc 和关联的doc


39.机器学习模型经由训练过程308使用训练数据304训练。训练过程308在本领域中是已知的,并且调整机器学习模型的权重和其他参数,使得表达模型误差的损失函数相对于训练数据最小化。训练过程将查询

文档对中的每个查询

文档对呈现给机器学习模型,评价输出评估,将其与正确的输出进行比较,并且基于比较调整模型的权重和其他参数。该过程针对训练数据集304重复,使得损失函数被最小化。训练的结果是经训练的机器学习模型312。
40.当机器学习模型312被用于执行评估时,新数据310(例如新查询和要相对于查询评价的文档)被提供作为经训练的机器学习模型312的输入,并且经训练的机器学习模型312生成评估314作为输出。在这种情况下,评估314将是文档的排名分数。
41.与查询项目无关的机器学习模型
42.如上面提到的,修改机器学习模型的操作以利用查询项目无关性与常规智慧和实践背道而驰。然而,本公开的实施例利用与查询项目无关的机器学习模型。这导致本文讨论的令人惊讶且出乎意料的结果。
43.用于排名的机器学习模型不假设查询项目无关性。相反,它们学习复杂的匹配函数来将候选文档与上面讨论的完整查询进行比较。传统机器学习模型φ的参数通常是通过最小化以下形式的损失函数来区分学习的,如上面讨论的:
[0044][0045]
其中,
[0046]
在这些等式中,q是查询,d

表示与查询相关的文档(即,doc ),并且d

表示与查询不相关的文档(即,doc

)。损失能够采用不同的形式,诸如ranknet损失(chris burges、tal shaked、erin renshaw、ari lazier、matt deeds、nicole hamilton和greg hullender于2005年在第22届机器学习国际会议论文集的acm的第89至96页发表的learning to rank using gradient descent(学习使用梯度下降进行排名)中讨论的)、铰链损失(herbrich、ralf&graepel、thore&obermayer、klaus于2000年在大边距分类器的进
展第88页发表的large margin rank boundaries for ordinal regression(序数回归的大边距排名边界)中讨论的)或一些其他损失。
[0047]
ranknet损失是以下形式的对数损失:
[0048][0049]
其中,如上面的等式(2)中给出的,并且σ是损失函数的参数。
[0050]
铰链损失是以下形式的损失函数:
[0051][0052]
其中,如上面的等式(2)中给出的,并且∈是损失函数的参数。
[0053]
给定机器学习模型φ,对应的与查询项目无关的机器学习模型被定义为:
[0054]
φ
q,d
=∑
t∈q
wiφ
t,d
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(5)
[0055]
其中,t是存在于查询q中的查询项目。
[0056]
d是考虑中的文档。
[0057]
φ
t,d
是具有输入参数t和d的机器学习模型的输出。这是关于文档d的项目t的排名分数贡献因子。
[0058]
wi是第i个排名分数贡献因子的可选加权因子。
[0059]
新模型φ能够保留与原始模型φ相同的架构,但相对于每个查询项目独立地估计文档d的相关性。然而,尽管新模型能够具有与原始模型相同的架构,但通常能够对架构进行简化,因为新模型只需要处置单个输入项目而不是整个查询短语。如果进行这种简化,则新模型的计算负担通常能够相对于原始模型减少。
[0060]
新模型φ的参数使用以下形式的修改损失函数学习:
[0061][0062]
其中,
[0063]
损失能够采用不同的形式,诸如ranknet损失、铰链损失或一些其他损失。
[0064]
查询无关模型的ranknet损失将采用以下形式:
[0065][0066]
其中,如上面的等式(7)中给出的,并且σ是损失函数的参数。
[0067]
查询无关模型的铰链损失将采用以下形式:
[0068][0069]
其中,如上面的等式(7)中给出的,并且∈
是损失函数的参数。
[0070]
给定文档集合(有时称为语料库)c和查询项目的词汇表v,经训练的机器学习模型能够被用于预先计算所有项目t∈v和文档d∈c的排名分数贡献值中的每个排名分数贡献值。通过这些排名贡献值,查询q和文档d的与查询无关的机器学习模型能够被计算为排名贡献值的加权和,如等式(5)中给出的。另外,预先计算的排名贡献值能够被存储在倒排索引中,以使用学习的相关函数φ从完整集合执行检索。
[0071]
能够被用于存储预先计算的排名贡献值φ
t,d
的多个信息检索数据结构假设φ
t,d
的值始终为正。如果在本公开的实施例中采用,则负值可能会防止这些信息检索数据结构的正常运作。然而,本公开的公式并不能确保φ
t,d
的值始终为正。为了消除负值的可能性并且确保这种数据结构的正常运作,作为模型输出的激活函数的整流线性单元(诸如xavier glorot、antoine bordes和yoshua bengio于2011年在第14届人工智能和统计国际会议论文集第315至323页发表的deep sparse rectifier neural networks(深度稀疏整流器神经网络)中讨论的)能够被使用。
[0072]
预先计算排名贡献值φ
t,d
的能力允许机器学习文档选择和排名在本文描述的计算有限的环境中利用。这是本方法的显着优点,因为在大规模搜索系统或计算有限的环境中利用最先进的机器学习方法的问题中的一个问题是这些应用中的计算负担和关联时延。因此,本公开的实施例提供优于现有技术方法的显着技术优点。
[0073]
实际上,针对大规模搜索环境,查询项目t和文档d的组合总数可能非常大。然而,在这种情况下,本公开的实施例能够对要评价的<t,d〉组合实施附加的约束,并且简单地假设没有来自剩余对的贡献。基本上,这意味着分别从词汇表v和/或语料库c或两者中丢弃特定的项目

文档组合<t,d>,丢弃项目t和/或丢弃文档d。
[0074]
从考虑中丢弃项目能够通过丢弃出于一种原因或另一原因不提供歧视效果的项目和/或项目

文档组合来实现,诸如通过评价项目

频率、逆文档频率或其组合。项目

频率和逆文档频率是众所周知的指标。项目

频率是项目在文档中出现的频率的计数。逆文档频率是对项目提供多少信息的度量,即,该项目在所有文档中是罕见的还是常见的。项目频率和逆文档频率的几种公式是已知的,并且任何公式都能够被用于帮助标识要从考虑中丢弃的项目和/或文档。例如,存在于所有(或几乎所有)文档中的项目对于根据与包含该项目的查询的相关性对文档进行排名几乎没有歧视效果。因此,具有高项目

频率值(例如高于阈值)的项目能够从考虑中排除。类似地,通过逆文档频率测量的常见项目能够从考虑中排除。这能够再次通过将逆文档频率值与阈值进行比较并且排除超出阈值的那些项目来测量。
[0075]
项目频率和逆文档频率通常通过将两个指标相乘在一起而组合为项目频率

逆文档频率信号。该信号还能够被用于标识常见的项目,并且在文档的排名值方面几乎没有歧视效果。将项目频率

逆文档频率信号与阈值进行比较并且排除超出阈值的那些项目能够被用于从考虑中排除项目。
[0076]
还存在其他机制来从考虑中排除项目

文档组合、项目和/或文档,以约束被评价的组合数量。使用单词作为查询项目的代表性示例,单词通常能够具有相同或类似的含义。具有相同或类似含义的单词能够被分配相同的查询贡献分数。在这个意义上,就查询贡献分数而言,“集群”中的单词能够被视为相同,并且针对整个集群只需要计算和/或存储一个
分数。这种方法有效地从计算和/或存储中丢弃查询

项目。例如,单个查询项目能够被用于计算该项目的查询贡献分数,然后该分数能够针对集群中的所有查询项目存储。作为替代方案,分数能够针对整个集群存储,诸如通过使用集群标识符。索引然后能够被用于将查询项目转换为集群标识符,并且查询贡献分数能够基于集群标识符检索。
[0077]
有几种方式标识具有相同或类似含义的单词。例如,嵌入空间中非常接近的单词也有类似的含义。因此,最近邻算法能够被用于将查询项目分组到集群中,其中该集群的所有成员都被分配有相同的查询贡献分数。其他方法能够被用于标识查询项目之间的相似性,诸如字典

定义同义词、本体策略(如包括单词之间的关系图形的“单词

网”(word

net))等。
[0078]
在查询项目不是单词而是查询字符串的一些其他子集的情况下,类似的策略能够被使用。
[0079]
训练与查询项目无关的机器学习模型
[0080]
现在转到图4至图6,训练与查询项目无关的机器学习模型φ的讨论被提出。
[0081]
如上面提到的,本公开的与查询项目无关的机器学习模型使用包括查询项目、正相关文档(doc )示例和/或负相关文档(doc

)示例中的一个或两者的查询项目

文档对来训练。采集这种训练数据的一种方式是将被用于训练查询短语机器学习模型的训练数据转换为适合训练与查询项目无关的机器学习模型的训练数据。图4图示了一个这样的示例400。
[0082]
在该示例中,查询短语

文档402的单个条目被转换为多个查询项目

文档408条目。这是通过训练转换方法406完成的。方法406如何操作是首先检索训练数据集中的下一查询

文档对402。查询

文档对402的查询部分被评价以标识查询短语中的所有查询项目。查询项目如何被提取取决于查询项目是什么(例如查询项目定义)。例如,在查询项目是单词的情况下,这能够通过查找项目分隔指示符(诸如空格)或使用其他机制从短语中提取单个单词来完成。在查询项目是子词、固定长度的字符串或查询字符串的一些其他部分的情况下,则其他机制被使用。提取固定长度的字符串是不言自明的,因为查询被分解为固定长度的字符串,在必要时进行填充。在查询项目是n元语法的情况下,将查询字符串划分为n元语法的已知方法能够被使用。在查询项目被字符或符号划分的情况下,查询字符串能够基于字符或符号在查询字符串内出现的位置来解析并且被分解为查询项目。其他方法也能够被使用,取决于所使用的特定查询项目定义。
[0083]
一旦各个查询项目从查询短语中提取,要从考虑中排除的任何停止词或其他项目(诸如上面解释的)就可以从提取的查询项目的集合中排除。
[0084]
针对剩余查询项目中的每个查询项目,每个查询项目与来自原始查询

文档对402的示例文档(例如doc 和/或doc

)配对,以得到多个查询项目

文档对408。
[0085]
作为示例,考虑查询“塑料回收策略”与doc 示例和doc

示例相关联的查询

文档对,如由查询

文档对404指示的。在这种情况下,查询将被分析,并且查询项目“塑料”、“回收”和“策略”将被提取。
[0086]
假设对查询项目的分析没有指示这些项目中的任何一个应该从考虑中丢弃,doc 和doc

示例将与三个查询项目中的每个查询项目配对以产生项目

文档对:{“塑料”,doc ,doc

}410、{“回收”,doc ,doc

}412、{“策略”,doc ,doc

}414。然后这三个查询项目

文档
对将被添加到与查询项目无关的机器学习模型的训练数据集。如果原始查询

文档对包含查询并且仅包含关联的doc 或doc

,则相同的策略将被使用,通过将查询项目与关联的doc 或doc

配对,视情况而定。
[0087]
图5图示了根据本公开的一些方面的用于训练机器学习模型的示例方法500。该操作类似于先前结合图3讨论的方法,除了在训练过程508中用于训练与查询项目无关的机器学习模型的损失函数和训练过程508所使用的实际训练数据502训练与查询项目无关的机器学习模型之外。附加地或备选地,所使用的实际的与查询项目无关的机器学习模型能够被简化,以排除当模型仅使用单个查询项目时不需要的方面,如本文描述的。
[0088]
换句话说,将机器学习模型转变为经训练的与查询项目无关的机器学习模型的是:1)模型的可选简化以排除单个输入查询项目不需要的方面;2)所使用的训练数据是查询项目

文档对(而不是查询

文档对);以及3)训练期间使用的损失函数。
[0089]
可选的模型简化通过排除在单个输入查询项目是将被输入的所有时不需要的方面来执行。没有通用的方法来实现这一点,但本领域技术人员将能够通过在单个输入项目的假设下分析机器学习模型架构来执行该操作。排除什么(如果有的话)取决于机器学习模型的实际架构。然而,通常只考虑项目组合的方面能够被完全排除。机器学习模型内的神经网络层通常也能够被简化。
[0090]
例如,获得训练数据504的正确的查询项目

文档对506能够如图4所描述的那样完成。
[0091]
在另一实施例中,上述的查询项目聚类方法能够被利用。例如,机器学习模型能够使用查询项目集群

文档对来训练。使用单词作为查询项目的代表性示例,单词通常能够具有相同或类似的含义。具有相同或类似含义的单词能够被一起分组在集群中,如上面结合减少查询项目、文档和/或查询项目

文档对的数量描述的。出于训练目的,集群中的单词能够被视为相同。因此,查询项目能够针对集群中的成员资格检查。如果查询项目是集群的成员,则两种方法中的一种方法可以被采用。在第一方法中,集群中的每个查询项目的查询项目

文档对通过将集群中的每个查询项目与关联于查询短语的doc 和/或doc

配对来创建。例如,如果查询

文档对是{“塑料材料”,doc }并且“塑料”属于具有“易弯的”、“弹性的”和“延性的”的查询项目集群,则所得的查询项目

文档对将是:{“塑料”,doc }、{“易弯的”,doc }、{“弹性的”,doc }、{“延性的”,doc }和{“材料”,doc }。
[0092]
在第二方法中,集群的单个代表性项目能够被用于训练集群中的任何项目。因此,利用与上面相同的查询项目集群,如果“塑料”是代表性项目,则查询

文档对{“延性材料”,doc

}将导致查询项目

文档对为:{“塑料”,doc

}和{“材料”,doc

}。
[0093]
由方法508使用的损失函数由等式(6)和(7)给出,其中等式(8)和(9)作为上面讨论的具体示例。利用该损失函数,与查询项目无关的机器学习模型使用本领域公知的方法训练以最小化所选的(多个)损失函数。
[0094]
经训练的机器学习模型512能够被用于计算给定项目t和文档d的排名贡献值φ
t,d
。因此,新数据510是项目t和文档d,并且评估是对应的排名贡献值φ
t,d

[0095]
利用这些变化,经过必要的修改,附图的其余部分如图3所描述的那样操作。
[0096]
预先计算的项目

文档索引
[0097]
给定项目t和文档d的排名贡献值φ
t,d
能够被预先计算,并且被存储在查询项目

[0113]
(2)“垃圾回收选项”[0114]
(3)“对垃圾进行分类以进行回收”[0115]
和n个文档d1...dn的语料库。
[0116]
在操作704中开始的循环将遍历三个查询ql...q3并且提取唯一查询项目。在这种情况下,唯一查询项目的列表位于表1的第一列中。
[0117]
表1:项目

文档分数
[0118][0119][0120]
在708中开始的循环将在查询中的每个项目上循环。在710中开始的循环将遍历所有文档d1...dn。操作714计算项目

文档分数,并且操作716将分数存储在索引中。假设s
t,d
是项目t和文档d的分数,在方法完成之后,表1将类似于表2。
[0121]
表2:项目

文档分数
[0122]
d1d2...dn塑料s
1,1
s
1,2
...s
1,n
回收s
2,1
s
2,2
...s
2,n
策略s
3,1
s
3,2
...s
3,n
垃圾s
4,1
s
4,2
...s
4,n
选项s
5,1
s
5,2
...s
5,n
分类s
6,1
s
6,2
...s
6,n
[0123]
各个分数s
t,d
是使用经训练的与查询项目无关的机器学习模型(例如512、612)计算的排名贡献值φ
t,d

[0124]
使用机器学习来选择和排名文档
[0125]
图8图示了根据本公开的一些方面的示出使用预先计算的项目

文档分数来计算文档排名的示例流程图800。出于说明的目的,上面的表2将被用作预先计算的查询项目索引和其中的分数的示例。附加地,样本查询“在回收之前对塑料进行分类”将被用作样本查询。
[0126]
该方法开始于操作802,并且进行到操作804,其中查询被接收。在本文使用的示例中,查询是“在回收之前对塑料进行分类”。
[0127]
操作806开始在语料库中的每个文档上循环。在我们的示例中,d1...dn。
[0128]
操作808开始在查询中的每个项目上循环。针对我们的样本查询,丢弃停用词

to”,在操作808中开始的循环将为项目“分类”、“塑料”、“先前”和“回收”循环一次。
[0129]
文档循环和查询项目循环能够以任何顺序执行。然而,如果文档是外部循环,则分数聚合操作814能够容易地聚合每个文档的分数,如下面解释的。
[0130]
操作810在项目

文档索引中为考虑中的查询项目和文档查找对应的分数。第一次通过在操作806和操作808中开始的循环,考虑中的文档将是d1,并且考虑中的项目将是“分类”。来自表2的对应分数是s
6,1

[0131]
操作812表示项目和/或文档的可选加权因子。在一些实施例中,可能期望基于当前已知但在分数被预先计算时未知的知识来调整加权因子。例如,随着时间的推移,通过观察用户行为,某些单词的重要性可能变得明显。假设用户按顺序键入以下查询:
[0132]
(1)“对速率进行分类”[0133]
(2)“用于回收的塑料分类机器”[0134]
(3)“在回收之前对塑料进行分类”[0135]
进一步假设在前两个查询之后,用户没有找到他们正在查找的东西(例如由运行下一查询的用户确定而不查看先前查询的搜索结果)。能够假定当前查询中的新项目比先前查询中重复出现的项目更重要。在这种情况下,可能期望给出权重比重复项目更大的新项目。类似地,也许一些单词在一些上下文中不是很具有辨别力,但在其他上下文中更具辨别力。上下文然后能够被用于标识在给定上下文的情况下哪些项目应该被给与更多的权重和/或更少的权重。
[0136]
操作814聚合当前项目的文档的分数。
[0137]
循环在操作816和818中结束。在操作816中结束的循环之后,考虑中的文档的聚合分数将是已知的。使用我们的示例查询,并且假设操作812没有调整分数,聚合分数将如表3所示。
[0138]
表3:聚合文档分数
[0139][0140][0141]
操作820能够通过聚合分数对文档进行排名,并且返回文档的子集作为排名的文档集合。该子集能够通过至少部分地基于聚合分数的选择准则来确定。因此,与前n个文档相对应的文档可以被选择并返回。在该上下文中,子集是所有文档或少于所有文档。
[0142]
测试结果
[0143]
为了测试本公开的实施例的性能,已知的段落排名数据集被选择,并且最先进的深度神经网络模型根据本文描述的方法调整和训练。以本公开的查询项目无关方式使用的
模型的性能和以传统方式使用的模型的性能被比较。在进行这种比较时,预计以传统方式使用的模型在排名和选择准确性方面将优于以本公开的查询项目无关方式使用的模型,但是在本公开中提出的以查询项目无关方式使用的模型在计算效率方面将优于以传统方式使用的模型。换言之,预计由本公开采用的方法从计算的角度来看更有效,但从准确性的角度来看则不太有效。令人惊讶的是,本公开中的实施例的准确性与现有技术的深度学习方法之间几乎没有统计显着性。附加地,预先计算的项目文档索引比现有技术的深度学习方法具有显着的计算优势。因此,测试数据示出在准确性方面没有权衡以获得预期的计算效率。
[0144]
测试使用了ms marco数据集,如payal bajaj、daniel campos、nick craswell、li deng、jianfeng gao、xiaodong liu、rangan majumder、andrew mcnamara、bhaskar mitra、tri nguyen等人于2016年在arxiv:1611.09268v3[cs.cl]发表的ms marco:a human generated machine reading comprehension dataset(ms marco:人工生成的机器阅读理解数据集)中描述的。在编写时,该数据集可从http://www.msmarco.org获得。该数据集包括从搜索日志中提取的超过100万个查询、从web文档提取的880万个段落以及用于训练的400,000个正面标记的查询

段落对,并且是当今可用于对深度神经信息检索方法进行基准测试的少数大型数据集中的一个数据集。
[0145]
ms marco数据集包含段落排名任务,每个查询包括一千个段落,被评价的信息检索模型应该被重新排名。与每个查询相对应,一个或几个段落由人工编辑注释为包含与查询相关的答案。由模型产生的排名列表是使用平均倒数排名(mmr)指标针对地面实况注释进行评价的。ms marco训练数据集被用于训练测试中使用的所有模型。
[0146]
该数据集还包括排行榜(截至2019年3月3日有18个条目),它能够是有用的方法目录,示出了最先进的信息检索性能。换言之,排行榜允许对数据集具有最高准确性的方法被采用以与本公开的实施例进行比较。
[0147]
这些测试比较了用于信息检索的三种不同的性能最佳的深度学习神经网络方法。这三个模型是bert、duet和cknrm,并且在下面更详细地描述。
[0148]
bert在ms marco数据集上实现了最先进的性能,如rodrigo nogueira和kyunghyun cho在arxiv:1901.04085v2[cs.ir]发表的passage re

ranking with bert(利用bert的段落重新排名)中描述的。作者报告了基于ms marco数据集上预训练的bert基础和bert大模型的微调的检索性能。进行的测试使用bert基础模型。
[0149]
duet模型通过以下组合来估计文档与查询的相关性:(1)检查文档中的查询项目的精确匹配的模式,以及(2)计算查询和文档的学习的潜在表示之间的相似性。duet模型在bhaskar mitra、fernando diaz和nick craswell于2017年在proc.www第1291至1299页发表的learning to match using local and distributed representations of text for web search(学习使用本地和分布式文本表示以进行web搜索的匹配)中描述。在ms marco排行榜上产生结果的duet版本对以上论文的原始duet进行了修改。在编写时,这些修改能够在https://github.com/dfcf93/msmarco/blob/master/ranking/baselines/duet.ipynb处找到。该版本的duet被用于比较目的。
[0150]
cknrm模型组合基于内核池化的软匹配和用于比较n元语法的卷积架构。cknrm使用内核池化从查询和段落一元语法、二元语法和三元语法的交互矩阵中提取排名信号。在
编写时在https://github.com/thunlp/kernel

based

neural

ranking

models处找到的该模型的公开实现被用于比较目的。
[0151]
下面的表4比较了三个模型,它们处于其原始配置(即,使用完整查询)并且作为与查询项目无关的模型,如本文指定的那样训练和使用。
[0152]
表4:排名有效性比较
[0153][0154]
在表4中,“完整的”表示以现有技术方式(即,具有完整查询)训练和使用的模型。“与项目无关的”表示如在本公开的实施例中描述的那样训练和使用的模型(即,以本文描述的查询项目无关方式)。bm25是对搜索结果进行排名的非机器学习方法,它使用与查询项目无关的假设,并且是本领域众所周知的。此处它被提出为与机器学习方法的比较。
[0155]
基于duet和cknrm的模型分别被训练五次和八次,针对模型参数使用不同的随机种子。表4报告了平均值和中位数mrr。针对基于bert的模型,进行了单次训练和评价运行。如在表格中提到的,与在整个查询短语上使用模型相比,当使用本公开的实施例中的模型时,在有效性上几乎没有或没有统计显着差异。bert模型确实在单次运行中示出统计显着差异,但目前不知道多次训练运行的统计数据将如何计算。如本文提到的,这是一个令人惊讶的结果,并且考虑到机器学习模型的性质和目的,这是出乎意料的。这意味着本公开的实施例几乎没有或没有准确性,但获得了计算效率。
[0156]
下面的表5示出了基于来自测试集的395个查询的随机样本的较小规模检索实验的结果。duet模型被选择以进行评价,并且以本文描述的实施例的查询无关方式使用,以预先计算所选查询项目的排名贡献值φ
t,d
(例如预先计算的项目

文档索引)。为了约束项目

文档索引的维度,排名贡献值仅针对以下项目计算:1)在文档中至少出现一次,以及2)没有出现在文档集合中超过5%的文档中。在表格中,bm25模型、duet作为最终的重新排名器的bm25模型(用于初始选择)以及与查询项目无关的duet模型。
[0157]
表5:检索结果
[0158][0159]
如此处提到的,与bm25和bm25 duet相比,与项目无关的duet的召回率@1000提高了6.25%。这是统计上的显着提高。在上面的测试中使用完整的duet模型在计算上是不可行的,因为完整的duet模型必须针对每个查询和文档组合运行。
[0160]
示例机器架构和机器可读介质
[0161]
图9图示了适合于实现系统等或者执行本文公开的方法的代表性机器架构。图9的机器被示出为独立设备,其适合于以上概念的实现。针对上述服务器方面,在数据中心、云架构的一部分等中操作的多个这种机器能够被使用。在服务器方面中,并非所有图示的功能和设备都被利用。例如,虽然用户用于与服务器和/或云架构交互的系统、设备等可能具有屏幕、触摸屏输入等,但服务器通常没有屏幕、触摸屏、摄像头等,并且通常通过具有适当输入和输出方面的连接系统与用户交互。因此,下面的架构应该被视为涵盖多种类型的设备和机器,并且各个方面可能存在或可能不存在于任何特定设备或机器中,这取决于其外形因素和用途(例如服务器很少有摄像头,而可穿戴设备很少包括磁盘)。然而,图9的示例解释适合于允许本领域技术人员确定如何利用硬件和软件的适当组合来实现先前描述的实施例,并且对所使用的特定设备、机器等的图示实施例进行适当修改。
[0162]
虽然仅单个机器被图示,但是项目“机器”也应被视为包括单独地或者联合地执行用于执行本文讨论的任何一种或多种方法的一个(或多个)指令集的任何机器集合。
[0163]
机器900的示例包括至少一个处理器902(例如中央处理单元(cpu)、图形处理单元(gpu)、高级处理单元(apu)或其组合)、一个或多个存储器(诸如主存储器904、静态存储器906或其他类型的存储器),它们经由链路908彼此通信。链路908可以是总线或其他类型的连接信道。机器900可以包括其他可选方面,诸如包括任何类型的显示器的图形显示单元910。机器900还可以包括其他可选方面,诸如字母数字输入设备912(例如键盘、触摸屏等)、用户界面(ui)导航设备914(例如鼠标、轨迹球、触摸设备等)、存储单元916(例如磁盘驱动器或(多个)其他存储设备)、信号生成设备918(例如扬声器)、(多个)传感器921(例如全球定位传感器、(多个)加速度计)、(多个)麦克风、(多个)摄像头等)、输出控制器928(例如有线或无线连接以与诸如通用串行总线(usb)、近场通信(nfc)、红外(ir)、串行/并行总线等一个或多个其他设备连接和/或通信)和网络接口设备920(例如有线和/或无线的)以通过一个或多个网络926连接和/或通信。
[0164]
可执行指令和机器存储介质
[0165]
各种存储器(即,(多个)处理器902的904、906和/或存储器)和/或存储单元916可以存储一个或多个指令集和数据结构(例如软件)924,其实施本文描述的方法或功能中的任何一个或多个或被其利用。在由(多个)处理器902执行时,这些指令实现各种操作以实现
所公开的实施例。
[0166]
如本文使用的,项目“机器存储介质”、“设备存储介质”、“计算机存储介质”是指相同的事物,并且可以在本公开中互换使用。该项目指的是存储可执行指令和/或数据的单个或多个存储设备和/或介质(例如集中式或分布式数据库和/或关联的缓存和服务器)。因此,项目应该被理解为包括诸如固态存储器以及光学和磁性介质等存储设备,包括处理器内部或外部的存储器。机器存储介质、计算机存储介质和/或设备存储介质的具体示例包括非易失性存储器,通过示例包括:半导体存储器设备,例如可擦除可编程只读存储器(eprom)、电可擦除可编程只读存储器(eeprom)、fpga和闪存设备;磁盘,诸如内部硬盘和可移除盘;磁光盘;以及cd

rom和dvd

rom盘。项目机器存储介质、计算机存储介质和设备存储介质具体且明确地排除了载波、调制数据信号和其他这种瞬态介质,其中至少一些在下面讨论的项目“信号介质”下覆盖。
[0167]
信号介质
[0168]
项目“信号介质”应该被认为包括任何形式的调制数据信号、载波等。项目“调制数据信号”是指其一个或多个特点以对信号中的信息进行编码的这种方式设置或改变的信号。
[0169]
计算机可读介质
[0170]
项目“机器可读介质”、“计算机可读介质”和“设备可读介质”表示相同的事物,并且在本公开中可以互换使用。该项目被定义为包括机器存储介质和信号介质。因此,该项目包括存储设备/介质和载波/调制数据信号。
[0171]
示例实施例
[0172]
示例1.一种用于信息检索的方法,包括:
[0173]
提供对预先计算的项目

文档索引的访问,预先计算的项目

文档索引中的每个排名分数由机器学习模型提供,机器学习模型使用训练数据集而被训练,该训练数据集包括查询项目

文档对;
[0174]
接收查询;
[0175]
将查询拆分为该查询的组成查询项目;
[0176]
针对每个组成查询项目:
[0177]
基于来自预先计算的项目

文档索引的组成查询项目,为文档集合中的每个文档检索对应的排名分数;以及
[0178]
通过文档聚合组成查询项目的排名分数;
[0179]
通过对应的聚合排名分数对文档集合进行排名;
[0180]
选择已排名的文档集合的子集作为搜索结果集合;以及
[0181]
响应于查询返回搜索结果集合。
[0182]
示例2.根据示例1的方法,其中预先计算的项目

文档索引是使用包括以下步骤的方法而被创建的:
[0183]
标识查询集合;
[0184]
针对查询集合中的每个查询:
[0185]
将考虑中的查询拆分为该查询的组成查询项目;以及
[0186]
针对每个组成查询项目:
[0187]
使用经训练的机器学习模型为文档集合中的每个文档计算排名分数;以及
[0188]
将排名分数存储在预先计算的项目

文档索引中。
[0189]
示例3.根据示例1的方法,其中预先计算的项目

文档索引是使用包括以下步骤的方法而被创建的:
[0190]
标识查询集合;
[0191]
将每个查询集合拆分为该查询的组成查询项目以形成查询项目集合;
[0192]
从查询项目集合中选择查询项目子集;
[0193]
在文档集合中选择文档子集;
[0194]
针对查询项目子集中的每个查询项目:
[0195]
使用经训练的机器学习模型为文档集合中的每个文档计算排名分数;以及
[0196]
将排名分数存储在预先计算的项目

文档索引中。
[0197]
示例4.根据示例1、2或3的方法,其中预先计算的项目

文档索引是从另一系统被接收的。
[0198]
示例5.根据示例1、2、3或4的方法,其中预先计算的项目

文档索引是在执行方法的系统上被计算的。
[0199]
示例6.根据示例1、2、3、4或5的方法,其中机器学习模型是使用包括以下步骤的方法而被训练的:
[0200]
标识包括查询

文档对集合的第一训练数据;
[0201]
将每个查询

文档对拆分为查询项目

文档对集合,从而创建第二训练数据;
[0202]
标识与查询项目无关的损失函数;
[0203]
通过针对第二训练数据最小化与查询项目无关的损失函数,来训练机器学习模型。
[0204]
示例7.根据示例6的方法,其中与查询项目无关的损失函数是项目

文档分数的加权和。
[0205]
示例8.根据示例6的方法,其中与查询项目无关的损失函数是正文档示例的项目

文档分数与负文档示例的项目

文档分数的差异的加权和的函数。
[0206]
示例9.根据示例1、2、3、4、5、6、7或8的方法,其中每个项目

文档对包括:
[0207]
来自查询

文档对的查询项目;以及
[0208]
来自查询

文档对的正文档示例或者来自查询

文档对的负文档示例中的一项。
[0209]
示例10.根据示例1、2、3、4、5、6、7或8的方法,其中每个项目

文档对包括:
[0210]
来自查询

文档对的查询项目;
[0211]
来自查询

文档对的正文档示例;以及
[0212]
来自查询

文档对的负文档示例。
[0213]
示例11.根据示例1、2、3、4、5、6、7、8、9或10的方法,还包括从较大的文档集合中选择文档集合,使得该文档集合是较大文档集合的子集。
[0214]
示例12.根据示例1、2、3、4、5、6、7、8、9、10或11的方法,还包括:
[0215]
为组成查询项目的排名分数动态地选择权重;以及
[0216]
其中聚合包括通过动态选择的权重对组成查询项目的排名分数进行加权。
[0217]
示例13.根据示例12的方法,其中动态选择的权重是基于查询短语的上下文而被
选择的。
[0218]
示例14.一种装置,包括与任何前述示例中一样执行方法的部件。
[0219]
示例15.一种包括机器可读指令的机器可读存储装置,机器可读指令在被执行时用于与任何前述示例中一样实现方法或者实现装置。
[0220]
示例16.一种用于信息检索的方法,包括:
[0221]
提供对预先计算的项目

文档索引的访问,预先计算的项目

文档索引中的每个排名分数由机器学习模型提供,机器学习模型使用训练数据集而被训练,该训练数据集包括查询项目

文档对;
[0222]
接收查询;
[0223]
将查询拆分为该查询的组成查询项目;
[0224]
针对每个组成查询项目:
[0225]
基于来自预先计算的项目

文档索引的组成查询项目,为文档集合中的每个文档检索对应的排名分数;以及
[0226]
通过文档聚合组成查询项目的排名分数;
[0227]
通过对应的聚合排名分数对文档集合进行排名;
[0228]
选择已排名的文档集合的子集作为搜索结果集合;以及
[0229]
响应于查询返回搜索结果集合。
[0230]
示例17.根据示例16的方法,其中预先计算的项目

文档索引是使用包括以下步骤的方法而被创建的:
[0231]
标识查询集合;
[0232]
针对查询集合中的每个查询:
[0233]
将考虑中的查询拆分为该查询的组成查询项目;以及
[0234]
针对每个组成查询项目:
[0235]
使用经训练的机器学习模型为文档集合中的每个文档计算排名分数;以及
[0236]
将排名分数存储在预先计算的项目

文档索引中。
[0237]
示例18.根据示例16的方法,其中预先计算的项目

文档索引是从另一系统被接收的。
[0238]
示例19.根据示例16的方法,其中预先计算的项目

文档索引是在执行方法的系统上被计算的。
[0239]
示例20.根据示例16的方法,其中机器学习模型是使用包括以下步骤的方法而被训练的:
[0240]
标识包括查询

文档对集合的第一训练数据;
[0241]
将每个查询

文档对拆分为查询项目

文档对集合,从而创建第二训练数据;
[0242]
标识与查询项目无关的损失函数;
[0243]
通过针对第二训练数据最小化与查询项目无关的损失函数,来训练机器学习模型。
[0244]
示例21.根据示例20的方法,其中与查询项目无关的损失函数是项目

文档分数的加权和。
[0245]
示例22.根据示例20的方法,其中与查询项目无关的损失函数是正文档示例的项


文档分数与负文档示例的项目

文档分数的差异的加权和的函数。
[0246]
示例23.根据示例20的方法,其中每个项目

文档对包括:
[0247]
来自查询

文档对的查询项目;以及
[0248]
来自查询

文档对的正文档示例或者来自查询

文档对的负文档示例中的一项。
[0249]
示例24.根据示例20的方法,其中每个项目

文档对包括:
[0250]
来自查询

文档对的查询项目;
[0251]
来自查询

文档对的正文档示例;以及
[0252]
来自查询

文档对的负文档示例。
[0253]
示例25.根据示例16的方法,还包括从较大的文档集合中选择文档集合,使得该文档集合是较大文档集合的子集。
[0254]
示例26.根据示例16的方法,还包括:
[0255]
为组成查询项目的排名分数动态地选择权重。
[0256]
示例27.一种包括处理器和计算机可执行指令的系统,该计算机可执行指令在由处理器执行时使系统执行操作,操作包括:
[0257]
利用包括以下步骤的操作来创建预先计算的项目

文档索引:
[0258]
标识查询项目集合;
[0259]
提供对机器学习模型的访问,机器学习模型使用训练数据集而被训练,该训练数据集包括查询项目

文档对;
[0260]
针对查询项目集合中的每个查询项目:
[0261]
使用经训练的机器学习模型为文档集合中的每个文档计算排名分数;以及
[0262]
将排名分数存储在预先计算的项目

文档索引中;
[0263]
利用包括以下步骤的操作来选择查询结果集合:
[0264]
接收查询;
[0265]
将查询拆分为该查询的组成查询项目;
[0266]
针对每个组成查询项目:
[0267]
基于来自预先计算的项目

文档索引的组成查询项目,为文档集合中的每个文档检索对应的排名分数;以及
[0268]
通过文档聚合组成查询项目的对应排名分数;
[0269]
通过对应的聚合排名分数对文档集合进行排名;
[0270]
选择已排名的文档集合的子集作为搜索结果集合;以及
[0271]
响应于查询返回搜索结果集合。
[0272]
示例28.根据示例27的系统,还包括从较大的文档集合中选择文档集合,使得该文档集合是较大文档集合的子集。
[0273]
示例29.根据示例27的系统,还包括使用包括以下的操作来训练机器学习模型:
[0274]
标识包括查询

文档对集合的第一训练数据;
[0275]
将每个查询

文档对拆分为查询项目

文档对集合,从而创建第二训练数据;
[0276]
标识与查询项目无关的损失函数;
[0277]
通过针对第二训练数据最小化与查询项目无关的损失函数,来训练机器学习模型。
[0278]
示例30.根据示例29的系统,其中与查询项目无关的损失函数是项目

文档分数的加权和的函数。
[0279]
结论
[0280]
鉴于本发明的原理和前述示例可以被应用的许多可能的实施例,应该认识到,本文描述的示例仅是说明性的,并且不应被视为对本发明的范围进行限制。因此,本文描述的本发明设想了可能落入以下权利要求及其任何等效物的范围内的所有这种实施例。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献