2011年4月27日 星期三

Learning to rank - from pairwise approach to listwise approach

Learning to rank - from pairwise approach to listwise approach

Summary:
作者使用了一個新的概念來定義ranking的這個問題,本來使用的方法都是用pairwise的方式,例如上次指定的SVR中定義兩個input的feature的差來當作一個classifier的input之類,都是一次處理兩個sample的方式。但是這篇使用了一個使用list的方式來處理,其方法如下。
首先,對應到一個query時,每一個原有的document都會有一個相對關係的答案值(y),而此時作者定義將一個query和一個document視為一個feature vector x,經過一個ranking function f(.)後,可以得到一個值f(x),對應到一個query時會列出一堆document而產生一個list of score (x),而將這個z和原來給定的y透過一個listwise loss function來計算後,就可以算出這個z作ranking的效果了。
而要如何定義這個listwise loss function呢? 作者先定義了一個permutation probability,這一個permutation probability可以計算出一組排列的機率值,由於其定義的方式,使得在score較大要排在較前方,score較小的要排在較後面,如此會得到一個較高的機率值。透過此一function,就可以比較不同排列組合下的好壞之分。但是因為要計算出全部的排列組合數將是一個O(n!)的問題,在實際上是可個不太可行的作法,作者又定義了另外一個function叫作top k probability,只會對排在前面K個順序的object來作計算,而在經過一些計算上的轉換,這個top k probability就可以很有效率的被計算出來。
有了這些function之後,作者就定義listwise loss function為兩個機率分布間的cross entropy,也就是L(y,z)=-ΣPy*log(Pz)。
有了這個listwise loss function,作者便利用neural network作為model,gradient descent當作optimization的方法,來達到learning的效果,並稱此方法為ListNet。有趣的一點是,當每個query對應到的document只有2個的時候,其實這個方法就等同於RankNet了!不過在之後的實驗部分,作者也證明了以listwise的方法去作ranking其實效果會優於pairwise所作出來的效果。

沒有留言:

張貼留言