Learning to Rank簡介


Learning to Rank是采用機器學習算法,通過訓練模型來解決排序問題,在Information Retrieval,Natural Language Processing,Data Mining等領域有着很多應用。

 

1. 排序問題

如圖 Fig.1 所示,在信息檢索中,給定一個query,搜索引擎會召回一系列相關的Documents(通過term匹配,keyword匹配,或者semantic匹配的方法),然后便需要對這些召回的Documents進行排序,最后將Top N的Documents輸出。而排序問題就是使用一個模型 f(q,d)來對該query下的documents進行排序,這個模型可以是人工設定一些參數的模型,也可以是用機器學習算法自動訓練出來的模型。現在第二種方法越來越流行,尤其在Web Search領域,因為在Web Search 中,有很多信息可以用來確定query-doc pair的相關性,而另一方面,由於大量的搜索日志的存在,可以將用戶的點擊行為日志作為training data,使得通過機器學習自動得到排序模型成為可能。

需要注意的是,排序問題最關注的是各個Documents之間的相對順序關系,而不是各個Documents的預測分最准確。

Learning to Rank是監督學習方法,所以會分為training階段和testing階段,如圖 Fig.2  所示。

               

 

1.1 Training data的生成

對於Learning to Rank,training data是必須的,而feature vector通常都是可以得到的,關鍵就在於label的獲取,而這個label實際上反映了query-doc pair的真實相關程度。通常我們有兩種方式可以進行label的獲取:

第一種方式是人工標注,這種方法被各大搜索引擎公司廣為應用。人工標注即對抽樣出來作為training data的query-doc pair人為地進行相關程度的判斷和標注。一般標注的相關程度分為5檔:perfect,excellent,good,fair,bad。例如,query=“Microsoft”,這時候,Microsoft的官網是perfect;介紹Microsoft的wikipedia則是excellent;一篇將Microsoft作為其主要話題的網頁則是good;一篇只是提到了Microsoft這個詞的網頁則是fair,而一篇跟Microsoft毫不相關的網頁則是bad。人工標注的方法可以通過多人同時進行,最后以類似投票表決的方式決定一個query-doc pair的相關程度,這樣可以相對減少各個人的觀點不同帶來的誤差。

第二種方式是通過搜索日志獲取。搜索日志記錄了人們在實際生活中的搜索行為和相應的點擊行為,點擊行為實際上隱含了query-doc pair的相關性,所以可以被用來作為query-doc pair的相關程度的判斷。一種最簡單的方法就是利用同一個query下,不同doc的點擊數的多少來作為它們相關程度的大小。

不過需要注意的是,這里存在着一個很大的陷阱,就是用戶的點擊行為實際上是存在“position bias”的,即用戶偏向於點擊位置靠前的doc,即便這個doc並不相關或者相關性不高。有很多 tricky的和 general 的方法可以用來去除這個“position bias”,例如,

1. 當位置靠后的doc的點擊數都比位置靠前的doc的點擊數要高了,那么靠后的doc的相關性肯定要比靠前的doc的相關性大。

2. Joachims等人則提出了一系列去除bias的方法,例如 Click > Skip Above, Last Click > Skip Above, Click > Earlier Click, Click > Skip Previous, Click > No Click Next等。

3. 有個很tricky但是效果很不錯的方法,之前我們說一個doc的點擊數比另一個doc的點擊數多,並不一定說明前者比后者更相關。但如果兩者的差距大到一定程度了,即使前者比后者位置靠前,但是兩者的點擊數相差5-10倍,這時候我們還是願意相信前者更加相關。當然這個差距的大小需要根據每個場景具體的調整。

4. position bias 存在的原因是,永遠無法保證在一次搜索行為中,用戶能夠看到所有的結果,往往只看到前幾位的結果。這時候就到了 Click Model大顯身手的時候了,一系列的 Click Model 根據用戶的點擊信息對用戶真正看到的doc進行“篩選”,進而能更准確地看出用戶到底看到了哪些doc,沒有看到哪些doc,一旦這些信息知道了,那么我們就可以根據相對更准確的 點擊數/展示數(即展現CTR)來確定各個doc的相關性大小。

