掌桥专利:专业的专利平台
掌桥专利
首页

排序方法、装置、计算机设备和存储介质

文献发布时间:2024-04-18 20:00:25


排序方法、装置、计算机设备和存储介质

技术领域

本发明涉及机器学习领域,尤其涉及一种排序方法、装置、计算机设备和存储介质。

背景技术

通常模型的预测目标与业务指标总会存在一些差异。如果模型的预测目标越贴近业务目标,越能保证模型优化的同时业务指标也能够有相应的提升。反之则会出现模型离线指标提升,但线上关键业务指标提升不明显,甚至出现负向的问题。工业界大部分深度学习排序采用Pointwise的LogLoss作为损失函数,与搜索业务指标有较大的差异,体现如下两方面:

搜索业务常用的指标有QV_CTR或者SSR(Session Success Rate),更关心的是用户搜索的成功率(有没有发生点击行为);而Pointwise的LogLoss更多是关注单个Item的点击率。

搜索业务更关心排在页面头部结果的好坏,而Pointwise的方法则对于所有位置的样本一视同仁。

发明内容

有鉴于此,本申请提供一种以用于金融科技及其他业务领域的排序方法、装置、计算机设备和存储介质。

第一方面,一种排序方法,包括:

当接收到来自用户的查询关键字时,根据所述查询关键字,获取所有相关的查询对象;

获取各个查询对象的点击数据,将所述点击数据输入基于归一化折损累计增益训练得到的排序模型中;

所述排序模型根据所述点击数据计算所有查询对象的在各个位置的相关度,根据所述相关度计算所有查询对象排序的归一化折损累计增益,并根据所述归一化折损累计增益,对各个所述查询对象进行排序操作。

进一步的,所述排序模型的训练方法包括:

获取训练集;

计算所述训练集中各个数据对象的归一化折损累计增益;

从所述训练集中构建样本对,根据所述样本对和LambdaRank模型对所述折损收益进行优化得到梯度损失函数;

将所述梯度损失函数作为所述排序模型训练时的损失函数,对所述排序模型进行训练。

进一步的,所述计算所述训练集中各个数据对象的归一化折损累计增益,包括:

通过归一化折损累计增益表达式计算所述位置折损收益,所述归一化折损累计增益表达式为:

式中,NDCG@k为归一化折损累计增益,l为所述训练集,Z

进一步的,所述根据所述样本对和过LambdaRank模型对所述折损收益进行优化得到梯度损失函数,包括:

构建样本对相关性概率模型,根据所述相关性概率模型和交叉熵损失函数,构建所述梯度损失函数。

进一步的,所述梯度损失函数的表达式为:

式中,λ

进一步的,所述从所述训练集中构建样本对,包括:

将所述训练集中的数据对象分成有点击样本和无点击样本两种类别;

分别从所述有点击样本和所述无点击样本各选取一个数据对象,将所选择的两个数据对象组成样本对。

进一步的,所述根据所述归一化折损累计增益,对各个所述查询对象进行排序操作,包括:

所述排序模型根据各个所述查询对象的排序位置,得到当前排序归一化折损累计增益,根据所述归一化折损累计增益进行排序调整,直至所述归一化折损累计增益到达预设值,则完成排序操作。

第二方面,本申请提供一种排序装置,包括:

检索模块,用于当接收到来自用户的查询关键字时,根据所述查询关键字,获取一组相关的查询对象;

数据获取模块,用于获取各个查询对象的点击数据,将所述点击数据输入基于归一化折损累计增益训练得到的排序模型中;

排序模块,用于所述排序模型根据所述点击数据计算所有查询对象的在各个位置的相关度,根据所述相关度计算所有查询对象排序的归一化折损累计增益,并根据各个查询对象的归一化折损累计增益,对各个所述查询对象进行排序操作。

第三方面,本申请提供一种计算机设备,包括处理器和存储器,所述存储器存储有计算机程序,所述计算机程序在所述处理器上运行时执行所述的排序方法。

第四方面,本申请提供一种可读存储介质,其存储有计算机程序,所述计算机程序在处理器上运行时执行所述的排序方法。

本发明实施例公开了一种排序方法、装置、计算机设备及存储介质,所述方法包括:当接收到来自用户的查询关键字时,根据所述查询关键字,获取所有相关的查询对象;获取各个查询对象的点击数据,将所述点击数据输入基于归一化折损累计增益训练得到的排序模型中;所述排序模型根据所述点击数据计算所有查询对象的在各个位置的相关度,根据所述相关度计算所有查询对象排序的归一化折损累计增益,并根据所述归一化折损累计增益,对各个所述查询对象进行排序操作。提升了排序的准确性和相关性,相较于Base树模型和DNN模型,在业务指标上有了非常显著的提升。

