學習排序 Learning to Rank:從pointwise和pairwise到listwise,經典模型與優缺點

       Ranking是信息檢索領域的基本問題,也是搜索引擎背後的重要組成模塊。本文將對結合機器學習的ranking技術——learning2rank——做個系統整理,包括pointwise、pairwise、listwise三大類型,它們的經典模型,解決了什麼問題,仍存在什麼缺陷。關於一些擴展話題和具體應用,可能會在下一篇文章介紹,包括在QA領域的實踐情況。

      本文主要參考劉鐵巖老師的<Learning to Rank for Information Retrieval>和李航老師的<Learning to rank for information retrieval and natural language processiing>

1、概述

1.1 Ranking

Ranking模型可以粗略分爲基於相關度和基於重要性進行排序的兩大類。

早期基於相關度的模型,通常利用query和doc之間的詞共現特性(如布爾模型)、VSM(如TFIDF、LSI等)、概率排序思想(BM25、LMIR)等方式

基於重要性的模型,利用的是doc本身的重要性,如PageRank、TrustRank等

相關度的標註

   1.最流行也相對好實現的一樣方式時,人工標註MOS,即相關度等級。

   2.其次是,人工標註pairwise preference, 即一個doc是否相對另一個doc與該query更相關

   3.最costly的方式是,人工標註docs與query的整體相關度排序。

  評估指標

即評估query與docs之間的真實排序與預測排序的差異。

大部分評估指標都是針對每組query-docs進行定義,然後再在所有組上進行平均。常用的基於度量的ranking錯誤率如下

  .MAP

  首先,suppose we have binary judgment for the documents, i.e., the label is one for relevant documents and zero for irrelevant documents,定義docs 排序列表 π 中位置 k 的 precision 爲

     

 其次,令m爲該query對應的docs數量,m_1爲該query對應的標籤爲1的docs數量,則有average precision(AP)爲

         

最後,對所有 query 求得 AP 進行平均,即得到 MAP。 

.NDCG

首先,Discounted cumulative gain (DCG)考量了relevance judgment in terms of multiple ordered categories,以及對位置信息進行了折扣考量。定義docs排序列表π中位置k的DCG爲

               

其中,函數G是對應doc的rating值,通常採用指數函數,如G(x)=2^x-1,函數η即位置折扣因子,通常採用η(j)=1/log(j+1)。

其次,對DCG@k 進行歸一化,規整到0-1,Z_k表示DCG@k的可能最大值,從而有NDCG

 

可以發現,這些評估指標具備兩大特性:

1.基於query,即不管一個query對應的docs排序有多糟糕,也不會嚴重影響整體的評價過程,因爲每組query-docs對平均指標都是相同的貢獻。

2.基於position,即顯示的利用了排序列表中的位置信息,這個特性的副作用就是上述指標是離散不可微的。

一方面,這些指標離散不可微,從而沒法應用到某些學習算法模型上;另一方面,這些評估指標較爲權威,通常用來評估基於各類方式訓練出來的ranking模型。因此,即使某些模型提出新穎的損失函數構造方式,也要受這些指標啓發,符合上述兩個特性纔可以。這些細節在後面會慢慢體會到。

1.2 Learning to Rank

Learning2Rank即將ML技術應用到ranking問題,訓練ranking模型。通常這裏應用的是判別式監督ML算法。經典L2R框架如下

 

. 特徵向量x反映的是某query及其對應的某doc之間的相關性,通常前面提到的傳統ranking相關度模型都可以用來作爲一個維度使用。

.L2R中使用的監督機器學習方法主要是判別式類

根據上圖的基本元素(輸入空間、假設空間、輸出空間、損失函數)方面的差異,L2R可以分爲三大類,pointwise類,pairwise類,listwise類。總結如下,後面章節將進行詳細說明。

2、Pointwise Approach

2.1特點

Pointwise類方法,其L2R框架具有以下特徵:

  •  輸入空間中樣本是單個doc(和對應query)構成的特徵向量
  •  輸出空間中樣本是單個doc(和對應query)的相關度;
  •  假設空間中樣本是打分函數;
  •  損失函數評估單個doc的預測得分和真實得分之間的差異。

