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,
- ranking追求的是排序結果,並不要求精準打分,只要有相對打分即可。
- pointwise類方法並沒有考慮同一個query對應的docs間的內部依賴性,一方面,導致輸入空間內的樣本不是ID的,違反了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和真實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
- 如果人工標註給定的是第一種和第三種,即已包含多有序類別,那麼轉換爲pairwise preference時必定會損失一些更細粒度的相關度標註信息。
- doc pair的數量將是doc數量的二次,從而pointwise類方法就存在的query間doc數量的不平衡性將在pairwise類方法中進一步放大。
- pairwise類方法相對pointwise類方法對噪聲標註更敏感,即一個錯誤標註會引起多個doc pair標註錯誤。
- pairwise類方法僅考慮了doc pair的相對位置,損失函數還是沒有model到預測排序中的位置信息。
- 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中哦最直觀的方法。但這並不簡單,因爲前面說過評價指標都是離散不可微的,具體處理方式有這麼幾種:
- 優化基於評價指標的ranking error的連續可微的近似,這種方法就可以直接應用已有的優化方法,如SoftRank,ApproximateRank,SmoothRank
- 優化基於評價指標的ranking error的連續可微的上界,如SVM-MAP,SVM-NDCG,PermulRank,
- 使用可以優化非平滑目標函數的優化技術,如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、總結
實際上,前面介紹完,可以看出來,這三大類方法主要區別在於損失函數。不同的損失函數知音了不同的模型學習過程和輸入輸出空間。