1. 程式人生 > >Learning to Rank(轉)

Learning to Rank(轉)

搜索 class 差異 https mode 表示 排序 cef hot

https://blog.csdn.net/kunlong0909/article/details/16805889

Table of Contents

  • 1 前言
  • 2 LTR流程
  • 3 訓練數據的獲取4 特征抽取
    • 3.1 人工標註
    • 3.2 搜索日誌
    • 3.3 公共數據集
  • 5 模型訓練
    • 5.1 訓練方法
      • 5.1.1 Pointwise
      • 5.1.2 Pairwise
      • 5.1.3 Listwise
  • 6 效果評估7 參考
    • 6.1 NDCG(Normalized Discounted Cumulative Gain)
      • 6.1.1 定義
      • 6.1.2 描述
    • 6.2 MAP(Mean Average Precision)
      • 6.2.1 定義
      • 6.2.2 描述

1 前言

Web Search 的歷史經歷了

傳統的 “text retrieval” 到 “基於link analysis的搜索引擎”,目前,由於機器學習和數據挖掘

的技術不斷成熟,利用統計模型來解決rank問題已經成為一個hot topic: Learning to Rank

2 LTR的流程

  • Collect Training Data (Queries and their labeled documents)
  • Feature Extraction for Query-document Pairs
  • Learning the Ranking Model by Minimizing a Loss Function on the Training Data
  • Use the Model to Answer Online Queries

3 訓練數據的獲取

有2種獲取訓練數據的來源:1)人工標註;2)搜索日誌。

3.1 人工標註

從搜索日誌中隨機選取一部分Query,讓受過專業訓練的數據評估員對”Query-Url對”給出

相關性判斷。常見的是5檔的評分:差、一般、好、優秀、完美。以此作為訓練數據。人工標

註是標註者的主觀判斷,會受標註者背景知識等因素的影響。

3.2 搜索日誌

使用點擊日誌的偏多。比如,結果ABC分別位於123位,B比A位置低,但卻得到了更多的點擊,

那麽B的相關性可能好於A。點擊數據隱式反映了同Query下搜索結果之間相關性的相對好壞。

在搜索結果中,高位置的結果被點擊的概率會大於低位置的結果,這叫做”點擊偏見”(Click Bias)。

但采取以上的方式,就繞過了這個問題。因為我們只記錄發生了”點擊倒置”的高低位結果,使用這

樣的”偏好對”作為訓練數據。關於點擊數據的使用,後續再單獨開帖記錄,這裏不展開。

在實際應用中,除了點擊數據,往往還會使用更多的數據。比如通過session日誌,挖掘諸如頁面停

留時間等維度。在實際場景中,搜索日誌往往含有很多噪音。且只有Top Query(被搜索次數較多

的Query)才能產生足夠數量能說明問題的搜索日誌。

3.3 公共數據集

現存一批公開的數據集可以使用

  1. LETOR, http://research.microsoft.com/en-us/um/beijing/projects/letor/
  2. Microsoft Learning to Rank Dataset, http://research.microsoft.com/en-us/projects/mslr/
  3. Yahoo Learning to Rank Challenge, http://webscope.sandbox.yahoo.com/

4 特征抽取

搜索引擎會使用一系列特征來決定結果的排序。一個特征稱之為一個“feature”。按照我的理解,

feature可以分為3大類:

  1. Doc本身的特征:Pagerank、內容豐富度、是否是spam等
  2. Query-Doc的特征:文本相關性、Query term在文檔中出現的次數等

此階段就是要抽取出所有的特征,供後續訓練使用。

5 模型訓練

5.1 訓練方法

LTR的學習方法分為Pointwise、Pairwise和Listwise三類。Pointwise和Pairwise把排序問題轉換成

回歸 、 分類 或 有序分類 問題。Lisewise把Query下整個搜索結果作為一個訓練的實例。3種方法

的區別主要體現在損失函數(Loss Function)上:

  • Regression: treat relevance degree as real values
  • Classification: treat relevance degree as categories
  • Pairwise classification: reduce ranking to classifying the order between each pair of documents.

