學習排序 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 processing》。


1、概述

1.1 Ranking

Ranking 模型可以粗略分爲基於相關度和基於重要性進行排序的兩大類。
早期基於相關度的模型,通常利用 query 和 doc 之間的詞共現特性(如布爾模型)、VSM(如 TFIDF、LSI 等)、概率排序思想(BM25、LMIR 等)等方式。
基於重要性的模型,利用的是 doc 本身的重要性,如 PageRank、TrustRank 等。
這裏我們關注基於相關度的 ranking。

相關度的標註

  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 方法不同,pointwise 類可以進一步分成三類:基於迴歸的算法、基於分類的算法,基於有序迴歸的算法。下面詳細介紹。

2.2 基於迴歸的算法

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

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

2.3 基於分類的算法

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

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

2.4 基於有序迴歸的算法

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

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

2.5 缺陷

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

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

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 的 RankBoost,基於 SVM 的 RankingSVM,基於提升樹的 GBRank。

3.3 缺陷

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

  • 如果人工標註給定的是第一種和第三種,即已包含多有序類別,那麼轉化成 pairwise preference 時必定會損失掉一些更細粒度的相關度標註信息。
  • doc pair 的數量將是 doc 數量的二次,從而 pointwise 類方法就存在的 query 間 doc 數量的不平衡性將在 pairwise 類方法中進一步放大。
  • pairwise 類方法相對 pointwise 類方法對噪聲標註更敏感,即一個錯誤標註會引起多個 doc pair 標註錯誤。
  • pairwise 類方法僅考慮了 doc pair 的相對位置,損失函數還是沒有 model 到預測排序中的位置信息。
  • pairwise 類方法也沒有考慮同一個 query 對應的 doc pair 間的內部依賴性,即輸入空間內的樣本並不是 IID 的,違反了 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 中最直觀的方法。但這並不簡單,因爲前面說過評價指標都是離散不可微的,具體處理方式有這麼幾種:

  • 優化基於評價指標的 ranking error 的連續可微的近似,這種方法就可以直接應用已有的優化方法,如SoftRank,ApproximateRank,SmoothRank
  • 優化基於評價指標的 ranking error 的連續可微的上界,如 SVM-MAP,SVM-NDCG,PermuRank
  • 使用可以優化非平滑目標函數的優化技術,如 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、總結

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

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