這裏討論下,關於人工標註標籤怎麼轉換到pointwise類方法的輸出空間:

   1.如果標註直接是相關度s_j,則doc x_j的真實標籤定義爲y_j=s_j

   2.如果標註是pairwise preference s_{u,v},則doc x_j的真實標籤可以利用該doc擊敗了其他docs的頻次

   3.如果標註是整體排序 π,則doc x_j的真實標籤可以利用映射函數,如將doc的排序位置序號當作真實標籤

根據使用的ML方法不同,pointwisek類可以進一步分爲三類:基於迴歸的算法、基於分類的算法、基於有序迴歸的算法。下面詳細介紹。

2.2 基於迴歸的算法。

此時,輸出空間包含的是實值相關度得分。

採用ML中傳統的迴歸方法即可

2.3 基於分類的算法

此時,輸出空間包含的是無序類別。

對於二分類,SVM 、LR等均可;對於多分類,提升樹等均可。

2.4 基於有序迴歸的算法。

此時,輸出空間包含的是有序類別。

通常是找一個打分函數,然後用一系列閥值對得分進行分割,得到有序類別。採用PRanking、基於margin的方法都可以。

2.5 缺陷

回顧概述中提到的評估指標應該基於query和position,

  1. ranking追求的是排序結果,並不要求精準打分,只要有相對打分即可。
  2. pointwise類方法並沒有考慮同一個query對應的docs間的內部依賴性,一方面,導致輸入空間內的樣本不是ID的,違反了ML的基本假設,另一方面,沒有充分利用這種樣本間的結構性。其次,當不同query對應不同數量的docs時,整體loss將會對對應docs數量大的query組所支配,前面說過應該每組query都是等價的。
  3. 損失函數也沒有model到預測排序中的位置信息。因此,損失函數可能無意的過多強調那些不重要的docs,即那些排序在後面對用戶體驗影響小的doc.

2.6 改進

Pointwise類算法也可以再改進,比如在loss中引入基於query的正則化因子的RankCosine方法。

3.、Pairwise Approach

3.1 特點

  1. Pairwise類方法,其L2R框架具有以下特徵。
  2. 輸入空間中樣本是(同一query對應的)兩個doc(和對應query)構成的兩個特徵向量。
  3. 輸出空間中樣本是pairwise preference
  4. 假設空間中樣本是二變量函數
  5. 損失函數評估doc pair的預測preference和真實preference之間差異。

這裏討論下,關於人工標註標籤怎麼轉換到pairwise和真實preference之間差異。

2.6 改進

Pointwise類算法也可以再改進,比如在loss中引入基於query的正則化因子的RankCosine方法。

3、Pairwise Approach

3.1 特點

Pairwise類方法,其L2R框架具有以下特徵。

輸入空間中樣本是(同一query對應的)兩個doc(和對應query)構成的兩個特徵向量

輸出空間中樣本是pairwise preference

假設空間中樣本是二變量函數

損失函數評估doc pair的預測preference和真實preference之間差異

這裏討論下,關於人工標註標籤怎麼轉換到pairwise類方法的輸出空間:

  1.如果標註直接是相關度s_j,則doc pair(x_u,x_v)的真實標籤定義爲 y_{u,v}=2*I_{s_u>s_v}-1

  2.如果標註是pairwise preference s_{u,v},則doc pair(x_u,x_v) 的真實標籤定義爲y_{u,v}=s_{u,v}

  3.如果標註是整體排序π,則doc pair(x_u,x_v)的真實標籤定義爲y_{u,v}=2*I_{π_u,π_v}-1

3.2 基於二分類的算法

pairwise類方法基本就是使用二分類算法即可

經典的算法有基於NN的sortNet,基於NN的RankNet,基於fidelity loss的FRank,基於adaBoost的RabkBoost,基於SVM的RankingSVM,基於提升樹的GBRank.

3.3缺陷

