1. 程式人生 > >Learning to Rank 簡介

Learning to Rank 簡介

非常好的一篇總結Learning to Rank的總結文章!

去年實習時,因為專案需要,接觸了一下Learning to Rank(以下簡稱L2R),感覺很有意思,也有很大的應用價值。L2R將機器學習的技術很好的應用到了排序中,並提出了一些新的理論和演算法,不僅有效地解決了排序的問題,其中一些演算法(比如LambdaRank)的思想非常新穎,可以在其他領域中進行借鑑。鑑於排序在許多領域中的核心地位,L2R可以被廣泛的應用在資訊(文件)檢索,協同過濾等領域。

  本文將對L2R做一個比較深入的介紹,主要參考了劉鐵巖、李航等人的幾篇相關文獻[1,2,3],我們將圍繞以下幾點來介紹L2R:現有的排序模型,為什麼需要使用機器學習的方法來進行排序,L2R特徵的選取,L2R訓練資料的獲取,L2R訓練和測試,L2R演算法分類和簡介,L2R效果評價等。

1.現有的排序模型

  排序(Ranking)一直是資訊檢索的核心研究問題,有大量的成熟的方法,主要可以分為以下兩類:相關度排序模型和重要性排序模型。

1.1 相關度排序模型(Relevance Ranking Model)

  相關度排序模型根據查詢和文件之間的相似度來對文件進行排序。常用的模型包括:布林模型(Boolean Model),向量空間模型(Vector Space Model),隱語義分析(Latent Semantic Analysis),BM25,LMIR模型等等。

1.2 重要性排序模型(Importance Ranking Model)

  重要性排序模型不考慮查詢,而僅僅根據網頁(亦即文件)之間的圖結構來判斷文件的權威程度,典型的權威網站包括Google,Yahoo!等。常用的模型包括PageRank,HITS,HillTop,TrustRank等等。

2. 為什麼需要使用機器學習的方法來進行排序

  對於傳統的排序模型,單個模型往往只能考慮某一個方面(相關度或者重要性),所以只是用單個模型達不到要求。搜尋引擎通常會組合多種排序模型來進行排序,但是,如何組合多個排序模型來形成一個新的排序模型,以及如何調節這些引數,都是一個很大的問題。

  使用機器學習的方法,我們可以把各個現有排序模型的輸出作為特徵,然後訓練一個新的模型,並自動學得這個新的模型的引數,從而很方便的可以組合多個現有的排序模型來生成新的排序模型。

3. L2R的特徵選取

  與文字分類不同,L2R考慮的是給定查詢的文件集合的排序。所以,L2R用到的特徵不僅僅包含文件d本身的一些特徵(比如是否是Spam)等,也包括文件d和給定查詢q之間的相關度,以及文件在整個網路上的重要性(比如PageRank值等),亦即我們可以使用相關性排序模型和重要性排序模型的輸出來作為L2R的特徵。

  1). 傳統排序模型的輸出,既包括相關性排序模型的輸出f(q,d),也包括重要性排序模型的輸出。

  2). 文件本身的一些特徵,比如是否是Spam等。

4. L2R訓練資料的獲取

  L2R的訓練資料可以有三種形式:對於每個查詢,各個文件的絕對相關值(非常相關,比較相關,不相關,等等);對於每個查詢,兩兩文件之間的相對相關值(文件1比文件2相關,文件4比文件3相關,等等);對於每個查詢,所有文件的按相關度排序的列表(文件1>文件2>文件3)。這三種形式的訓練資料之間可以相互轉換,詳見[1]。

  訓練資料的獲取有兩種主要方法:人工標註[3]和從日誌檔案中挖掘[4]。

  人工標註:首先從搜尋引擎的搜尋記錄中隨機抽取一些查詢,將這些查詢提交給多個不同的搜尋引擎,然後選取各個搜尋引擎返回結果的前K個,最後由專業人員來對這些文件按照和查詢的相關度進行標註。

  從日誌中挖掘:搜尋引擎都有大量的日誌記錄使用者的行為,我們可以從中提取出L2R的訓練資料。Joachims提出了一種很有意思的方法[4]:給定一個查詢,搜尋引擎返回的結果列表為L,使用者點選的文件的集合為C,如果一個文件di被點選過,另外一個文件dj沒有被點選過,並且dj在結果列表中排在di之前,則di>dj就是一條訓練記錄。亦即訓練資料為:{di>dj|di屬於C,dj屬於L-C,p(dj)<p(di)},其中p(d)表示文件d在查詢結果列表中的位置,越小表示越靠前。

5. L2R模型訓練

  L2R是一個有監督學習過程。

  對與每個給定的查詢-文件對(query document pair),抽取相應的特徵(既包括查詢和文件之間的各種相關度,也包括文件本身的特徵以及重要性等),另外通過或者人工標註或者從日誌中挖掘的方法來得到給定查詢下文件集合的真實序列。然後我們使用L2R的各種演算法來學到一個排序模型,使其輸出的文件序列和真實序列儘可能相似。

