轉:http://hi.baidu.com/christole/item/23215e364d8418f896f88deb網絡
What is Rank?機器學習
rank就是排序。IR中須要排序的問題不少,最多見的的就是給一個query,對候選的documents排序,返回top-k給用戶。另外,QA任務中最後也要對候選的A排序,query feedback, KEA等任務也都涉及rank。函數
what is learning ro rank?學習
用machine learning 理論來解決rank的問題。優化
Conventional method for rankingspa
以前咱們都採用retrieval model 來解決ranking 問題的。這是IR最基本的理論,隨便翻開一本IR的書,都有一章叫作retrieval model。常見的retrieval model 有Bool model,vector space model ,Language model等等。對象
Problems of conventional methods排序
1. 很難融合多種信息。如基於vector space model 以tf-idf做爲權重,可能就很難用上其餘信息了;基於language model 除了計算p(q | D),也很難結合其餘信息了。文檔
2. 缺少深厚的理論支持。還如vector space model經過計算向量間的餘弦類似度,看似有道理,可是否有道理,或是否對於每種狀況都是準確的,沒人能夠證實;經常使用的一元language model假設bags of words又有多少道理?若是模型中須要設定參數,那隻能手工調整出經驗參數,那麼是否準確,是否over-fitting,很難講了。it
Machine learning can help
1. 機器學習方法很容易融合信息(特徵)。
2. 機器學習有成熟又深厚的理論基礎。參數是經過迭代優化出來的。有一套成熟的理論解決,稀疏,過擬合,優化等問題。(固然機器學習也有一些缺陷了)
Methods
通常常說的有三類方法pointwise,pairwise,listwise。
(1) pointwise
如給定q1時document正確的順序爲d3,d2,d1。pointwise方法着眼於優化每一個q,d對:{q1,d3,3},{q1,d2,2},{q1,d1,1}。
(2)pairwise
pairwise將順序d3,d2,d1當作{d3 , d2,+1},{d2 , d1,+1},{d3 , d1,+1}。以後進行優化。
最多見的pairwise方法是Ranking SVM。它的優化過程和SVM很是類似。只是SVM要優化出一個超平面w.x+b=0,它的約束條件是y(w.x+b)>1。而Ranking SVM要優化出一個排序函數f(x),它的約束條件是y.f(x,w)>1,其餘過程都相同。
(3)listwise
與pointwise不一樣的地方是,listwise將document當作一個list或permutation,如以前的{d1,d2,d3}當作一個排列d1d2d3,固然空間內一共有六種不一樣的排列,每種排列都會有一個機率,如何從d1,d2,d3的score值f1,f2,f3,求得分佈的機率p(d1d2d3),能夠用到plackett-luce model。
listwise方法通常從創建objective function角度不一樣分爲最小化loss function和直接優化IR meature(MAP,NDCG)兩類方法。一些學者證實兩者的關係,一些IR meature 的變形如(1-NDCG)是loss function 的上界。而因爲直接優化IR meature的方法缺少些理論支持,又一些meature是非連續的,不便於優化,因此經過優化loss function 的方法更被接受。下面是三種主流的基於loss function 的方法,都是MSRA提出的。
RankCosine (IP&M 2007) 以truth rank和所得的rank間的cosine類似度做爲loss function。
ListNet(ICML2007)以truth rank和所得的rank排列間的KL距離做爲loss function。
ListMLE(ICML2008)以似然函數做爲loss function。
合理的loss function 是機器學習的關鍵,提出ListMLE的文章一樣介紹了什麼樣的loss function 纔是好的。有了loss funtion 以後學習的過程就比較常規了,通常採用神經網絡,優化參數用gradient decent。
Problems
Learning to Rank 是利用machine learning 的理論來解決IR中Rank的問題,Rank任務是根據某個標準(通常是指文檔和查詢的匹配程度)對對象進行排序,顯然Rank是IR最核心的部分。Learning to rank任務使IR任務增長了理論深度也使ML理論獲得了應用,理應是個很好的研究方向。
固然,起初Learning to rank 成爲各大實驗室爭相研究的方向,短短几年時間,關於它的高水平的論文就有百篇。最近Learning to rank彷佛遇到了些瓶頸...
1. Learning to rank通常是監督學習,實際應用的話,訓練語料是個問題,畢竟語料須要包含q與d的 relevance level。另外,機器學習存在一些固有的問題。
2. 複雜度問題。
3. 大部分研究創建在特徵相同的前提下,惟一關注的是如何學習出一個排序函數,那麼實際應用時究竟是合理的特徵更重要仍是學習排序函數更重要,在特徵固定的前提下,經過好的排序函數,整體效果會有很大提升嗎?
4. 傳統的Retrieval model 是考慮在創建model時如何更好的更充分合理的利用q與d的機率信息,如今把全部的q與d的信息和link信息等等,都轉化成向量形式,而將所有的精力放在學習函數上,是否使路越走越窄呢?
MSRA的LETOR小組最近一年也沒有提出任何新的方法,他們最新的方法是ICML08的ListMLE了,近年的論文都是些理論證實了。
其實,learning to rank 將ML用在IR上,是個很好的思路,咱們不該該只侷限於某個任務或語料,Ranking是大部分IR任務的核心,咱們能夠經過ML的思想來解決某個實際問題。如MSRA 在sigir 09有一篇應用Ranking SVM 作關鍵詞提取任務的文章。
我認爲應該把更多的精力放在learning to rank的實際應用,而不僅是理論研究。畢竟能夠應用的研究纔有價值。