上述講到的兩種label獲取方法各有利弊。人工標注受限於標注的人的觀點,不同的人有不同的看法,而且畢竟標注的人不是真實搜索該query的用戶,無法得知其搜索時候的真實意圖;另一方面人工標注的方法代價較高且非常耗時。而從搜索日志中獲取的方法則受限於用戶點擊行為的噪聲,這在長尾query中更是如此,且有用戶點擊的query畢竟只是總體query的一個子集,無法獲取全部的query下doc的label。

1.2 Feature的生成

這里只是簡單介紹下,后續博客會有更纖細的講解。

一般Learning to Rank的模型的feature分為兩大類:relevance 和 importance(hotness),即query-doc pair 的相關性feature,和doc本身的熱門程度的feature。兩者中具有代表性的分別是 BM25 和 PageRank。

1.3 Evaluation

怎么判斷一個排序模型的好壞呢?我們需要有驗證的方法和指標。方法簡單來說就是,比較模型的輸出結果,和真實結果(ground truth)之間的差異大小。用於Information Retrieval的排序衡量指標通常有:NDCG,MAP等。

NDCG(Normalized Discounted Cumulative Gain):

NDCG表示了從第1位doc到第k位doc的“歸一化累積折扣信息增益值”。其基本思想是:

1) 每條結果的相關性分等級來衡量

2) 考慮結果所在的位置,位置越靠前的則重要程度越高

3) 等級高(即好結果)的結果位置越靠前則值應該越高,否則給予懲罰

其中G表示了這個doc得信息增益大小,一般與該doc的相關程度正相關:

D則表示了該doc所在排序位置的折扣大小,一般與位置負相關:

而Gmax則表示了歸一化系數,是最理想情況下排序的“累積折扣信息增益值”。

最后,將每個query下的NDCG值平均后,便可以得到排序模型的總體NDCG大小。

 

MAP(Mean Average Precision):

其定義是求每個相關文檔檢索出后的准確率的平均值(即Average Precision)的算術平均值(Mean)。這里對准確率求了兩次平均,因此稱為Mean Average Precision。

在MAP中,對query-doc pair的相關性判斷只有兩檔:1和0。

對於一個query,其AP值為:

yij即每個doc的label(1和0),而每個query-doc pair的P值代表了到dij這個doc所在的位置為止的precision:

其中,是dij在排序中的位置。

 

2. Formulation

用通用的公式來表示Learning to Rank算法,loss function為,從而risk function(loss function在X,Y聯合分布下的期望值)為:

有了training data后,進一步得到empirical risk function:

於是,學習問題變成了如何最小化這個empirical risk function。而這個優化問題很難解決,因為loss function不連續。於是可以使用一個方便求解的surrogate function來替換原始loss function,轉而優化這個替換函數:

替換函數的選擇有很多種,根據Learning to Rank的類型不同而有不同的選擇:

1)pointwise loss:例如squared loss等。

2)pairwise loss:例如hinge loss,exponential loss,logistic loss等。

3)listwise loss:

 

3. Learning to Rank Methods

Learning to Rank 方法可以分為三種類型:pointwise,pairwise,和listwise。

pointwise和pairwise方法將排序問題轉化為classification,regression,ordinal classification等問題,優點是可以直接利用已有的classificatin和regression算法,缺點是group structure其實是被忽略的,即不會考慮每個query下所有doc之間的序關系。導致其學習目標和真實的衡量排序的目標並不一定是一致的(很多排序衡量指標,例如NDCG都是衡量每個query下的整體list的序關系的)。而listwise方法則將一個ranking list作為一個instance來進行訓練,其實會考慮每個query下所有doc之間的序關系的。

這三種類型的Learning to Rank方法的具體算法一般有:

1) Pointwise: Subset Ranking, McRankPrankOC SVM
2) PairwiseRanking SVM, RankBoost, RankNetGBRankIR SVMLambda RankLambdaMart
3) Listwise: ListNet, ListMLE, AdaRank, SVM MAP, Soft Rank

針對各個具體的算法介紹,后續的博客會進一步給出,這里就不再多加詳述了。

 

版權聲明:

   本文由笨兔勿應所有,發布於http://www.cnblogs.com/bentuwuying。如果轉載,請注明出處,在未經作者同意下將本文用於商業用途,將追究其法律責任。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM