機器學習之排序學習


Learn to Rank

排序學習主要用於搜索引擎,推薦系統等領域。

對於傳統的排序算法,一般只能根據少量特征,然后通過人為設定的規則,來進行文檔的全量排序。

然而對於排序涉及大量的特征,而且這些特征難以人為的編輯規則來進行文檔和文檔之間的比較,這就出現了排序學習。

排序學習通過以特征和文檔為輸入,通過機器學習或者神經網絡的方法,最終輸出對於某個查詢,每個文檔的相關度分數,進而實現可以進行對文檔的排序。

范式

  • 查詢集合Q = {q1, q2 .... qn}
  • 文檔集合D
  • 與第 i 個查詢 qi 相關的文檔Di = {d1 .... dm}
  • 得到結果:相關性分數 y = {y1 ... ym}

l2r-model

類別

PointWise

l2r-pointwise
L2R-pointwise-rank

優點

  • 可以直接利用現有的回歸和分類的理論和算法

缺點

  • 對於同一label級別的文檔,無法進行排序,導致某些不重要的文檔排在前面
  • 訓練的時候僅考慮了當前文檔的特征,忽略了本文檔與其他文檔的差別訓練

PairWise

l2r-pairwise-model
輸出的0/1代表doc1是否大於doc2

優點

可以直接應用以后的分類算法

缺點

  • 僅考慮了文檔對的相對次序,很難推出列表的全序
  • 如果前面的文檔對判斷錯誤,會直接導致后面的文檔對判斷錯誤

RankNet

L2R-pairwise

ListWise

i2r-listwise

NDCG理解

  • rel:查詢q與文檔的相關度
  • CG:了耳機增益,在top-n下,rel的累加
  • DCG:折損累計增益,在top-n下,rel乘以一個隨位置的衰減值,表示越靠前的,權重越大,越靠后的,影響越小
  • IDCG:理想的DCG值,一般為訓練預期結果的DCG值
  • NDCG:預測的DCG/IDCG
模型輸出的DCG值
i reli log2(i+1) reli /log2(i+1)
1 3 1 3
2 2 1.58 1.26
3 3 2 1.5
4 0 2.32 0
5 1 2.58 0.38
6 2 2.8 0.71
IDCG:(通過排名rel值得到)
i reli log2(i+1) reli /log2(i+1)
1 3 1 3
2 3 1.58 1.89
3 3 2 1.5
4 2 2.32 0.86
5 2 2.58 0.77
6 1 2.8 0.35
非連續性

可以看出,IDCG是固定的,對DCG的優化過程,DCG的值呈現跳躍性改變,因此DCG是非連續函數,這導致以NDCG為代表的損失函數,很難使用現代的優化算法來優化。

lambda梯度

由於NDCG的非連續性,這就引入了lambda為梯度的損失函數

lambda損失

  • 通過定義loss的梯度,不需要通過求導,而是直接求得lambda的梯度,然后通過反向傳播到上層的model,優化模型的參數,這樣就避免了最后的loss是非連續函數不可導的缺點
  • 最后梯度=lambda(i)
  • lambda>0,則趨於上升
  • lambda<0,則趨於下降
lambda計算
  • 計算DCG
  • 計算IDCG
  • 計算deltaNDCG = |NDCG - NDCG(swap(i, j))|
  • lambda(i) = deltaNDCG(i>j) - deltaNDCG(i<j)


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM