RankNet
ranknet 是一個pairwise的排序模型,他相比pointwise把樣本排序問題只考慮query與doc的相關性改編爲文檔對的比較問題,更好的利用了樣本中的偏序關係html
排序機率
ranknet首先計算文檔對的排序關係,若有文檔對(d~i~, d~j~),而且文檔i與query的相關性大於文檔j的機率表示以下: 算法
同時ranknet證實了只要知道相鄰文檔的排序機率,就能夠推導出任何兩個文檔的排序機率,這樣能夠減小計算。
損失函數
其中
s表示文檔與query相關的得分,感興趣的能夠推導一下,這就是簡單的交叉熵損失函數。
計算總的損失還需加和全部的文檔對的損失,最後用梯度降低法求解函數
LambdaRank
圖中線條表示文檔,藍色線條表示相關文檔,直接經過位序減法獲得的損失左邊爲13,右邊爲11,在經常使用的排序指標如NDCG等,一般關注topK的排序,而對後面的排序不太關注,右邊黑色的箭頭表示ranknet下次梯度降低後的調整方向與強度,而咱們實際須要的是紅色箭頭這樣的調整,更關注top排序。爲此,研究人員分析了排序問題的梯度的物理意義,採起了直接定義梯度,而不是經過定義損失函數求解的方法。
首先,對原有損失函數求梯度分析,分解因式鏈式求導 3d
在訓練數據中,通常要求S~ij~=1,因此
以前說了,LambdaRank再也不顯式定義損失函數,再求梯度,而是直接定義梯度,而後反推損失函數。 這裏經過前述對原損失函數的求解,LambdaRank直接定義
加的因子考慮了交換文檔i和文檔j的排序後的NDCG的變化,而後反推損失函數以下
LambdaRank相比RankNet的優點在於分解因式後訓練速度變快,同時考慮了評價指標,直接對問題求解,效果更明顯。
LambdaMART
LambdaRank從新定義了梯度,賦予了梯度新的物理意義,所以,全部能夠採用梯度降低法求解的模型均可以使用這個梯度,MART就是其中一種cdn
要搞懂這個算法步驟,建議先看看GBDT的推導原理,基本相同。 其中單個文檔的lambda htm
獲得後計算其對w~i~的導數,用於採起牛頓法求解葉子結點的輸出值,同時建立新的迴歸數擬合梯度,更新模型
提供一個講解GBDT推導比較好的博客鏈家 www.cnblogs.com/ScorpioLu/p…blog