再理解RankNet算法
生活随笔
收集整理的這篇文章主要介紹了
再理解RankNet算法
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
再理解RankNet算法 前面的一篇博文介紹了學(xué)習(xí)排序算法(Learning to Rank)中的RankNet算法。如下:http://blog.csdn.net/puqutogether/article/details/42124491 那次的入門(mén)對(duì)其中的算法流程和基本原理沒(méi)有深入了解,這次看自動(dòng)摘要提取算法的時(shí)候,里面有一個(gè)排序單元,使用到的就是學(xué)習(xí)排序算法中的RankNet,這個(gè)時(shí)候才理解了。這就說(shuō)明,有的時(shí)候回過(guò)頭來(lái)看某些算法,你的認(rèn)識(shí)會(huì)加深的。 好了,這次主要說(shuō)一下RankNet這個(gè)算法的基本流程和原理。 RankNet算法是從概率的角度解決排序問(wèn)題。 首先,我們需要求得的是一個(gè)排序函數(shù),就是當(dāng)我們輸入樣本的特征向量的時(shí)候,可以輸出該樣本的順序“得分”,實(shí)現(xiàn)排序。在RankNet中,排序函數(shù)定義為一個(gè)三層的神經(jīng)網(wǎng)絡(luò)模型。輸入層和樣本特征維數(shù)有關(guān),輸出層是一個(gè)節(jié)點(diǎn)(得分),排序函數(shù)定義為:其中權(quán)值參數(shù)w和偏置參數(shù)b的上標(biāo)表示節(jié)點(diǎn)所在的層,下標(biāo)表示同一層中節(jié)點(diǎn)的編號(hào);x_n_k表示特征向量x_n的第k個(gè)分量,這是是輸入到輸入層的。f_x_n的輸出就是一個(gè)得分。 然后,由于RankNet是一個(gè)pairwise的排序?qū)W習(xí)算法,把樣本兩兩組成一個(gè)pair,對(duì)于一個(gè)pair,有兩個(gè)概率需要定義,一個(gè)是預(yù)測(cè)概率:其物理意義就是第i個(gè)樣本排在第j個(gè)樣本前面的概率,其中的s_i和s_ j的都是前面排序函數(shù)的輸出得分。還有一個(gè)概率是真實(shí)概率,定義如下: 其中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. 然后,基于交叉熵函數(shù)建立RankNet算法的損失函數(shù),并用梯度下降法解決。如下:上式我們可以化簡(jiǎn),如下:(好吧,天氣寒冷,手抖……)也就是下面這個(gè)式子: 最后,我們讓損失函數(shù)C對(duì)排序函數(shù)中的w求導(dǎo),可以得到:=》=》代入可得損失函數(shù)C關(guān)于w的偏導(dǎo)了,這樣就可以使用梯度下降法了。最終求得排序函數(shù)f_x_n。 可以看書(shū),RankNet算法在學(xué)習(xí)過(guò)程中,用到了一對(duì)樣本之間的關(guān)系,主要在預(yù)測(cè)概率部分,所以它是一個(gè)pairwise的方法。參考:http://blog.csdn.net/puqutogether/article/details/42124491From RankNet to LambdaRank to LambdaMART: An Overview Christopher J.C. Burgeshttp://blog.csdn.net/huagong_adu/article/details/40710305
總結(jié)
以上是生活随笔為你收集整理的再理解RankNet算法的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 无约束最优化方法-牛顿法
- 下一篇: LambdaMART简介——基于Rank