上一篇文章主要介紹了查詢與文檔內容類似性的打分以及基於機率模型的BM25模型和如何修改lucene的排序源代碼。這篇文章將重點講述機器學習排序,其中的重頭戲是關於ListNet算法的英文原版學術論文的解讀以及RankLib源碼包的學習。html
機器學習排序:從 Pairwise方法到Listwise方法web
Zhe Cao* 算法
Tao Qin*api
清華大學,北京,10084,中國網絡
Tie-Yan Liuapp
微軟亞洲研究院,海淀區知春路49號,10080,中國北京機器學習
Ming-Feng Tsai*函數
國立臺灣大學,中華臺北 106工具
Hang Li性能
微軟亞洲研究院,海淀區知春路49號,10080,中國北京
翻譯:XueQiang Tong http://www.cnblogs.com/txq157 txq157@163.com
說明:在翻譯過程當中,我會盡可能尊重原著,力求作到簡潔易懂,後面會加入本身的一些理解。
摘要
本文主要闡述對排序對象構建機器學習模型(評分函數)。機器學習排序在文檔檢索、協同過濾以及其餘許多領域都有普遍且重要的應用。目前一種基於把」文檔對」做爲排序對象的機器學習排序方法已經被提出來,在學術界咱們把它稱爲Pairwise方法。儘管Pairwise有所改進,然而它忽略了一個很是重要的事實:咱們的排序預測任務是基於全部的排序對象,這些對象的排列順序要遠遠多於兩個對象的排列。本文論述的機器學習排序方法,是把對象列表(檢索出的所有文檔)做爲排序對象,而且爲這個方法提出了一種機率模型。具體來講,咱們引入了兩個機率模型做爲Listwise方法的損失函數,分別是全排列機率模型和top-one機率模型。咱們會使用神經網絡構建評分函數和梯度降低做爲損失函數的優化手段。在信息檢索中的經驗顯示,Listwise比Pairwise表現得更加出色。
1.引言
不少應用的核心事務都離不開排序,好比全文檢索,協同過濾,專家搜索,反網絡垃圾郵件,情感分析,產品評級等等。不失通常性,本文主要以文檔檢索爲例討論機器學習排序。當應用於全文檢索時,機器學習排序按照以下方式工做:假設如今有一些文檔集合,在檢索的時候,給定一個查詢,而後評分函數給每個返回的文檔打分,按降序排列。每一個文檔的得分表明了與這個查詢的相對相關程度。在機器學習排序的訓練中,每每先提供多個查詢,其中每一個查詢都和由這個查詢獲得的評分文檔集合相關聯,獲得文檔後用這些訓練數據建立出評分函數,用以精確地預測文檔集的得分。
因爲它的重要性,近年來機器學習排序在機器學習社區中引發了普遍的關注。在業內被稱之爲Pairwise的若干方法已經成功用於全文檢索。這個方法把一對兒有排列順序的文檔做爲訓練學習的實例,而且用分類算法來處理。特別地,在訓練中,在咱們收集到全部文檔對兒的全排列以後,對每一個文檔對兒標識一個表明這兩個文檔相關程度的標籤(-1 or 1),而後咱們用這些數據訓練出分類模型,再用這個分類模型排序。SVM、Boosting還有神經網絡這些分類模型的應用直接致使RankingSVM(Herbrich et al.,1999),RankBoost(Freund et al.,1998),RankNet(Burges et al.,2005)算法的產生。
使用Pairwise方法有不少優點。首先,在分類算法中不少成型的方法能夠直接應用於排序中。其次,在特定狀況下能夠很是容易地獲取到文檔對兒(Joachims,2002)。
然而,這個方法存在不少缺點。首先,做爲訓練對象的文檔對兒,他所訓練出來
的模型的最小化損失函數,是用在分類中而非排序中。其次,文檔對兒數量龐大致使計算複雜度過高。第三,文檔對兒屬於獨立同分布(iid)的假設過於(嚴格)strong,與實際狀況相差甚遠。最後,不一樣的查詢產生的文檔對兒數量變化太大,換句話說文檔對兒的數量對查詢比較敏感,因爲這個差別,將直接致使訓練模型更加偏向於擁有更多文檔對兒的查詢(擁有多數量文檔對兒的查詢對建模貢獻更大)。
在本文中,咱們提出Listwise的方法,在這個方法中,咱們把文檔集做爲訓練對象。接下來的主要問題是如何定義Listwise的損失函數。咱們提出一個機率模型用於listwise損失函數的參數估計。咱們會同時把排序函數對文檔的打分(此時參數是未知的)和人工對文檔顯示的或者隱士的打分變換成機率分佈,這樣咱們就能夠把二者(特指機率分佈)間的距離(差別)做爲損失函數。
咱們定義了兩個機率模型,分別是組合(全排列)機率模型和top one機率。ListNet算法是這樣一種算法,它使用listwise的損失函數,優化損失函數前先構建神經網絡模型,而後用梯度降低估計參數。事實代表,ListNet算法明顯好於Ranking SVM, RankBoost還有 RankNet。
本文主要包括如下4部分:①listwise算法的概述;②基於機率模型的損失函數的轉換;③listwise算法的發展;④關於這個算法的實驗驗證。
2.Related Work
2.1機器學習排序
RankNet算法在對損失函數進行參數估計時,使用交叉熵做爲參數搜索方向(構建損失函數)使用梯度降低法優化損失函數,在這個過程當中會構建線性神經網絡做爲評分函數。Pairwise算法被前後應用於信息檢索。好比,Joachims(2002)把RankingSVM算法應用於全文檢索,他從用戶的點擊數據(通常從點擊圖中獲取)中獲取訓練時要用到的文檔對兒。
2.2排序中的機率模型
Luce 定義了機率分佈模型,他進一步引入參數來表徵機率分佈而且發明了估計參數的方法。Plackett在投票結果系統上應用了這個模型和方法。本文應用類似的機率分佈模型。然而,本文提到的底層結構(parameters)和基本用法(文檔分數轉換爲機率分佈) 與Plackett的會有些差別。
3.Listwise方法
這部分,咱們將會以全文檢索爲例,給出關於機器學習排序的通常性的描述,而且在細節上加以詳細說明。在如下描述中,咱們使用上標表示查詢的索引,使用下標表示文檔的索引。
在訓練中,一般給定這樣一組查詢Q={q(1),q(2),…q(m)}。每一個查詢都和文檔集合d(i)=(d(i)1,d(i)2,…d(i)n(i))相關聯,其中d(i)j表示第j個文檔,n(i)表示第i個查詢的文檔數目(d(i))。此外,每一組文檔d(i)都和文檔的人工打分y(i)=(y(i)1,y(i)2,…y(i)n(i))相關聯。y(i)表明了文檔和查詢的相關程度,這個分數是人爲指定的。好比,這個分數能夠由文檔d(i)j的點擊率轉化而來(Joachims, 2002)。這種假設認爲具備較高點擊率的文檔和查詢的相關性更強。
一個特徵向量 x(i)j = Ψ(q(i), d(i)j) 是由每一個查詢-文檔(q(i), d(i)j)建立而來,i = 1, 2, · · · m,j =1,2, · · · n(i)。每一個特徵向量構成x(i) = (x(i)1,x(i)2,…x(i)n(i)),這是每一個查詢構成的特徵矩陣。對應分數集合y(i) = (y(i)1,y(i)2,…y(i)n(i)),最後訓練集能夠表示成T ={x(i), y(i)}mi=1。
而後咱們定義一個評分函數f,對每一個特徵向量x(i)j 輸出一個評分f(x(i)j),對於特徵矩陣咱們獲得一組評分z(i) = (f(x(i)1),f(x(i)2),…f(x(i)n(i)))。學習的目標是在整個數據集上取得總損失函數最小化。
∑mi=1L(y(i),z(i)) --------------------- (1)
L爲listwise的損失函數。在訓練過中,給定一個查詢和相關聯的文檔集,咱們把整個文檔集的函數打分和人工打分轉換成機率分佈而後計算差值,利用梯度降低估計出打分函數的最優參數(優化的過程),而後用測試集提升泛化能力。相比之下,Pairwise方法訓練時在文檔集中找出全部的文檔對兒排列,若是前一個文檔的人工打分高於後一個,就標識爲1不然爲-1,最後用這些訓練數據訓練出一個分類模型,好比SVM。好比有三個文檔,咱們暫且命名爲a,b,c,全排列爲ab(1),ba(-1),ac(1),ca(-1),cb(1),bc(-1),括號裏爲預測後的分類。咱們能夠從全部分類爲1的組合中找出文檔排列順序:acb。Pairwise算法將更多的精力放在尋找全排列的文檔對兒以及訓練分類模型上,複雜度很是高,Listwise解決了這個問題。
4.機率模型
前面咱們提出使用兩個機率模型中的任意一個計算損失函數,這兩個機率模型分別是組合機率和top one 機率。
4.1.Permutation Probability
咱們肯定了排序對象集合1,2,…n。其中一種排列爲{1,2,…,n}。咱們寫爲π 。其中π(j)表示對象在排列中的位置。文檔集合的全部可能的排列爲Ωn。之後咱們有時會互換排名函數和排名函數給出的分數列表。
咱們假設,在使用排序函數的排序列表中進行預測時具備不肯定性。換句話說,任何排列都是可能的,可是不一樣的排列可能有不一樣的似然函數估計。
咱們定義的組合機率,在給定評分函數前提下,應該在組合機率的似然估計上取得比較理想的效果。所以,咱們有以下定義:
定理1 假設π是排序列表中其中一種排列,Φ(.)是一個遞增而且恆大於零的函數。那麼,排列組合的機率爲:
於任意的排序列表,在前一個文檔得分高於後面一個文檔得分的狀況下,若是二者交換位置,咱們將會獲得一個更加低值的機率分佈。定理4更加簡單,若是一個機率分佈是按照文檔的分數降序排列的,那麼他具備最高值的機率分佈,反之若是按照升序排列的話,機率分佈的值是最低的。
給定兩個scores集合,咱們根據他們計算出兩個組合機率分佈模型,而後把這兩個模型之間的差值做爲listwise的損失函數。然而,對於容量爲n的文檔集合來講,組合狀況是n!,計算起來比較棘手,全部咱們考慮使用top-one機率模型。
4.2 Top One Probability
一個對象的top one機率表示這個對象在全部的文檔集中排在最前面的機率。
須要注意的是ListNet和RankNet很類似。他們的主要區別在於前者把document list 做爲訓練和預測的對象,後者把 document pair做爲實例。比較有趣的是,當有一組查詢,每一個查詢獲得的文檔數目爲2時,listwise的損失函數變得和pairwise幾乎相等。RankNet的時間複雜度爲O(m .n2max)(Burges et al.,2005),m表明查詢的數目,n表明每一個查詢對應的最大文檔數目。ListNet的時間複雜度爲O(m .nmax)。
6.實驗
咱們將使用三個數據集分別與RankNet(Burges et al.,2005)、Ranking SVM (Herbrich et al., 1999)和 RankBoost (Freund et al., 1998)進行精度對比。這裏的ListNet使用top one機率模型。
爲了簡單起見,在本次實驗中,咱們使用線性神經網絡模型而且省略常量b:
,尖括號裏面表明向量內積。
6.1數據集
咱們使用3個數據集:TREC,OHSUMED,CSearch。TREC數據集包括了1053110個pages,11164829個超連接,這些數據是查詢50次獲得的。在構造特徵向量時,考慮了內容特徵和超連接特徵,總共有20個。OHSUMED數據集包括了348556個documents,106個queries,16140個文檔對兒,總共構建了30個特徵。CSearch大約包含了25000 queries,每一個query有1000多個關聯文檔,構建了600個features,包括query dependent features and independent features.這個數據集提供了5個等級的評分:4 (」perfect match」) to 0 (」bad match」)。
爲了使排序更加接近真實狀況,咱們建立訓練數據集的時候將使用」評分等級」來表示關聯程度的高低(離散關聯判斷)。在排名性能評估上,咱們採用兩個經常使用的IR評價措:NDCG和MAP。NDCG is designed to measure ranking accuracy when there are more than two levels of relevance judgments. For MAP it is assumed that there are two levels: relevant and irrelevant.關於這兩部分的理解,能夠參看http://www.cnblogs.com/HappyAngel/p/3535919.html。NDCG主要用於評分等級大於2個的場景,而MAP主要用於評分等級爲相關和不相關的場景。
6.2排序精度
對於TREC和OHSUMED咱們把每一個數據集分紅5個部分,實施」五折交叉驗證」。 在每次實驗中,3/5用於訓練,1/5用於驗證,剩下的1/5用於測試。對於RankNet和ListNet算法,在每次實驗中驗證集主要用於肯定最優化的迭代次數以便訓練出最優的模型。對於RankingSVM算法主要是調整係數C而RankBoost算法主要尋找出最佳的weak learns的數量。在第6部分咱們輸出的報告(精度)爲五次實驗的平均值。
Figure 1和Table 1給出了TREC 的報告結果。結果顯示,ListNet算法的表現要優於其餘三種方法。尤爲在Table1的報告中,咱們看到在第一次和第二次試驗中ListNet的NDCG值超越RankNet大約4個point gain,帶來大約10%的搜索結果相關性的改進。
Figure 2和Table 2顯示了OHSUMED數據集的試驗結果。再一次,在全部的評估中,ListNet仍然優於RankNet和RankBoost。此外,除了第3次和第5次試驗外,ListNet算法均優於RankSVM(用NDCG評估)。
CSearch的數據量很是龐大,咱們沒有采用交叉驗證的方式。咱們從中隨機選取1/3做爲訓練,1/3用於驗證,剩下的1/3用於測試。Figure3顯示了ListNet,RankNet和RankBoost的試驗結果。ListNet算法再一次不負衆望。因爲數據量的緣由,咱們不能實施RankingSVM。
6.3討論
咱們來討論一下爲何基於listwise的方法ListNet優於基於pairwise的方法RankNet,RankingSVM還有RankBoost。就像在第一部分解釋過的那樣,在pairwise方法中文檔對兒的數量受查詢影響很大,結果致使在訓練時訓練模型更加偏向於擁有較多文檔對兒的查詢。而且咱們在幾乎全部的測試數據集中都觀察到這種傾向。Table 2顯示了在OHSUMED數據集上每個查詢的文檔對兒的分佈狀況。
咱們看到分佈呈現明顯的傾斜:更多的查詢只擁有不多的文檔對兒,只有少數的查詢擁有較多的文檔對兒。在listwise方法中損失函數在每一個查詢中都有定義,因此這個問題跟本不存在。(因爲listwise把整個文檔集做爲訓練對象,不會出現訓練模型的傾向問題) This appears to be one of the reasons for the higher performance(高性能) by ListNet。
第二個問題就是pairwise的損失函數問題。因爲pairwise實際上把排序問題轉換成了分類問題,使用分類算法的損失函數對於排序來講,它所付出的代價可能會更大。並且對於MAP和NDCG這樣的評估準則,更加適合用在把整個文檔集做爲訓練集的場景,pairwise的損失函數對於上述的評估準則來講會顯得更加鬆散。
咱們更進一步分析二者的損失函數的不一樣點。這一次咱們使用TREC數據集的Figure4和Figure5來講明。能夠看到,在訓練中,pairwise的損失函數並非徹底和NDCG成反比(理想狀態應該是呈現反比關係,即損失函數越小,NDCG越大)。從數據中咱們看到,從第20次迭代到第50次迭代過程當中,二者(loss function and NDCG)仍是呈現反比關係的。然而60次之後,儘管pairwise的損失函數在降低,NDCG值卻並無上升。相比之下,listwise的損失函數徹底和NDCG呈現反比關係。另外,從圖中明顯看出,pairwise損失函數收斂的速度也明顯慢於listwise。
最終咱們得出結論,listwise方法的性能明顯優於pairwise,更適合於機器學習排序。
7.結論
在本文中,咱們提出了一種新的學習方法排名,稱爲listwise方法。咱們認爲
在學習排名時採用這種方法比傳統的成對法更好。在listwise方法中,不是使用對象對做爲實例,咱們使用對象列表做爲學習中的實例。Listwise方法的關鍵問題是定義一個listwise損失函數。在本文中,咱們提出採用機率方法來解決它。具體來講,咱們使用機率模型:組合機率和top-one機率將文檔排名分數轉換爲機率分佈模型。而後,咱們能夠把兩個機率分佈模型之間的任何差值度量(例如,交叉熵)視爲listwise損失函數。
咱們而後開發了一種基於該方法的學習方法,使用線性神經網絡構建評分函數,使用交叉熵構建損失函數,使用梯度降低法對損失函數進行優化。使用三個數據集的實驗結果代表,該方法比現有的pairwise方法(如RanNet,Ranking SVM和RankBoost)更好,這代表最好採用listwise方法來學習排名。除此以外,咱們還調查了pairwise損失函數和性能評估指標(如NDCG和MAP)之間的關係。
8.致謝
Bin Gao對這項工做提出了許多有價值的建議。咱們還要感謝Kai Yi對咱們實驗的幫助。
9.參考工具
Baeza-Yates, R., & Ribeiro-Neto, B. (1999). Modern information retrieval. Addison Wesley.
Burges, C., Shaked, T., Renshaw, E., Lazier, A., Deeds, M.,Hamilton, N., & Hullender, G. (2005). Learning to rank using gradient descent. Proceedings of ICML 2005 (pp.89–96).
Cao, Y. B., Xu, J., Liu, T. Y., Li, H., Huang, Y. L., & Hon, H. W. (2006). Adapting ranking SVM to document retrieval. Proceedings of SIGIR 2006 (pp. 186–193).
Cohen, W. W., Schapire, R. E., & Singer, Y. (1998). Learning to order things. Advances in Neural Information Processing Systems. The MIT Press.
Crammer, K., & Singer, Y. (2001). Pranking with ranking.Proceedings of NIPS 2001.
Craswell, N., Hawking, D., Wilkinson, R., & Wu, M.(2003). Overview of the TREC 2003 web track. Proceedings of TREC 2003 (pp. 78–92).
Freund, Y., Iyer, R., Schapire, R. E., & Singer, Y. (1998).
An efficient boosting algorithm for combining preferences. Proceedings of ICML 1998 (pp. 170–178).
Herbrich, R., Graepel, T., & Obermayer, K. (1999). Support vector learning for ordinal regression. Proceedings of ICANN 1999 (pp. 97–102).
Hersh, W. R., Buckley, C., Leone, T. J., & Hickam, D. H.(1994).
OHSUMED: An interactive retrieval evaluation and new large test collection for research. Proceedings of SIGIR 1994 (pp. 192–201).
Jarvelin, K., & Kekanainen, J. (2000). IR evaluation methods for retrieving highly relevant documents. Proceedings of SIGIR 2000 (pp. 41–48).
Joachims, T. (1999). Making large-scale support vector machine learning practical. Advances in kernel methods: support vector learning, 169–184.
Joachims, T. (2002). Optimizing search engines using clickthrough data. Proceedings of KDD 2002 (pp. 133–142).
Lebanon, G., & Lafferty, J. (2002). Cranking: Combining rankings using conditional probability models on permutations. Proceedings of ICML 2002 (pp. 363–370).
Luce, R. D. (1959). Individual choice behavior. Wiley. Matveeva, I., Burges, C., Burkard, T., Laucius, A., & Wong, L. (2006).
10.附錄
A: Proof of Lemma 2
End。