雖然pairwise類相較pointwise類model到一些doc pair間的相對順序信息,但還是存在不少問題,回顧概述中提到的評估指標應該基於query和position

  1. 如果人工標註給定的是第一種和第三種,即已包含多有序類別,那麼轉換爲pairwise preference時必定會損失一些更細粒度的相關度標註信息。
  2. doc pair的數量將是doc數量的二次,從而pointwise類方法就存在的query間doc數量的不平衡性將在pairwise類方法中進一步放大。
  3. pairwise類方法相對pointwise類方法對噪聲標註更敏感,即一個錯誤標註會引起多個doc pair標註錯誤。
  4. pairwise類方法僅考慮了doc pair的相對位置,損失函數還是沒有model到預測排序中的位置信息。
  5. pairwise類方法也沒有考慮同一個query對應的doc pair間的內部依賴性,即輸入空間內的樣本並不是ID的,違反了ML的基本假設,並且也沒有充分利用這種樣本間的結構性。

3.4 改進

pairwise類方法也有一些嘗試,去一定程度解決上述缺點,比如:

Multiple hyperplane ranker,主要針對前述第一個缺陷

magnitude-preserving ranking,主要針對前述第一個缺陷

IRSVM,主要針對前述第二個缺陷

採用 Sigmoid 進行改進的 pairwise 方法,主要針對前述第三個缺陷

P-norm push,主要針對前述第四個缺陷

Ordered weighted average ranking,主要針對前述第四個缺陷

LambdaRank,主要針對前述第四個缺陷

Sparse ranker,主要針對前述第四個缺陷

4、Listwise Approach

4.1特點

Listwise類方法,其L2R框架具有以下特徵:

輸入空間中樣本是(同一query對應的)所有doc(與對應的query)構成的多個特徵向量(列表)

輸出空間中樣本是這些doc(和對應query)的相關度排序列表或者排列

假設空間中樣本是多變量函數,對於docs得到其排列,實踐中,通常是一個打分函數,根據打分函數對所有docs的打分進行排序得到docs相關度的排列。

損失函數分成兩類,一類是直接和評價指標相關的,還有一類不是直接相關的,具體後面介紹。

這裏討論下,關於人工標註標籤怎麼轉換到listwise類方法的輸出空間:

1、如果標註直接是相關度s_j,則doc set的真實標籤可以利用相關度s_j進行比較構造出排列

2.如果標註是pairwise preference s_{u,v},則doc set的真實標籤也可以利用所有s_{u,v}進行比較構造出排列

3.如果標註是整體排序π,則doc set則可以直接得到真實標籤

根據損失函數構造方式的不同,listwise類可以分成兩類直接基於評價指標的算法,間接基於評價指標的算法。下面詳細介紹。

4.2 直接基於評論指標的算法。

直接取優化ranking的評價指標,也算是listwise中哦最直觀的方法。但這並不簡單,因爲前面說過評價指標都是離散不可微的,具體處理方式有這麼幾種:

  1. 優化基於評價指標的ranking error的連續可微的近似,這種方法就可以直接應用已有的優化方法,如SoftRank,ApproximateRank,SmoothRank
  2. 優化基於評價指標的ranking error的連續可微的上界,如SVM-MAP,SVM-NDCG,PermulRank,
  3. 使用可以優化非平滑目標函數的優化技術,如AdaRank,RankGP

上述方法的優化目標都是直接和ranking的評價指標有關。現在來考慮一個概念,informativeness.通常認爲一個更有信息量的指標,可以產生更有效的排序模型。而多層評價指標(NDCG)相較二元評價(AP)指標通常更富信息量。因此,有時雖然使用信息量更少的指標來評估模型,但仍然可以使用更富信息量的指標來作爲loss進行模型訓練。

4.3 非直接基於評價指標的算法。

這裏,不再使用和評價指標相關的loss來優化模型,而是設計能衡量模型輸出與真實排序之間差異的loss,如此獲得的模型在評價指標上也能獲得不錯的性能。

經典的如,ListNet,ListMLE,StructRank,BoltzRank.

4.4 缺陷

listwise類相較pointwise、pairwise對ranking的model更自然,解決了ranking應該基於query和position問題。

listwise類存在的主要缺陷是:一些ranking算法需要基於排序來計算loss,從而使得訓練複雜度較高,如ListNet和BoltzRank.此外,位置信息並沒有在loss中得到充分利用,可以考慮在ListNet和ListMLE的loss中引入位置折扣因子。

5、總結

實際上,前面介紹完,可以看出來,這三大類方法主要區別在於損失函數。不同的損失函數知音了不同的模型學習過程和輸入輸出空間。

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章