6. L2R演算法分類和簡介

  L2R演算法主要包括三種類別:PointWise,PairWise,ListWise。

1). PointWise L2R

  PointWise方法只考慮給定查詢下,單個文件的絕對相關度,而不考慮其他文件和給定查詢的相關度。亦即給定查詢q的一個真實文件序列,我們只需要考慮單個文件di和該查詢的相關程度ci,亦即輸入資料應該是如下的形式:

  Pointwise方法主要包括以下演算法:Pranking (NIPS 2002), OAP-BPM (EMCL 2003), Ranking with Large Margin Principles (NIPS 2002), Constraint Ordinal Regression (ICML 2005)。

  Pointwise方法僅僅使用傳統的分類,迴歸或者Ordinal Regression方法來對給定查詢下單個文件的相關度進行建模。這種方法沒有考慮到排序的一些特徵,比如文件之間的排序結果針對的是給定查詢下的文件集合,而Pointwise方法僅僅考慮單個文件的絕對相關度;另外,在排序中,排在最前的幾個文件對排序效果的影響非常重要,Pointwise沒有考慮這方面的影響。

 2). Pairwise L2R

  Pairwise方法考慮給定查詢下,兩個文件之間的相對相關度。亦即給定查詢q的一個真實文件序列,我們只需要考慮任意兩個相關度不同的文件之間的相對相關度:di>dj,或者di<dj。

  Pairwise方法主要包括以下幾種演算法:Learning to Retrieve Information (SCC 1995), Learning to Order Things (NIPS 1998), Ranking SVM (ICANN 1999), RankBoost (JMLR 2003), LDM (SIGIR 2005), RankNet (ICML 2005), Frank (SIGIR 2007), MHR(SIGIR 2007), Round Robin Ranking (ECML 2003), GBRank (SIGIR 2007), QBRank (NIPS 2007), MPRank (ICML 2007), IRSVM (SIGIR 2006) 。

  相比於Pointwise方法,Pairwise方法通過考慮兩兩文件之間的相對相關度來進行排序,有一定的進步。但是,Pairwise使用的這種基於兩兩文件之間相對相關度的損失函式,和真正衡量排序效果的一些指標之間,可能存在很大的不同,有時甚至是負相關,如下圖所示(pairwise的損失函式和NDCG之呈現出負相關性):

  另外,有的Pairwise方法沒有考慮到排序結果前幾名對整個排序的重要性,也沒有考慮不同查詢對應的文件集合的大小對查詢結果的影響(但是有的Pairwise方法對這些進行了改進,比如IR SVM就是對Ranking SVM針對以上缺點進行改進得到的演算法)。

3). Listwise L2R

  與Pointwise和Pairwise方法不同,Listwise方法直接考慮給定查詢下的文件集合的整體序列,直接優化模型輸出的文件序列,使得其儘可能接近真實文件序列。

  Listwise演算法主要包括以下幾種演算法:LambdaRank (NIPS 2006), AdaRank (SIGIR 2007), SVM-MAP (SIGIR 2007), SoftRank (LR4IR 2007), GPRank (LR4IR 2007), CCA (SIGIR 2007), RankCosine (IP&M 2007), ListNet (ICML 2007), ListMLE (ICML 2008) 。

  相比於Pointwise和Pairwise方法,Listwise方法直接優化給定查詢下,整個文件集合的序列,所以比較好的解決了克服了以上演算法的缺陷。Listwise方法中的LambdaMART(是對RankNet和LambdaRank的改進)在Yahoo Learning to Rank Challenge表現出最好的效能。

7. L2R效果評價

  L2R是用機器學習的方法來進行排序,所以評價L2R效果的指標就是評價排序的指標,主要包括一下幾種:

  1) WTA(Winners take all) 對於給定的查詢q,如果模型返回的結果列表中,第一個文件是相關的,則WTA(q)=1,否則為0.

  2) MRR(Mean Reciprocal Rank) 對於給定查詢q,如果第一個相關的文件的位置是R(q),則MRR(q)=1/R(q)。

  3) MAP(Mean Average Precision) 對於每個真實相關的文件d,考慮其在模型排序結果中的位置P(d),統計該位置之前的文件集合的分類準確率,取所有這些準確率的平均值。

  4) NDCG(Normalized Discounted Cumulative Gain) 是一種綜合考慮模型排序結果和真實序列之間的關係的一種指標,也是最常用的衡量排序結果的指標,詳見Wikipedia

  5) RC(Rank Correlation) 使用相關度來衡量排序結果和真實序列之間的相似度,常用的指標是Kendall's Tau。 

  參考文獻:

  [1]. Learning to Rank for Information Retrieval. Tie-yan Liu.

  [2]. Learning to Rank for Information Retrieval and Natural Language Processing. Hang Li.

  [3]. A Short Introduction to Learning to Rank. Hang Li.

  [4]. Optimizing Search Engines using Clickthrough Data. Thorsten Joachims. SIGKDD,2002.