Listwise是對query下的整個文檔集合進行排序。Listwise的算法大致可以分為兩種将饺,一種是直接想辦法去優(yōu)化NDCG串塑、MAP這些評價指標,另一種是去自定義優(yōu)化損失函數(shù)茅姜。NDCG與MAP這些基于排序位置來計算的指標是不連續(xù)、不可微的跺涤。第一種方法是想辦法將這些評價指標轉(zhuǎn)化為連續(xù)可微的近似指標匈睁,然后去優(yōu)化。在這里我們介紹第二種方法中的ListNet算法桶错。ListNet的損失函數(shù)是用這種排列下的概率分布來定義的。使用的概率分布是Plackett–Luce model胀蛮。
假設(shè)一共有m篇文檔院刁,π代表一種排列方式,s代表一種打分函數(shù)粪狼。則有該排列方式出現(xiàn)的概率為
代表文檔被排在第j位置的分數(shù)退腥,是一種轉(zhuǎn)換函數(shù),可以為線性指數(shù)或者sigmoid形式再榄。
觀察后面的式子狡刘,含義可以看作,一個文檔有可能排在1-m各個位次困鸥,該式是這個文檔排在第j位的概率嗅蔬。將所有位置的文檔排列在該位置的概率乘起來剑按,就是這個排列出現(xiàn)的概率。
書中指到澜术,plackett-luce模型在一定條件下具有尺度不變性和平移不變性艺蝴。例如,當我們使用指數(shù)函數(shù)作為轉(zhuǎn)換函數(shù)時鸟废,在將相同的常數(shù)添加到所有排名分數(shù)之后猜敢,plackett–luce模型定義的排列概率分布將不會改變。當我們使用線性函數(shù)作為轉(zhuǎn)換函數(shù)時盒延,所有的排名分數(shù)乘以相同的常數(shù)后缩擂,排列概率分布不會改變。這些特性與我們的對排名的直覺相近添寺。
在這個概率定義以后撇叁,用KL散度或者交叉熵來衡量某排列與ground truth的差異。
書中提到畦贸,這樣計算出的損失函數(shù)與真實的NDCG損失是相關(guān)性很強的陨闹,可以看作是一種不錯的替代。由于排列組合的多樣性薄坏,該算法在完整排列上應用起來計算量很大趋厉,所以一般只計算TOP-K的出現(xiàn)概率。
簡書怎么老是吞字胶坠,服了君账。。沈善。
Pointwise的不足之處:
Pointwise使用傳統(tǒng)的分類乡数,回歸或者OrdinalRegression來對給定query下的單個文檔的相關(guān)度進行建模,沒有文檔位置對排序結(jié)果的影響闻牡,而回歸和分類的損失函數(shù)會盡量擬合所有的數(shù)據(jù)净赴,算法為了整體損失最小,有可能把排在前面的文檔的損失變得更大罩润,或者把排在后面的文檔的損失變得更小玖翅,從而導致排序難以取得良好的效果。
Pairwise的不足:
文檔較多時割以,pair的數(shù)目是平方級增長的金度,計算量太大;Pair對不同級別之間的區(qū)分度一致對待严沥,沒有對排在前面的結(jié)果作更好的區(qū)分猜极。對于搜索引擎而言,用戶更傾向于點擊前幾頁的結(jié)果消玄;相關(guān)文檔集大小帶來模型的偏置跟伏。如果一個query下文檔遠多于另一query丢胚,支持向量就會向該query偏置,導致分類器對后者區(qū)分不好酬姆。
個人感覺ListNet由于計算量以及數(shù)據(jù)準備困難的問題嗜桌,線上應該比較難實現(xiàn).lambdaMART考慮到了排序位置的因素,某種意義上也算是一種Listwise算法辞色,而且可以直接調(diào)包骨宠,應該是線上最常見的一種排序算法。