5.1.1 Pointwise

Pointwis方法的主要思想是將排序問題轉化為多類分類問題或者回歸問題。以多類分類為例

進行說明:假設對於查詢query,與其相關的文檔集合為:{d1, d2, …, dn}。那麽首先對這n個pair:

(query, di)抽取特征並表示成特征向量。

  • Regression-based:

將query與di之間的相關度作為value,利用regression model來得到一個query與document之間相關

度的預測。

  • Classification-based:

將query與di之間的相關度的程度作為label,一般的label等級劃分方式為:{Perfect, Excellent,

Good, Fair, Bad},一共五個類別。於是,對於一個查詢及其文檔集,可以形成n個訓練實例。有了

訓練實例,我們可以使用任一種多類分類器進行學習,比如最大熵,SVM。下面是一個例子:

技術分享圖片

5.1.2 Pairwise

Pairwise方法是目前比較流行的方法,效果也非常不錯。它的主要思想是將Ranking問題形式化為二元

分類問題。

下面這張圖很直觀地表達了pairwise方法的思想,同時也給出了構造訓練實例的方法。

技術分享圖片

對於同一條query,在它的所有相關文檔集裏,對任兩個不同label的文檔,都可以得到一個訓練實例

(pair),比如圖中的(技術分享圖片)分別對應label為5和3,那麽對於這個pair實例,給它賦予類別+1(5>3),

反之則賦予類別-1。於是,按照這種方式,我們就得到了二元分類器訓練所需的樣本了。預測時,只需要對

所有pair進行分類,便可以得到文檔集的一個偏序關系,從而實現排序。

Pairwise方法有很多的實現,比如SVM Rank(開源), 還有RankNet(C. Burges, et al. ICML 2005), FRank

(M.Tsai, T.Liu, et al. SIGIR 2007),RankBoost(Y. Freund, et al. JMLR 2003)等等。下面是SVM Rank的例子:

技術分享圖片

相比於Pointwise方法,Pairwise方法不再對相關度作獨立假設,因為它只對同一個query裏的文檔集生成

訓練樣本。然而,Pairwise模型也有一些缺點:1.它對不同級別之間的區分度是一致對待的。在信息檢索領域,

尤其對於搜索引擎而言,人們更傾向於只點擊搜索引擎返回的前幾頁結果,甚至只是前幾條。所以我們對相關

度高(Perfect)的文檔應該作更好的區分。2.相關文檔集大小帶來的模型偏置。假設query1對應的相關文檔

集大小為5,query2的相關文檔集大小為1000,那麽從後者構造的訓練樣本數遠遠大於前者,從而使得分類器

對相關文檔集小的query所產生的訓練實例區分不好,甚至視若無睹。

還有一個重要的因素也會影響Pairwise方法的排序性能。以Ranking SVM為例,它優化的目標是使得正負

樣本之間的Margin最大,而並非以排序性能為優化目標。就像BP神經網絡以訓練誤差為目標優化函數,從而使

得它很容易過擬合。優化目標本身的差異將導致模型本身的功能偏置。於是,基於這個特性,人們提出了Listwise

的方法。

5.1.3 Listwise

Listwise方法相比於前兩種(Pointwise,Pairwise)而言,不再將Ranking問題直接形式化為一個分類或者

回歸問題,而是直接對文檔的排序結果(list)進行優化。目前主要有兩種優化方法:

  • 直接針對Ranking評價指標進行優化。比如常用的MAP, NDCG(下面介紹)。這個想法非常自然,但是往往

難以實現,因為NDCG這樣的評價指標通常是非平滑(連續)的,而通用的目標函數優化方法針對的都是連續函數。

  • 優化損失函數

損失函數的構造有很多種方式。RankCosine(T. Qin, T. Liu, et al. IP&M 2007)使用正確排序與預測排序的分值向量

之間的Cosine相似度(夾角)來表示損失函數。 ListNet(Z. Cao, T. Qin, T. Liu, et al. ICML 2007)使用正確排序與預測排

序的排列概率分布之間的KL距離(交叉熵)作為損失函數,等等。

