一种基于listwise算法在线学习排序方法
技术领域
本发明涉及信息检索技术领域,具体涉及一种基于listwise算法在线学习排序方法,对当前查询关键字所对应的候选记录进行排序。
背景技术
在信息检索领域,给定一个查询关键字,搜索引擎会召回一系列相关候选记录,然后对这些召回的候选记录进行排序,最后将前n个候选记录输出。因此,如何对候选记录的有效排序是信息检索的一个核心问题。随着机器学习算法的快速发展,使用机器学习算法来获取精准的排序模型已经得到广泛的应用。迄今为止,已经存在的学习排序算法主要分为三个类别:pointwise、pairwise、listwise。
Pointwise算法利用机器学习算法预测当前查询关键字单个候选记录的排序值,简单的将排序问题归结为线性分类或者回归问题;pairwise算法是将候选记录对作为一个训练实例,并且将排序问题归结为从成对候选记录实例集合中学习分类或回归模型的任务。然而,pointwise算法和pairwise算法都不能够在训练过程中,直接通过最小化损失值获得精准的排序模型。因此,学术界提出了listwise算法解决这一问题,它是将候选记录的排序列表作为训练实例,并且通过最小化在预测列表和真实列表上定义的损失函数来优化排序模型。
虽然对上述三种学习排序算法已经进行了广泛研究,但是它们都面临着相似的挑战。在每一个时间步骤中,上述三种排序算法都不能利用在线获得的数据更新排序模型。因此,随着用于信息检索的数据量越来越多,算法有效性差的问题越来越明显。为了解决该问题,学术界提出了将在线学习算法应用到学习排序算法中。在线学习算法是一种很有效的机器学习算法,是指在训练排序模型时,数据以顺序的方式运行操作且仅被扫描一次,通过最小化整个预测序列的累计错误,使排序模型性能最优。迄今为止,在线学习算法只是应用到了pairwise算法中,下文用online-pairwise表示。该算法首先通过理论推导得出online-pairwise算法的损失值是(1-MAP)的上限值,然后利用在线获得的数据,使用随机梯度下降算法最小化损失函数,从而使性能评价指标MAP(mean average precision)最优,获得精准的排序模型。由于该算法在每一次更新排序模型时,是将候选记录对作为训练实例,所以迄今为止,还没有实现将候选记录的排序列表作为训练实例的在线学习排序算法。
在Learning to rank using multiple classification and gradientboosting中提出了基于pointwise的学习排序算法,将排序问题归结为多重分类和多重序数分类。首先通过理论推导证明DCG(discounted cumulative gain)能够受到分类错误的限定。然后,使用预测相关性将分类概率转换成排名分数,通过GBT(gradient boostingtree)算法来学习分类概率,从而实现完美的分类,使DCG达到最优值。
该已有技术的缺陷:该文献所提出的学习排序算法,一方面由于该算法在训练过程中并没有充分考虑到查询关键字所对应候选记录的内部依赖性,所以当不同的查询关键字对应不同数量的候选记录时,整体的损失值就会被候选记录数据量大的查询关键字所决定。另一方面由于该算法没有考虑到整个预测排序中候选记录的位置信息,从而可能会造成损失值由排在较后面的候选记录所决定。所以会造成排序性能相对较低。总的来说,基于pointwise的学习排序算法在上述三种排序算法中,性能相对较差。
在Optimizing search engines using clickthrough data.中提出了基于pairwise的学习排序算法,将候选记录对作为一个训练实例,然后将排序问题归结为从实例集合中学习分类。首先定义损失函数用来评估候选记录对的预测排序和真实排序之间的差异。然后通过理论推导证明NDCG(normalize discounted cumulative gain)和MAP(meanaverage precision)能受到损失函数的限定,因此可以通过SVM(支持向量机)的方法,实现二元分类,使损失函数能够达到最小值,从而实现MAP和NDCG最优。
该已有技术的缺陷:该文献所提出的学习排序算法,一方面由于在获取训练实例时,需要将查询关键字所对应的候选记录转换成候选记录对,那么在转换过程中可能会丢失一些更细颗粒度的特征信息,并且在转换过程中若是出现了一个候选记录对的标注错误则有可能造成连锁反应。另一方面该算法仅考虑了候选记录对的相对位置,没有考虑到整个预测排序中候选记录的位置信息。所以该算法的排序性能是优于pointwise,低于listwise的。
在ListWise approach to learning to rank:theory and algorithm.提出了基于listwise的学习排序算法,首先是将查询关键字对应的候选记录排序列表作为训练实例。然后定义损失函数用来评估预测列表和真实列表之间的差异,并且该损失函数能够限定NDCG(normalize discounted cumulative gain)和MAP(mean average precision)。最后便可以通过机器学习算法直接优化损失函数,从而使NDCG和MAP最优。
该已有技术的缺陷:该文献所提出的学习排序算法,虽然解决了查询关键字对应候选记录的位置信息问题,但是在计算损失值时,需要基于查询关键字所对应的候选记录排序列表来计算,并且不能够实时在线更新排序模型。所以在训练排序模型时,相比较于另外两种算法,算法复杂度相对较高。
在Online Learning to Rank for content-Based Image Retrieval中,将在线学习算法与pairwise算法相结合,用online-pairwise表示。首先通过理论推导得出online-pairwise算法的损失函数能够限定MAP和NDCG。然后利用OGD(online gradientdescent)算法最小化损失函数,从而使NDCG和MAP最优。这样的话,就可以在保证pairwise算法性能优势的前提下,提高算法的有效性。并且在性能表现上,是优于pointwise算法的。
该已有技术的缺陷:虽然Online-pairwise算法提高了算法有效性,但是在性能上,相比较于listwise算法,仍有较大性能差距。
在信息检索领域的众多学习排序算法中,都不能够利用在线获得的数据更新排序模型,所以随着用于信息检索的数据量越来越多,学习排序算法有效性差的问题越来越明显。同时,工业界还没有提出将查询关键字所对应的候选记录排序列表作为训练实例的在线学习排序算法。
发明内容
针对现有技术中存在的技术问题,本发明提供了一种基于listwise算法在线学习排序方法,在保证listwise算法性能的前提下,实现在线处理和提高算法的有效性。
一种基于listwise算法在线学习排序方法,首先使用listwise算法的思想,将查询关键字对应的候选记录排序列表作为训练实例;然后利用在线学习排序算法的训练过程,在应用训练实例时,训练实例按照顺序到达神经网络,并且仅被扫描一次;最后通过最小化损失值获取精准的排序模型;所述的训练过程具体如下:
1)初始化参数:ηt,ε,ωt;ηt其中为第t次迭代过程中的学习率;ε为容错率;ωt为第t次迭代过程中的权重系数;
2)输入Xt,yt;
3)计算▽τ(f;Xt,yt);
其中排序数据的特征值用X=[x1,x2,…,xn]∈Rdxn表示,Rdxn表示的就是d行n列的实数矩阵,Xt表示在第t次迭代过程中所用到的特征值,并且这些数据的标签值是Γ={l(1),l(2),…,l(n)},其中l(i)∈{r1,r2,…,rk}表示xi的标签值,r1,r2,…,rk表示所有的标签值;
y是关于X的排序列表,y(i)是在排序列表y中排在第i个位置的数据索引值;
其中τ(·)表示损失函数,f:λ→R是从数据特征到预测值的映射函数关系,f(x)=ωTx,是一个线性函数关系。
4)计算ωt+1:
ωt+1=ωt-ηt▽τ(f;Xt,yt) (2)
5)计算第t次迭代过程中的损失值Losst=τ(f;X,y),若Losst>ε,则执行步骤2);否则,输出ωt,其中:
进一步的,所述的排序列表满足对于任意的xi和xj,如果xi≥xj,则li≥lj也成立。
进一步的,所述的排序方法的损失函数是(1-MAP(f;X,y))的上限值,MAP(f;X,y)为排序评价指标,如下所示:
其中ni是标签值等于i的数量;当数据中给定的标签值K>2时,那么在计算MAP时,需要给定一个固定的常数k*,若候选记录的标签值大于k*,则认为是相关,反之,则认为不相关。
进一步的,所述的online-listwise算法的损失值是(1-MAP)的上限值通过以下方法所得:
采用如公式(2)所示的网络参数更新方法:
ωt+1=ωt-ηt▽τ(f;Xt,yt) (2)
其中ηt是在第t次迭代过程中的学习率,Xt,yt是第t次在线迭代过程中接受到的训练数据,并且▽τ(f;Xt,yt)的定义如公式(1)所示:
为了更好的展开理论证明,假设
符合G-Lipschitz连续,并且选择一个合适的超参数B使||▽τ
t(ω
t)||
2≤B,ω
*代表一个未知权重系数参量,可以得出:
然后根据τt(ω)函数的凸性可以得出:
τt(ω*)≥τt(ωt)+<▽τt(ωt),ω*-ωt> (6)
将公式(5)和(6)联立可以得出:
对公式(7)在t=1~T进行伸缩,得出以下公式:
其中第一个不等式是根据
和条件||▽τ
t(ω
t)||
2≤B得出,第二个不等式是根据
得出,让
因此便可以得出:
所以当T→∞时,上面的不等式便会近似于公式(10):
进一步的,所述的学习率为
其中选择一个合适的超参数D使||xi-xj||≤D,t是在线迭代的次数,G是符合G-Lipschitz连续的收敛参数。
本发明的有益效果:
(1)本发明将在线学习算法应用到listwise算法中,可以利用在线获得的数据对已有的排序模型进行更新,实现在线处理和提高算法的有效性。
(2)本发明通过理论推导得出online-listwise算法的损失值是排序评价指标MAP的上限值,为可以通过直接优化损失值获取更精准的排序模型提供了理论支持,保证了online-listwise算法在信息检索领域的可实施性和性能,消除online-listwise算法的损失值与性能评价指标之间的数据鸿沟。
(3)选择合适的机器学习算法最小化online-listwise算法的损失函数,通过使用基于online-listwise算法的自适应学习率更新排序模型,使排序模型更加精准和尽快收敛。
(4)本发明所提出的online-listwise算法可以在保证listwise算法性能的前提下,实现在线处理和提高算法有效性。
附图说明
图1为online-listwise算法流程图。
具体实施方式
下面结合说明书附图对本发明的技术方案作进一步说明。一种基于listwise算法在线学习排序方法,下文采用online-listwise表示。
图1展示了online-listwise算法实现流程图。
1、在线学习算法与listwise算法相结合
首先使用listwise算法的思想,将查询关键字对应的候选记录排序列表作为训练实例;然后利用在线学习排序算法的训练过程,在应用训练实例时,训练实例按照顺序到达神经网络,并且仅被扫描一次;最后通过最小化损失值获取精准的排序模型;所述的训练过程具体如下:
1)初始化参数:ηt,ε,ωt;其中ηt为第t次迭代过程中的学习率;∈为容错率;ωt为第t次迭代过程中的权重系数;
2)输入Xt,yt;
3)计算▽τ(f;Xt,yt);
其中排序数据的特征值用X=[x1,x2,…,xn]∈Rdxn表示,Rdxn表示的就是d行n列的实数矩阵,Xt表示在第t次迭代过程中所用到的特征值,并且这些数据的标签值是Γ={l(1),l(2),…,l(n)},其中l(i)∈{r1,r2,…,rk}表示xi的标签值,r1,r2,…,rk表示所有的标签值;y是关于X的排序列表,该排序列表必须满足:对于任意的xi和xj,如果xi≥xj,则li≥lj也成立,y(i)是在排序列表y中排在第i个位置的数据索引值;
4)计算ωt+1:
ωt+1=ωt-ηt▽τ(f;Xt,yt) (2)
5)计算第t次迭代过程中的损失值Losst=τ(f;X,y),若Losst>ε,则执行步骤2);否则,输出ωt,
其中τ(·)表示损失函数,f:λ→R是从数据特征到预测值的映射函数关系。在本发明中f(x)=ωTx,是一个线性函数关系。
将查询关键字对应的候选记录排序列表作为训练实例,然后使训练实例按照顺序到达神经网络并且仅被扫描一次,从而可以利用在线获得的数据更新排序模型,克服传统学习排序算法只有获得一批数据后更新排序模型的缺陷,提高算法的有效性。
2、确保online-listwise算法的性能
通过1确定了如何将在线学习算法与listwise算法相结合,提高了算法有效性,理论推导出online-listwise的损失函数是排序评价指标MAP的上限值。从而可以为通过直接优化损失函数获取精准的排序模型提供理论支持,确保online-listwise算法在实际应用中的性能。以下为具体的论证过程。
在listwise算法中,排序数据的特征值用X=[x1,x2,…,xn]∈Rdxn表示,并且这些数据的标签值是Γ={l(1),l(2),…,l(n)},其中l(i)∈{r1,r2,…,rk}表示xi的标签值,r1,r2,…,rk表示所有的标签值。假设y是关于X的排序列表,该排序列表必须满足:对于任意的xi和xj,如果xi≥xj,则li≥lj也成立。y(i)是在排序列表y中排在第i个位置的数据索引值。listwise算法的损失函数定义如公式(3)所示:
其中τ(·)表示损失函数,f:λ→R是从数据特征到预测值的映射函数关系。在本发明中f(x)=ωTx,是一个线性函数关系。所以在下文的公式推导中,用τ(ω;X,y)替代τ(f;X,y)。
公式(3)中的损失函数是(1-MAP(f;X,y))的上限值,如公式(4)所示:
其中ni是标签值等于i的数量。当数据中给定的标签值K>2时,那么在计算MAP时,需要给定一个固定的常数k*,若候选记录的标签值大于k*,则认为是相关,反之,则认为不相关。因此便可以利用上文得出的结论证明online-listwise算法的损失值同样是(1-MAP)的上限值,从而可以通过直接最小化损失值获取更精准的排序模型。
为了得出online-listwise算法的损失值是(1-MAP)的上限值,本发明首先采用如公式(2)所示的网络参数更新方法:
ωt+1=ωt-ηt▽τ(f;Xt,yt) (2)
其中ηt是在第t次迭代过程中的学习率,Xt,yt是第t次在线迭代过程中接受到的训练数据,并且▽τ(f;Xt,yt)的定义如公式(1)所示:
为了更好的展开理论证明,假设
符合G-Lipschitz连续,为了便于推导后面的公式,设ω
*代表一个未知权重系数参量,并且选择一个合适的超参数B使||▽τ
t(ω
t)||
2≤B,可以得出:
然后根据τt(ω)函数的凸性可以得出:
τt(ω*)≥τt(ωt)+<▽τt(ωt),ω*-ωt> (6)
将公式(5)和(6)联立可以得出:
对公式(7)在t=1~T进行伸缩,得出以下公式:
其中第一个不等式是根据
和条件||▽τ
t(ω
t)||
2≤B得出,第二个不等式是根据
得出。让
因此便可以得出:
所以当T→∞时,上面的不等式便会近似于公式(10):
通过(2)的理论推导过程,既解决了如何优化online-listwise算法的问题,也确保online-listwise算法在信息检索领域的性能。
为了保证online-listwise算法的可实施性经过理论推导证明online-listwise算法的损失值是排序评价指标MAP的上限值,从而可以直接通过最小化损失值,使性能评价指标MAP最优,获取精准的排序模型。
3、最小化损失函数的方法
传统的学习排序算法,是在获得一批训练数据后,利用随机梯度下降算法更新网络参数,其中学习率是保持不变的。由于在线学习排序算法,是利用在线获得的数据即时处理,更新排序模型,两者的训练过程完全不一样,所以为了解决将基于传统学习排序算法的学习率,直接应用到在线学习排序算法中,导致排序模型精准度低和收敛过慢的问题,本发明提出了基于online-listwise算法自适应学习率ηt如公式(11)所示:
其中选择一个合适的超参数D使||xi-xj||≤D,t是在线迭代的次数,G是符合G-Lipschitz连续的收敛参数。因此通过使用基于online-listwise算法的自适应学习率和公式(2)更新网络参数,使排序模型更加精准和尽快收敛。
当利用在线获得的数据更新排序模型时,为每一次更新排序模型确定自适应学习率,实现排序模型尽快收敛。通过确定基于online-listwise算法的自适应学习率,解决将基于传统学习排序算法的学习率,直接应用到在线学习排序算法中,导致排序模型精准度低和收敛过慢的问题。
该算法是将整个候选记录的排序列表作为训练实例,利用在线获得的数据更新排序模型。总的来说本发明的贡献主要如下:首先,本发明将在线学习算法与学习排序算法相结合,然后通过理论推导得出online-listwise算法的损失值是(1-MAP)的上限值,最后选择随机梯度下降算法最小化损失值,使MAP最优。同时为了在训练排序模型时,能够实现尽快收敛,本发明通过理论推导得出基于online-listwise算法的自适应学习率。该算法可以在保证listwise算法性能的前提下,实现在线处理和提高算法的有效性。