附图说明

为了更清楚地说明本发明的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本发明的某些实施例,因此不应被看作是对本发明保护范围的限定。在各个附图中,类似的构成部分采用类似的编号。

图1示出了本申请实施例一种排序方法流程示意图;

图2示出了本申请实施例一种排序变化示意图;

图3示出了本申请实施例一种排序模型训练方法流程示意图;

图4示出了本申请实施例一种排序模块结构示意图。

具体实施方式

下面将结合本发明实施例中附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。

通常在此处附图中描述和示出的本发明实施例的组件可以以各种不同的配置来布置和设计。因此,以下对在附图中提供的本发明的实施例的详细描述并非旨在限制要求保护的本发明的范围,而是仅仅表示本发明的选定实施例。基于本发明的实施例,本领域技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本发明保护的范围。

在下文中,可在本发明的各种实施例中使用的术语“包括”、“具有”及其同源词仅意在表示特定特征、数字、步骤、操作、元件、组件或前述项的组合,并且不应被理解为首先排除一个或更多个其它特征、数字、步骤、操作、元件、组件或前述项的组合的存在或增加一个或更多个特征、数字、步骤、操作、元件、组件或前述项的组合的可能性。

此外,术语“第一”、“第二”、“第三”等仅用于区分描述,而不能理解为指示或暗示相对重要性。

除非另有限定,否则在这里使用的所有术语(包括技术术语和科学术语)具有与本发明的各种实施例所属领域普通技术人员通常理解的含义相同的含义。所述术语(诸如在一般使用的词典中限定的术语)将被解释为具有与在相关技术领域中的语境含义相同的含义并且将不被解释为具有理想化的含义或过于正式的含义,除非在本发明的各种实施例中被清楚地限定。

本申请的技术方案应用于检索排序的应用场景中,特别是一种和英航app相关的数据排序算法,具体而言,本申请通过基于归一化折损累计增益训练得到的排序模型,对初步检索的到的所有查询对象进行归一化折损累计增益的预测,再根据该预测结果进行排序,从而得到最佳的排序结果,使得和查询关键字相关性更高的内容会出现在更前面,增加排序结果的合理性。

接下来以具体实施例说明本申请的技术方案。

实施例1

如图1所示,本实施例的排序方法包括:

步骤S100,当接收到来自用户的查询关键字时,根据所述查询关键字,获取所有相关的查询对象;

本实施例的排序方法应用于用户在一些搜索场景下,对搜索结果的排序,例如用户在银行app中搜索理财两个字,银行app就需要给用户反馈和理财相关的内容,例如推送的新闻或者理财相关产品等。

根据关键字检索得到的所有内容都是查询对象,这些查询对象就会组成一个列表(Query)。此时该列表中的各个查询对象都是无序或者乱序状态,本实施例的排序方法就是在此基础上,对各个查询对象进行排序,使得相关的查询对象可以被排序到前位置,无关的则排序到后位。

步骤S200,获取各个查询对象的点击数据,将所述点击数据输入基于归一化折损累计增益训练得到的排序模型中。

本实施例中,使用基于归一化折损累计增益(NDCG)训练得到的排序模型来对该列表中的查询对象进行排序,主要是使得用户觉得相关的内容排序靠前,不相关或者无法判断的内容靠后,尽量使得用户可以快速的看到自己感兴趣的内容。

其中,查询对象所匹配的关键词会有多种,每个查询对象在不同关键词下面被点击的情况也有所不同,因此针对每个查询对象,都可以得到相应的点击数据,可以认为,点击越多的对象,和该关键字就越相关,就越应该排序在高位,因此可以根据点击数据来作为排序模型的输入。

步骤S300,所述排序模型根据所述点击数据计算所有查询对象的在各个位置的相关度,根据所述相关度计算所有查询对象排序的归一化折损累计增益,并根据所述归一化折损累计增益,对各个所述查询对象进行排序操作。

本实施例的排序模型会根据各个查询对象的点击数据,计算所有查询对象在各个位置的相关度,这里的位置指的就是排序位置,例如第一、第二等。

其中归一化折损累计增益可以用于表示一个排序的得分,分数越高则排序结果越相关。其中,上述的归一化折损累计增益主要是用于评估一个排序的分数,分数越高则排序结果越优,本实施例中的排序模型训练时就是基于归一化折损累计增益进行训练,所以可以作为一个直接预测归一化折损累计增益的模型,预测得到的归一化折损累计增益可以认为是当前查询结果中的最佳分数,因此根据预测得到的归一化折损累计增益来进行相应的排序。

例如经过步骤S100,得到了若干个查询结果,这些查询结果以乱序的方式作为一个列表被本实施例的排序模型读取,排序模型会在当前乱序排序的基础上,预测得到一个归一化折损累计增益,从而得到一个新的排序结果,然后再将该排序结果反向传播回排序模型,进行进一步的归一化折损累计增益计算,然后再得到一个新的排序结果,如此重复迭代下去,直至排序结果不变,则排序完成。

本实施例的排序模型是基于归一化折损累计增益的,为无量纲量,该值可用于评价任何不同查询关键词所形成的列表,训练模型时可以使用实际工作场景中的数据,也可以额外引入用户特征等数据,使得排序结果可以针对用户特性进行变化。

进一步的如图2所示,左侧的列表包含五个检索后得到的数据对象,其先后顺序组成了一个有顺序的列表,将其视为一次检索后得到的默认顺序,此时将该列表作为输入,训练模型根据这些数据对象和排序位置,可以得到一个归一化折损累计增益,表示该序列的排序得分,然后根据每个数据对象在当前位置的相关性,进行排序变化,进行这次排序操作后,就可能得到右侧的序列,其相较于左侧的序列,将数据对象2和数据对象3的位置进行了交换,从而得到了一个新的序列,该序列又可以作为新的数据,继续进行排序操作,直至排序结果收敛,得到最终的排序结果。

例如,在银行业务中,用户往往需要搜索其需要的业务,如贷款或者理财,就会输入这些关键字来查询银行会提供什么服务或者产品,银行的搜索系统首先根据关键字进行查询,确定一系列内部和关键词相关的内容,形成一个初始列表,该初始列表再输入到排序模型中,通过本实施例的排序模型针对列表中的每个查询结果进行排序,使得整个列表的归一化折损累计增益可以达到或者接近最大值。

本实施例中通过基于归一化折损累计增益的排序模型,使得排序模型可以通过预测一个无量纲量,来评估当前排序的相关性,并可以根据归一化折损累计增益来调整所查询出来的数据对象的排序情况,使得归一化折损累计增益最大,以完成整个排序操作,其中因为归一化折损累计增益相较于Log Loss等更贴近搜索排序业务,使得该排序模型的预测结果更加可靠。

其中,通过描述上述排序模型的训练方法可以更好的说明排序模型的工作原理。

实施例2

如图3所示,本实施例还提供一种排序模型的训练方法,包括:

步骤S400,获取训练集;

训练集为用于进行模型训练时的数据,可以是基于实际工作场景,由不同关键字查询得到的多组查询对象,本实施例对于排序模型的训练,都是按照每组查询对象计算损失,不同位置的样本也具有不同的权重。

步骤S500,计算所述训练集中各个数据对象的归一化折损累计增益;

通过归一化折损累计增益表达式计算所述位置折损收益,所述归一化折损累计增益表达式为:

式中,NDCG@k为归一化折损累计增益,l为所述训练集,Z

其中k可以等于整个列表中数据对象的数量,则上式的NDCG@k也可以直接被表示为NDCG。可以看出,NDCG最大值为1,即当NDCG为1时,该序列的排序结果是理论上最好的。

式子中,累加的部分为按照位置折损的收益(DCG),表示的时单个查询对象在位置j的相关度,通过累加后得到整个列表的相关度,然后除以理论上的最大值,得到整个列表的归一化折损累计增益。

归一化折损累计增益更贴近搜索业务,且可以应用于不同列表,对列表的排序合理性进行量化评估,适合作为排序模型的损失函数使用。

其中式两个函数G和η的表达式为

