再理解RankNet演算法
再理解RankNet演算法
前面的一篇博文介紹了學習排序演算法(Learning to Rank)中的RankNet演算法。如下:
http://blog.csdn.net/puqutogether/article/details/42124491
那次的入門對其中的演算法流程和基本原理沒有深入瞭解,這次看自動摘要提取演算法的時候,裡面有一個排序單元,使用到的就是學習排序演算法中的RankNet,這個時候才理解了。這就說明,有的時候回過頭來看某些演算法,你的認識會加深的。
好了,這次主要說一下RankNet這個演算法的基本流程和原理。
RankNet演算法是從概率的角度解決排序問題。
首先,我們需要求得的是一個排序函式,就是當我們輸入樣本的特徵向量的時候,可以輸出該樣本的順序“得分”,實現排序。在RankNet中,排序函式定義為一個三層的神經網路模型。輸入層和樣本特徵維數有關,輸出層是一個節點(得分),排序函式定義為:
其中權值引數w和偏置引數b的上標表示節點所在的層,下標表示同一層中節點的編號;x_n_k表示特徵向量x_n的第k個分量,這是是輸入到輸入層的。f_x_n的輸出就是一個得分。
然後,由於RankNet是一個pairwise的排序學習演算法,把樣本兩兩組成一個pair,對於一個pair,有兩個概率需要定義,一個是預測概率:
其物理意義就是第i個樣本排在第j個樣本前面的概率,其中的s_i和s_ j的都是前面排序函式的輸出得分。
還有一個概率是真實概率,定義如下:
其中For a given query, let S_i_ j∈ {0, ±1} be defined to be 1 if document i has been labeled to be more relevant than document j, −1 if document i has been labeled to be less relevant than document j, and 0 if they have the same label.
然後,基於交叉熵函式建立RankNet演算法的損失函式,並用梯度下降法解決。如下:
上式我們可以化簡,如下:
(好吧,天氣寒冷,手抖……)
也就是下面這個式子:
最後,我們讓損失函式C對排序函式中的w求導,可以得到:
=》
=》
代入可得損失函式C關於w的偏導了,這樣就可以使用梯度下降法了。
最終求得排序函式f_x_n。
可以看書,RankNet演算法在學習過程中,用到了一對樣本之間的關係,主要在預測概率部分,所以它是一個pairwise的方法。
參考:
http://blog.csdn.net/puqutogether/article/details/42124491
From RankNet to LambdaRank to LambdaMART: An Overview Christopher J.C. Burges
http://blog.csdn.net/huagong_adu/article/details/40710305
相關文章
- 學習排序演算法(二):Pairwise方法之RankNet排序演算法AI
- Java三大特性再理解Java
- react 的高階元件再理解React元件
- 演算法金 | 再見!!!KNN演算法KNN
- PLSA模型的再理解以及原始碼分析模型原始碼
- 深入理解JVM(③)再談執行緒安全JVM執行緒
- 再理解es6 中的 class super extends
- KNN演算法理解KNN演算法
- 演算法金 | 再見!!!K-means演算法
- 演算法金 | 再見,支援向量機 SVM!演算法
- Shiro原理解析(三)--再談過濾器過濾器
- SpringBoot-04-自動配置原理再理解Spring Boot
- LRU演算法原理解析演算法
- 1.2.1 理解LALR解析演算法演算法
- Paxos演算法的通俗理解演算法
- 我理解的 KMP 演算法KMP演算法
- RSA演算法,自己的理解!演算法
- 演算法金 | 再見,PCA 主成分分析!演算法PCA
- 深入理解React:diff 演算法React演算法
- Vue中diff演算法的理解Vue演算法
- 我對Kosaraju演算法的理解演算法
- 簡單理解Paxos演算法(譯)演算法
- php查詢演算法的理解PHP演算法
- React中diff演算法的理解React演算法
- 如何更好理解Peterson演算法?演算法
- 遞迴 & 分治演算法深度理解遞迴演算法
- 深入理解React Diff演算法React演算法
- 理解JVM(二):垃圾收集演算法JVM演算法
- 【總結】理解KMP演算法思想KMP演算法
- 再來理解一下殺手級新特性:gtid
- 商城商品3層選項演算法再優化演算法優化
- 如何感性地理解EM演算法?演算法
- 反向傳播演算法的暴力理解反向傳播演算法
- 對CAS演算法的簡單理解演算法
- 理解快速傅立葉變換(FFT)演算法FFT演算法
- KMP字串匹配演算法 通俗理解KMP字串匹配演算法
- 關於 一合相 的再進一步的理解。
- 匹配字串之——KMP演算法深入理解字串KMP演算法