以ListNet為例,其損失函數如下:

技術分享圖片

技術分享圖片技術分享圖片分別表示正確的排序以及預測的排序。其中,概率分布由以下公式定義:

技術分享圖片

其中技術分享圖片為第j個特征向量的Score。當然這個概率分布需要滿足一些性質,比如,對於更佳排序,其概率值應該更高。

那麽,最終損失函數就可以表示為以下形式:

技術分享圖片

從式中可以看出,ListNet對特征向量進行簡單的線性加權來對Score進行預測。此時,任務轉化為對權矢量w的學習。

這顯然是一個老生常談的問題,梯度下降是最常用的方法。這裏就不再贅述了。

我覺得Listwise的方法是最優美的,因為它專註於自己的目標和任務。相比之下,Pairwise有點兒歪門邪道的感覺:)

當然,這種方法也並非完美,還是有一些缺點的。比如Score(技術分享圖片)如何構造?能直接使用Label麽?事實上,這也是制約性能

的一大原因。還有,求解KL距離時,需要對所有排列計算其概率,算法復雜度趨於技術分享圖片。針對這幾個問題,都有相應的

Solution。

對於ListNet,據我目前所知,有兩個開源的Java版本實現,一是Minorthird,這是CMU的教授William W. Cohen帶領他的

學生們做的,類似於Weka,是一個實現了大量機器學習、數據挖掘算法的開源工具,它在Sorceforge上的主頁在這兒。另一個

是羅磊同學近期做的,使用的是單層神經網絡模型來調整權值。目前已經在Google code上開源,地址在這兒。歡迎大家使用並給

出意見。

6 效果評估

對於搜索結果,有多種量化搜索得分的計算方法,這裏介紹NDCG和MAP。

6.1 NDCG(Normalized Discounted Cumulative Gain)

6.1.1 定義

技術分享圖片

  • 計算前k條結果的相關性得分
  • i:第i次搜索
  • j:第j條結果
  • yi,j:第j條結果的相關性標註得分,5檔制
  • πi(j):這條結果在排序中的位置

6.1.2 描述

  • 顧名思義,NDCG的公式由 N、D、C、G 4部分組成。將公式改寫成
    • 技術分享圖片
  • 先看G部分。G是增益函數(Gain),表示第j條結果在被給予評分yi,j之後所貢獻的分值增益。定義如下
    • 技術分享圖片
  • 再看D部分。D是位置折算函數(Discounted)。因為不同位置的增益應該是不同的,D函數給結果按照位置賦予一個權重。定於如下C部分就是累加(Cumulative),將k條結果的得分加在一起。
    • 技術分享圖片
  • N是歸一化因子(Normalized),取值是該位置上G函數理論上取得的最大值的倒數。目的是縮放不同位置上的得分到統一區間。

6.2 MAP(Mean Average Precision)

6.2.1 定義

  • 技術分享圖片
  • 技術分享圖片
  • MAP中,相關性評分yi,j只有2檔:0和1

6.2.2 描述

  • P表示結果j的權重,從位置j開始,相關(標記為1)的結果所在的比例
  • AP表示單query下,相關的結果的平均的加權得分
  • AP中,只有標記為相關的結果才會參與加權的累加
  • AP是單query下的得分,多query的平均AP,就成了MAP

7 參考

信息檢索初學者‘s Learning to Rank 小結:http://blog.crackcell.com/2011/12/17/learning-to-rank_intro_note/

jiangfeng‘s 漫談Learning to Rank:http://www.jiangfeng.me/blog/123

1: Adapting Ranking SVM to Document Retrieval. (Liu Tie Yan. et al. MSRA) 【PDF】

2: Learning to rank for Information Retrieval– tutorial. (Liu Tie Yan. et al. MSRA) 【PDF】

3: Learning to rank: From Pairwise Approach to Listwise Approace. (Liu Tie Yan. et al. MSRA)【PDF】

4: Learning to rank for Information Retrieval - book. (Liu Tie Yan. MSRA)【PDF】

5:Learning to Rank Report @ CIIR 2011 【PDF】

Learning to Rank(轉)