G(l

η(j)=1/log(j+1)。

归一化折损累计增益可以表示该列表的排序情况,当其为1时即为最佳排序结果。表示各个数据对象所在的序列位置都是最相关的位置。

步骤S600,从所述训练集中构建样本对,根据所述样本对和LambdaRank模型对所述折损收益进行优化得到梯度损失函数;

其中,上述的归一化折损累计增益为一个处处非平滑的函数,直接以它为目标函数进行优化是不可行的。为此,本实施例通过引入LambdaRank模型来优化上述的归一化折损累计增益,LambdaRank模型是通过Pairwise来构造的,通常将同Query下有点击样本和无点击样本构造成一个样本对。

本实施例中,构建的样本对时,通过将训练集的数据分为有点击样本和无点击样本,然后从这两种样本中分别挑选一个样本进行配对,就可以得到样本对,每个样本对都具有自己的模型得分以及与当前位置的相关度,亮相比较,可以得到其中一个样本相较另一个样本和位置更相关的概率。

即P

其中,P

在此基础上通过交叉熵就可以建立损失函数:

式中,λ

其中交叉损失函数的表达式为:

上述梯度损失可以表示任意两个数据对象之间关于当前位置的相关度,根据该梯度可以进行排序位置的调整。即i和j是否需要进行位置交换,其中这里的ij可以是相邻的两个数据对象,也可以是不相邻的数据对象。梯度损失越大,代表这两个数据对象和自身所在位置的相关度越低,越小则表示这两个数据对象当前所在的位置更相关。

通过梯度损失作为训练排序模型时的损失函数,可以通过梯度损失确定各个数据对象排序结果是否和当前位置相关,任意两个数据对象的排序情况是否需要互换,根据梯度损失以修改训练中排序模型的参数,来进行排序模型的训练。

步骤S700,将所述梯度损失函数作为所述排序模型训练时的损失函数,对所述排序模型进行训练。

最终,通过上述的梯度损失函数作为排序模型训练时的损失函数,可以使得排序模型直接和归一化折损累计增益挂钩。

例如,训练中采用深度网络预测同列表下的数据对象,得到各个数据对象的得分,然后根据用户实际点击数据对象的情况计算上述的梯度损失,然后将该梯度损失反向传播回深度网络,则可以得到一个直接预测NDCG的深度网络。

所以上述的排序模型通过损失函数进行梯度损失的回传迭代,使得模型预测的归一化折损累计增益收敛到一个可接受的区间内,就完成了排序模型的训练。该排序模型实际使用时,如实施例1中介绍的步骤一样进行排序操作。

同过本实施例中对排序模型训练方法的说明可知,通过LambdaRank模型来对归一化折损累计增益进行优化,得到梯度损失,根据梯度损失训练得到的排序模型是一个直接预测归一化折损累计增益的模型,可以根据当前的查询结果给出理论上最好排序的模型,并且其基于归一化折损累计增益得到的梯度损失,给排序操作指明了方向,使得排序操作具有可解释性,同时也使得该排序模型在实际运用时的效果远高于现有技术中的各种排序模型。

实施例3

本申请还提供一种排序装置,如图4所示,包括:

检索模块10,用于当接收到来自用户的查询关键字时,根据所述查询关键字,获取一组相关的查询对象;

数据获取模块20,用于获取各个查询对象的点击数据,将所述点击数据输入基于归一化折损累计增益训练得到的排序模型中;

排序模块30,用于所述排序模型根据所述点击数据计算所有查询对象的在各个位置的相关度,根据所述相关度计算所有查询对象排序的归一化折损累计增益,并根据各个查询对象的归一化折损累计增益,对各个所述查询对象进行排序操作。

本申请提供一种计算机设备,包括处理器和存储器,所述存储器存储有计算机程序,所述计算机程序在所述处理器上运行时执行所述的排序方法。

本申请提供一种可读存储介质,其存储有计算机程序,所述计算机程序在处理器上运行时执行所述的排序方法。

在本申请所提供的几个实施例中,应该理解到,所揭露的装置和方法,也可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,附图中的流程图和结构图显示了根据本发明的多个实施例的装置、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在作为替换的实现方式中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,结构图和/或流程图中的每个方框、以及结构图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。

另外,在本发明各个实施例中的各功能模块或单元可以集成在一起形成一个独立的部分,也可以是各个模块单独存在,也可以两个或更多个模块集成形成一个独立的部分。

所述功能如果以软件功能模块的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是智能手机、个人计算机、服务器、或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。

以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。

相关技术
  • 复合负极材料及其制备方法、锂离子二次电池负极极片和锂离子二次电池
  • 锂离子二次电池负极硅-碳材料及其制备方法、锂离子二次电池负极材料和锂离子二次电池
  • 负极集流体、负极极片、锂离子二次电池及制备方法
  • 一种二次锌基电池用纳米Zn@C负极材料及其制备方法
  • 一种锂离子电池用负极材料及其制备方法及锂离子电池
  • 一种锂离子二次电池负极活性材料及制备方法、锂离子二次电池负极极片和锂离子二次电池
  • 一种锂离子二次电池负极活性材料及制备方法、锂离子二次电池负极极片和锂离子二次电池
技术分类

06120116526725