You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

84 lines
9.9 KiB
Markdown

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

# 036 | 机器学习排序算法:列表法排序学习
本周我们已经分别讨论了最基本的单点法排序学习Pointwise Learning to Rank和配对法排序学习Pairwise Learning to Rank两种思路。单点法排序学习思路简单实用目的就是把经典的信息检索问题转化成机器学习问题。配对法排序学习则是把排序的问题转化成针对某个查询关键字每两个文档之间的相对相关性的建模问题。不过这两种思路也都有很明显的问题需要进一步对算法进行优化以实现我们需要的最终目标。
今天我就来讲直接优化排序问题的“终极方法”列表法排序学习Listwise Learning to Rank 。相对于尝试学习每一个样本是否相关或者两个文档的相对比较关系列表法排序学习的基本思路是尝试直接优化像NDCGNormalized Discounted Cumulative Gain这样的指标从而能够学习到最佳排序结果。
## 列表法排序学习的历史
2000年后学术界和工业界都开始研究如何用机器学习来解决最优排序问题五六年之后研究者们才开始尝试直接优化整个排序列表。
这方面的研究工作很多都来自微软研究院。比如2007年左右的AdaRank就来自微软亚洲研究院的徐君和李航。这篇论文算是较早提出列表法排序观点的研究工作。同一年在国际机器学习大会ICML 2007International Conference on Machine Learning上发表的ListNet算是从理论上开启了列表法的大门。这篇论文也来自微软亚洲研究院是刘铁岩等人的重要工作。类似的研究工作在这一年里如雨后春笋般涌现。
另外一个方向接下来我会提到LambdaRank出现稍早而LambdaMART则稍微晚一点。这方面的工作是在微软西雅图的研究院开发的。主导人是克里斯托弗·博格斯Christopher J.C. Burges。博格斯2016年退休在微软工作了16年可以说他领导的团队发明了微软的搜索引擎Bing的算法。
## 列表法排序学习详解
列表法排序学习有两种基本思路。**第一种就是直接针对NDCG这样的指标进行优化**。目的简单明了,用什么做衡量标准,就优化什么目标。**第二种,则是根据一个已经知道的最优排序,尝试重建这个顺序,然后来衡量这中间的差异**。
我先来说一下第一大思路直接针对NDCG这样的指标进行优化。
首先重温一下排序测试集的测试原理。总体来说所有的基于排序的指标都要考察测试集上对于某一个查询关键字来说某一组文档所组成的排序是否是最优的。有两种比较通用的做法。第一个方法主要适用于二分的相关信息对于某一个查询关键字针对排序产生的“顶部的K”个文档进行评估查看精度Precision、召回Recall等。第二种方法利用五级相关信息定义在这样的情况下就可以利用类似于NDCG这样的评价指标。具体解读你可以回到本周前面两期我们讲解过的内容进行复习。
那么,**直接优化排序指标的难点和核心在什么地方呢?**
难点在于希望能够优化NDCG指标这样的“理想”很美好但是现实却很残酷。NDCG以及我之前说过的基于“顶部的K”的精度都是在数学的形式上的“非连续”Non-Continuous 和“非可微分”Non-Differentiable。而绝大多数的优化算法都是基于“连续”Continuous )和“可微分” Differentiable函数的。因此直接优化难度比较大。
针对这种情况,主要有这么几种方法。
**第一种方法是既然直接优化有难度那就找一个近似NDCG的另外一种指标**。而这种替代的指标是“连续”和“可微分”的 。只要我们建立这个替代指标和NDCG之间的近似关系那么就能够通过优化这个替代指标达到逼近优化NDCG的目的。这类的代表性算法的有SoftRank和AppRank。
**第二种方法是尝试从数学的形式上写出一个NDCG等指标的“边界”**Bound然后优化这个边界。比如如果推导出一个上界那就可以通过最小化这个上界来优化NDCG。这类的代表性算法有SVM-MAP和SVM-NDCG。
**第三种方法则是希望从优化算法上下手看是否能够设计出复杂的优化算法来达到优化NDCG等指标的目的**。对于这类算法来说算法要求的目标函数可以是“非连续”和“非可微分”的。这类的代表性算法有AdaRank和RankGP。
说完了第一大思路后,我们再来看看第二大思路。这种思路的主要假设是,已经知道了针对某个搜索关键字的完美排序,那么怎么通过学习算法来逼近这个完美排序。**我们希望缩小预测排序和完美排序之间的差距**。值得注意的是在这种思路的讨论中优化NDCG等排序的指标并不是主要目的。这里面的代表有ListNet 和ListMLE。
讲了这两大思路以后,最后我再来提一下第三类思路。**这类思路的特点是在纯列表法和配对法之间寻求一种中间解法**。具体来说这类思路的核心思想是从NDCG等指标中受到启发设计出一种替代的目标函数。这一步还和我刚才介绍的第一大思路中的第一个方向有异曲同工之妙都是希望能够找到替代品。
这第三类思路更进一步的则是**找到替代品以后,把直接优化列表的想法退化成优化某种配对**。这第二步就更进一步简化了问题。这个方向的代表方法就是微软发明的LambdaRank以及后来的LambdaMART。微软发明的这个系列算法成了微软的搜索引擎Bing的核心算法之一。
我这里简单提一下LambdaRank这个系列模型的基本思想。
首先,微软的学者们注意到,一个排序算法是否达到最优的情况,简单来看,就是查看当前的排序中,相比于最优的情况,有哪些两两文档的关系搞错了。**学习最优排序的问题就被转化成了减小这些两两排错的关系**。更进一步在设计这个优化过程中我们其实并不需要知道真正的目标函数的形式而仅仅需要某种形式的梯度Gradient
这里有这样一个洞察对于绝大多数的优化过程来说目标函数很多时候仅仅是为了推导梯度而存在的。而如果我们直接就得到了梯度那自然就不需要目标函数了。最后通过实验微软的学者们把这个NDCG通过梯度变化的差值再乘以这个梯度这样就达到了增强效果的目的。
早期的LambdaRank特别是RankNet是采用了神经网络来进行模型训练而LambdaMART则采用了“集成决策树”的思想更换到了基于决策树的方法。**后来实践证明,基于决策树的方法对于排序问题非常有效果,也就成了很多类似方法的标准配置**。
最后,有一点需要你注意,我们讨论了不同的列表法思路,列表法从理论上和研究情况来看,都是比较理想的排序学习方法。因为列表法尝试统一排序学习的测试指标和学习目标。尽管在学术研究中,纯列表法表现优异,但是**在实际中类似于LambdaRank这类思路也就是基于配对法和列表法之间的混合方法更受欢迎**。因为从总体上看,列表法的运算复杂度都比较高,而在工业级的实际应用中,真正的优势并不是特别大,因此列表法的主要贡献目前还多是学术价值。
## 小结
今天我为你讲了列表法排序学习。你可以看到列表法排序有很多种思路在2000年到2010年之间是一个非常活跃的研究领域积累了大量的成果。
一起来回顾下要点:第一,简要介绍了列表法排序学习的历史。第二,详细介绍了列表法排序学习的三大思路以及每个思路里的主要细节和方法。
最后,给你留一个思考题,列表法是不是就完全解决了排序算法的问题呢?
欢迎你给我留言,和我一起讨论。
**参考文献**
1. Jun Xu and Hang Li. AdaRank: a boosting algorithm for information retrieval. _Proceedings of the 30th annual international ACM SIGIR conference on research and development in information retrieval_, 391-3982007.
2. Zhe Cao, Tao Qin, Tie-Yan Liu, Ming-Feng Tsai, Hang Li. Learning to rank: from pairwise approach to listwise approach. _ICML_, 129-136, 2017.
3. Q. Wu, C.J.C. Burges, K. Svore and J. Gao. Adapting boosting for information retrieval measures. _Journal of Information Retrieval_, 2007.
4. C.J.C. Burges, R. Ragno and Q.V. Le. Learning to rank with non-smooth cost functions. _Advances in Neural Information Processing Systems_, 2006.
5. C.J.C. Burges, T. Shaked, E. Renshaw, A. Lazier, M. Deeds, N. Hamilton and G. Hullender. Learning to rank using gradient descent. _Proceedings of the twenty second international conference on machine learning_, 2005.
6. F. Xia, T.-Y. Liu, J. Wang, W. Zhang, and H. Li. Listwise approach to learning to rank — Theorem and algorithm. _ICML_, 11921199, 2008.
7. S. Chakrabarti, R. Khanna, U. Sawant, and C. Bhattacharyya. Structured learning for non-smooth ranking losses. _SIGKDD_, 8896, 2008.
8. T. Qin, T.-Y. Liu, and H. Li. A general approximation framework for direct optimization of information retrieval measures._Technical Report, Microsoft Research_, MSR-TR-2008-164, 2008.
9. M. Taylor, J. Guiver, S. Robertson, and T. Minka. SoftRank: Optimising non-smooth rank metrics. _WSDM_, 7786, 2008.
10. J.-Y. Yeh and J.-Y. Lin, and etc. Learning to rank for information retrieval using genetic programming. _SIGIR 2007 Workshop in Learning to Rank for Information Retrieval_, 2007.
11. Y. Yue, T. Finley, F. Radlinski, and T. Joachims. A support vector method for optimizing average precision. _SIGIR_, 271278, 2007.