引入激活加权策略的分组排序学习方法
2022-07-21李玉轩洪学海唐正正
李玉轩,洪学海,汪 洋,唐正正,2,班 艳
1.中国科学院 计算机网络信息中心,北京100190
2.中国科学院大学,北京100049
3.中国科学院 计算技术研究所,北京100190
随着信息量级的增长,如何获取更符合检索目的的高质量信息,已成为信息检索(information retrieval,IR)领域中的重要课题。排序学习(learning to rank,LtR)则用于在搜索过程中,对召回的候选文档列表进行精确排序。由于其效果显著,排序学习方法已逐渐应用到实际的搜索场景当中。其任务是对于给定的查询,对一系列文档进行相关度打分,进而按分数高低给出排序后的列表,这意味着相关度越高,文档的排名应越靠前。不同于其他的分类和回归问题,排序学习并不关注文档的具体评分,而更加关注个体之间的相对顺序。
排序学习算法通常以查询信息和文档的向量化特征作为输入,通过监督学习的方法,最优化目标函数,得到将特征向量映射到实值的评分函数,并以此作为排序依据。按输入或按损失函数的不同形式可以将排序学习分为单文档法(pointwise)、文档对法(pairwise)和文档列表法(listwise)。新提出的序列文档法、分组评分法(groupwise scoring function,GSF)等都属于这三种方法的变种。
现存大部分的排序学习方法虽然有效,但往往局限于单变量的评分函数,即列表中文档的相关性计算相互独立,缺乏考虑文档之间的相互影响。而用户在与检索结果的交互过程中,会表现出强的对比选择倾向。相关研究工作已证明通过对比文档得出的偏好判断比直接判断更有效,当用户行为被一种相对的方式建模时,模型有更好的预测能力。因此,列表中文档的相关性排序位置除取决于本身因素之外,还受其上下文特征的影响。Ai等人基于上述论点,认为文档的相关性得分通过与列表中其他项在特征级别上联合计算,提出了多元变量的相关度评分模型GSF,即将文档进行分组,组内文档的特征向量共同作用,并利用深度神经网络(deep neural network,DNN)自动挖掘跨文档信息。但是不足之处在于当分组较大时,模型复杂度和计算量大大增加,导致该方法在对于时效性要求较高的搜索推荐场景中缺乏吸引力。其次,GSF的分组操作对于组内的每个文档同等对待,忽略了文档间相互影响的差异性。举例来讲,用户在对比返回结果时,更多的是对同类型文档的择优,而差异较大但又同时与查询信息相关的文档间交叉影响较小。换句话说,不同文档对单个样本的相关度评价影响是不同的。基于这样的推断假设,同时也启发于推荐领域的深度兴趣网络,本文在GSF 中引入激活单元对多元变量进行加权,并用神经网络自适应学习权重,文中表示为W-GSF(weighted-GSF)。通过在公共基准的排序学习数据集上的对比实验,证明该方法相对于基线模型有更好的效果。同时,对于达到同样水准的排序学习方法,本文模型在计算代价上优势明显。
1 相关工作
1.1 排序学习
排序学习方法用于推断给定列表的排名顺序,包含评分和排序两个过程,其目标是构造一个评分函数,通过该函数可以归纳出文档列表的排序。该领域内的大部分研究可以从两方面进行分类:评分函数和损失函数的构造。不同的评分函数即不同的模型结构,包括线性模型、梯度提升树、支持向量机和神经网络等;损失函数的构造针对定义问题的形式和解决问题的思路,例如单文档法、文档对法和文档列表法。
单文档方法将单篇文档的特征向量映射为得分;文档对法则关注在给定两个文档时判断相对顺序;文档列表法则将单次查询对应的整个文档列表作为整体输入来训练,可以直接优化核心排序指标,如NDCG(normalized discounted cumulative gain)等。近几年,得益于深度学习的长足发展,深度排序模型层出不穷。许多研究已经表明,单文档的方法缺乏考虑文档之间的相互关系,对于相关性评价的建模不够完善。文档对方法以LambdaMART为代表,巧妙地转化文档位置顺序关系为概率模型,使之可以直接利用机器学习模型进行学习。文档列表法对于相关性建模更加全面,但是往往计算复杂度高,且具有完整排序信息的数据较难获取,实际应用中落地场景较少。
1.2 GSF简介
排序学习领域最近提出的多元变量评分模型GSF是一种通过将文档进行分组,学习交叉文档关系的深度排序模型,不同于文档对法和文档列表法专注于损失函数的构造,GSF是一种对模型结构提出改进的新方法。
图1 给出了GSF 的模型示意图。示例样本为含有三个文档的列表,分组大小为2,分组策略给出了文档列表所有可能的二元组。作为输入,分组内的文档特征向量会做拼接操作成为单个向量,每个分组产生的向量分别输入多层前馈神经网络,前向计算后输出对应的文档评分。其过程相对于传统的单元变量评分函数,简而言之就是将(·)从单文档映射到单实数,改进为多文档映射到多实数。由于一个文档会出现在多个分组之中,故在经过(·)输出各分组评分之后,需要将多次评分结果累和,作为最终输出的相关度评分。分组策略保证公平性,各个文档出现次数相同,故不会影响最终评价的相对顺序。
图1 基本的GSF模型结构(以只含有三个文档的列表为例)Fig. 1 Structure of basic GSF model,with a sample which only has three documents
1.3 深度兴趣网络
深度兴趣网络(deep interest network,DIN)用于解决推荐系统领域的点击率预估问题。传统点击率预估模型以Embedding+DNN结构为基础,对于用户的历史行为数据不加区分地向量化,这导致在判断不同的候选商品时,用户向量的表示相同,限制了模型的表达能力。
为了增加模型的表达能力,DIN认为历史的行为序列中不同商品对于判断候选商品的点击率影响存在差异,故在传统点击率预估模型的基础上,加入了激活单元,可以根据候选商品对历史兴趣中的商品赋予不同权重,使得模型在对用户向量化表达的过程中,能根据候选商品的变化自适应地调整。这实际上是一种与注意力机制相似的思想。排序学习的很多方法已经应用到了各种推荐场景中,本文尝试将此推荐模型的思想用于改进排序学习模型。
2 排序学习公式化定义
本章将对排序学习问题进行公式化定义,与领域内常用的表示形式保持一致性。排序学习中,训练集可以表示为={,}∈X×R,其中是一个由个元素x,1 ≤≤组成的向量,为含有个实数的标签向量,其元素y代表对应位置的x的真实相关度,为特征取值空间。在主流的数据集上以及实际的场景下,x通常表示一条查询信息和对应单个文档的组合特征向量,即数据集的单条样本包含了一条查询信息及一个带相关度标签的文档列表。
排序学习的主要目标是利用这样的数据集,学习一个评分函数,该评分函数可以将任意的x映射到实值,并且可以在训练集上最小化经验性的损失函数。即找到:X→R,最小化:
其中,ℓ 是待定义的损失函数。
上述框架为排序学习方法的通用形式,各种排序学习算法差别主要在于评分函数的构造和损失函数的定义。之前的很多研究中使用了不同形式的损失函数,但现存大部分的算法在评价相关度时局限于单元变量的评分函数:→R,即()的各个维度是对文档x独立计算得到的。最近提出的分组文档法将文档列表进行分组,并对分组内的文档联合评分,即:X→R,其中为分组大小,该方法隶属多元评分函数的范畴。本文的评分函数以GSF为基础,同时在训练时会引入激活单元以调整各个不同文档的权重,用于体现交叉影响的差异性,则最小化的目标函数表示为:
实际的计算过程中,单个训练样本的损失函数是先分组后求和计算。下一章中将详细介绍如何利用模型来最小化该目标函数。同时为了表述简洁,后续章节将使用GSF-表示分组大小为的分组文档法,W-GSF 则表示本文提出的引入了激活加权机制的分组文档法。
3 W-GSF排序学习模型
模型以GSF结构为基础,其改进自文献[17]的上下文列表文档法,用分组的形式挖掘文档之间的相互影响并用于协同评分。图1 给出了GSF 的简单示例,神经网络(·)将所有分组分别作为输入,输出对应的初步评分,再按照相应文档进行求和得到各自的最终得分。但如果在训练过程中,输入样本分组集合中的全部元素,即所有可能的分组情况,其时间复杂度会非常高。故考虑对分组集合作下采样,沿用GSF 中的方法将随机打散后,用固定大小的滑动窗口取其所有连续子序列。该采样方法保证了每个文档出现在个分组中,降低了时间复杂度,且实践证明其效果近似输入整个分组集合。
3.1 引入激活单元
文档的相关性应当取决于其本身的特征和列表内的样本分布情况。举个简单的例子,当用户在搜索关键字“卷积神经网络”时,如果返回的结果都是较近的,则用户关注点会集中于最新的研究成果;而如果返回结果都是经典的文献,则被引量或作者知名度等可能会成为影响用户选择的侧重点。采用分组文档的方法时,应当考虑到其他文档对于某个文档评分的影响,且不同文档带来的影响也是不同的。考虑在上述的搜索示例中,如果返回结果是两种情况的混合,则用户可能会对两种情况同时判断:在较新的文档选择创新性高的,在经典文档中选择更权威的。这就涉及到在评分函数建模时,对文档重要性的挖掘。
受启发于深度兴趣网络,本文引入激活单元来对GSF 作出上述改进。如图2(a),激活单元以一个文档对的特征向量为原始输入,分别为主要文档和次要文档,其输出为单个实值,用于在评价文档的相关性时对次要文档进行加权。除了两个文档的特征向量,输入还包含了两个特征向量的差值,三个部分拼接为整体输入后续的全连接神经网络。由于实际情况中特征数据值的分布并不固定,如果采用如PReLU的激活函数时,由于分裂点固定在了零点,会增加拟合样本的难度。为了解决该问题,这里的激活函数沿用了Dice:
这里是待激活的值,(·)可以看作(·)的控制函数,即用来决定选择()=和()=两个不同频道的函数。[]和Var[]是每个小批量输入数据的均值和方差。是一个小的定值,在此设置为10。此时,激活单元的激活过程可以表示为:
3.2 W-GSF的模型结构
实际场景中文档特征通常高维且稀疏,对比基于树的排序学习方法,深度神经网络在稀疏高维的数据集上可以表现出更好的拟合效果,故本文采用神经网络作为主体结构。排序学习的数据形式为一条查询对应一个文档列表。作为基本模型的输入,首先需要对文档列表进行分组,单条样本的第个分组为:
其中,为分组的大小,即将组内文档的特征向量作拼接操作。如图2所示,网络的主体结构为包含三个隐藏层的多层前馈神经网络,原始输入在进入该神经网络之前,会通过激活单元对输入向量进行部分激活加权,将其转变为:
图2 W-GSF与激活单元的结构Fig. 2 Structure of W-GSF and activation unit
其中,为次要文档的激活值。每个隐藏层含有两个待学习参数w和b,分别表示第层的权值矩阵和偏置向量,则第层网络的输出为:
其中,是非线性的激活函数,这里使用的是整流线性单元ReLU:()=max(,0)。基于此,主体结构网络的输出可以表示为如下形式:
其中,w和b为输出层的权值矩阵和偏置。输出结果为维的向量,代表的是在当前分组下文档的相关度得分。
由于每个文档会出现在多个分组之中,文档最终的相关度得分来源于所有包含该文档的分组对应的输出。不妨令Π()为样本的所有大小为的分组组成的集合,π为其中一个元素,当文档x属于π时,该文档得分有一部分来自于(π)。便于表示,首先定义一个符号函数:则W-GSF对文档x的输出为:
3.3 损失函数
在使用反向传播方法训练前述网络结构前,需要定义损失函数。即定义式(1)中的(·)。在W-GSF的网络框架下同样可以使用多种损失函数。在实验中发现Softmax 交叉熵损失函数在该模型下会比较有效,其形式为:
其中,为样本的真实标签,^ 为模型的输出值。上式相当于原始的标签值进行了归一化,可以将归一化值看作文档排名更高的概率,其中p为模型输出的归一化:
该操作的目的是去除标签的实际值大小带来的偏差影响,在将文档得分转化为一个较小的值的同时,保持相对排名顺序不变。实验中使用小批量梯度下降法AdaGrad来优化该损失函数。
4 实验分析与结果
4.1 数据集
实验中采用的数据集为微软MSLR-Web30K以及它的随机采样版本MSLR-Web10K,分别含有30 000条和10 000条查询。数据集由查询和一系列的文档特征向量组成,每一行代表一个查询-文档对,并给出了相关度评价的标签。相关度从0(不相关)到5(完全相关)代表从低到高的相关程度,由微软搜索引擎Bing的日志数据统计解析而出。在训练中丢弃了没有相关文档的查询项。每一条查询样本为136 维的特征向量,包含了查询信息、文档特征以及交互特征,形式上既有离散的分类特征,也有连续的例如BM25等稠密特征,代表了研究领域内常用的基本特征。该数据集被划分成5 个子集{,,,,,按照不同的训练集、验证集和测试集划分情况形成了5个不同的文件夹,其划分占比为3:1:1。因此不同的文件夹数据相同只是分配的子集不同,不失一般性,在实验中使用的划分为{(,,),(),()}。
4.2 排序学习方法与评价指标
在上述数据集上,实验对比了本文提出的模型和各种现有的排序学习方法,包括基于支持向量机、梯度提升树和基于深度神经网络的多种方法。RankingSVM作为经典方法参考,LambdaMART作为树模型方法的对比,RankNet和GSF作为神经网络方法的参考基线,详细信息如表1所列。
表1 基线排序学习方法Table 1 Baseline learning-to-rank models
实验中RankingSVM 目标函数的正则化系数设置为20.0,并使用径向基核函数。LambdaMART 基于LightGBM实现,训练了500棵回归树,每棵树的最多叶子节点为255,其他的参数设置与文献[7]保持一致。该模型在很多排序学习公开数据集上都是表现最优秀的算法之一,此处作为参考以比较不同类型的排序学习方法之间的差异。RankNet 和GSF 均基于神经网络,实现时利用了广泛使用深度学习库TensorFlow。RankNet是一个多层的前向全连接神经网络,是文档对方法的基本模型,在本文中该方法和GSF使用了相同的隐藏层参数设置,均为三层(64,32,16)全连接深度神经网络,并在每层使用了批量归一化,激活函数为整流线型单元。除了二者的输入形式差异,使用的损失函数也有所不同:RankNet 使用了在排序学习领域的经典逻辑斯蒂损失函数,而GSF使用的是Softmax交叉熵。实验中这三种模型的超参在沿用原文设置的基础上,进行了优化微调。
对于本文提出的W-GSF 模型,其主体结构与GSF一致,额外增加了激活单元对文档调整加权。激活单元含有一层尺寸为(16)的隐藏层,输出单个实值权重。值得一提的是,激活过程为两两文档的交互,因此其天然地适合分组大小为2 的情况,而对于大分组的GSF,简单的依次激活加权会使得文档之间的交叉影响变得混乱。另外由于本身GSF 方法中大尺寸的分组会使得训练复杂度较高,而加入激活单元后大分组带来的计算代价增长倍率更高。故实验中W-GSF 仅关注两两文档之间的交叉关系,使其加权操作简洁合理且增加的计算量在可接受范围内,并期望带来排序指标上的提升。W-GSF 在实验中小批量训练的批量大小设置为128,模型学习率为0.01。
实验在Web30K和Web10K两个数据集上分别训练了上述五种模型。评价指标使用了排序推荐场景中常用的指标NDCG,即归一化折损累计增益。该指标的优点在于可以对变长的排序列表给出有意义的评价,同时可以保证当高相关度的文档排在整个列表中靠前的位置时,排序列表的得分较高。
4.3 结果对比分析
模型训练时使用小批量的梯度下降法来优化损失函数,由于每个查询包含的文档数量及相关度的分布并不一致,故在GSF 和W-GSF 中计算整体损失之前会对小批量样本去偏,即对分组损失值按照其关联的所有文档相关度总和进行加权。在MSLR 的两个数据集上,不同的模型效果如表2所示。给出的指标均为在对应数据上的测试集结果,除LambdaMART 外,指标由训练过程中在验证集上NDCG@5 指标达到最高时的模型计算得出,数据展示的是10次实验的均值,置信区间为95%。
表2 给出了GSF 分别在分组大小为2 和64 时的模型效果,且实验中经过调参优化,相对于原文中报告的结果,一定程度提升了在MSLR数据集上的表现。从表中可以看出,本文模型指标远超经典算法RankingSVM 以及神经网络排序模型RankNet。WGSF 在Web30K 数据集上的实验表明,在NDCG@5处相对于该两种模型分别提升了9.7个百分点和2.65个百分点,在Web10K上该指标的提升分别为7.79个百分点和1.76个百分点。
表2 MSLR数据集上模型的NDCG指标对比Table 2 Comparison of models'test NDCG on MSLR dataset %
W-GSF 本质是经GSF-2 的模型结构改进而来,故在对比指标时更关注其与GSF-2 的关系。从表中注意到相对于GSF-2 模型,增加了激活单元的WGSF在NDCG指标上同样全面提升,在Web10K数据集上,W-GSF 分别在NDCG@1,5 处提升了0.73 个百分点和0.39个百分点,对于Web30K数据集则分别在NDCG@1,5 处提升了1.04 个百分点和1.08 个百分点。另外对比GSF-64可以看出,虽然W-GSF在最前端的排序结果稍差,但在NDCG@10 处表现更好,即在评价的头部序列拉长时整体的排序效果占优势。而由于GSF-64 的高指标表现计算代价很大,相对而言本文的模型在计算效率上更有优势。
除此之外可以发现,LambdaMART 作为基于树的方法在实验中表现较好,其主要原因是MSLR数据集大部分的特征为稠密连续特征,离散的稀疏类别特征较少,这也是公开排序学习数据集的普遍现象。而提升树恰好擅长处理该类特征,相对的,神经网络模型可以更好地处理稀疏特征向量。这一结论由此前大量的相关工作给出,即使其基于神经网络的排序方法在MSLR数据集上的表现不如LambdaMART,但是在业务场景下,数据集往往远比MSLR大很多且特征维度更高,当这种高维稀疏特征用于树模型时会产生过拟合的情况,降低了模型的泛化能力,而神经网络模型由于通常会带有正则化防止过拟合,故在最终指标上的表现往往呈现相反的趋势。
4.4 模型效率对比
通过挖掘文档之间的相互影响来提升排序指标本身是一件是十分耗费计算量的事情,当在GSF 中试图同时挖掘较多文档的交叉关系时,扩大分组尺寸带来的收益与增加的计算量不成正比,综合性价比不高,尤其是在搜索这种对响应时间要求较高的场景下。
为了对比模型之间的性价比,除了使用NDCG@10 作为效果提升的指标外,将FLOPs 作为衡量WGSF、GSF-2 和GSF-64 的计算代价指标。FLOPs 代表模型的理论浮点运算量,其大小不仅和模型的输入形式有关,还和模型结构有关。对比运算量时,不关心训练过程,而只关注对于同样的一条样本,不同模型经过一次前向计算给出相关度评分所需要的浮点计算次数,加法和乘法各算一次。对于全连接层,其FLOPs大小为:
=(2×-1)×(14)其中,和分别代表输入输出的维度,若考虑偏置则不需要减1。同时计算时忽略了激活函数的影响。
根据式(14),计算了如图1 不同分组和图2 所示的共三种模型的计算量FLOPs,并在表3 给出结果。计算条件为在同样的一条由查询和文档列表组成的样本下,不同模型运行一次所消耗的浮点计算量,并假设该样本含有100个文档。以GSF-2作为基准线,Δ NDCG@10为相对基准线的提升百分比,Δ FLOPs为相对基准线的倍率。
表3 W-GSF与GSF在MSLR-Web30K上的计算量对比Table 3 Comparison of calculational cost of W-GSF and GSF on MSLR-Web30K
从表3可以看出,GSF-64对于同样的样本,消耗的浮点计算量是GSF-2 的28 倍以上,而W-GSF 在排序指标达到了相同水准的情况下,相对基准线只增加了约30%的计算量。总体而言,本文模型在改进GSF-2时,以增加少量的计算量带来了可观的效果提升,相对于GSF-64 性价比更高。该计算量上的优势使得其在众多业务场景中有比大分组GSF更多的应用空间。
5 结束语
本文将推荐领域里深度兴趣网络的思路迁移到排序学习中,结合GSF 分组文档法的思想提出了带有激活加权策略的W-GSF,通过学习不同文档之间的差异性影响对交叉文档关系有了更深层次的挖掘。在公开数据集的一系列实验证明了其在指标上带来的提升,同时相对原模型只增加了较少的计算量,相比大分组尺寸的GSF方法,本文模型更有性价比。但该方法仍然有不足之处,对于大分组的方法,激活加权的过程无法自然地推广拓展,文档之间的交叉影响差异性会使得这一过程变得混乱,单个文档的最终激活值难以界定。一种可能的解决方法是将单个文档与分组内其他所有文档交叉,最终权重为各激活权重之和,但这样会带来计算量上的大幅增加。另一种方法是将评分函数再改回单元变量的形式,只是在评价一个文档的相关度评分时,将同列表内的其他文档作加权求和后作为辅助特征帮助评分。除此之外,对于主体神经网络结构的纵向加深和横向尺寸扩展也是进一步改进该方法的可行路径。将上述几种思路作为未来的进一步工作方向。