機器學習排序算法:RankNet to LambdaRank to LambdaMART

使用機器學習排序算法LambdaMART有一段時間了,但一直沒有真正弄清楚算法中的全部細節。html

學習過程當中細讀了兩篇不錯的博文,推薦給你們:算法

梯度提高樹(GBDT)原理小結網絡

徐博From RankNet to LambdaRank to LambdaMART: An Overviewiphone

但通過一番搜尋以後發現,目前網上並無一篇透徹講解該算法的文章,因此但願這篇文章可以達到此目的。機器學習

本文主要參考微軟研究院2010年發表的文章From RankNet to LambdaRank to LambdaMART: An Overview11,並結合本身的理解,試圖將RankNet、LambdaRank和LambdaMART這三種算法的全部算法細節講解透徹。函數

1. 概述

RankNet、LambdaRank和LambdaMART是三個關係很是緊密的機器學習排序算法。簡而言之,RankNet是最基礎,基於神經網絡的排序算法;而LambdaRank在RankNet的基礎上修改了梯度的計算方式,也即加入了lambda梯度;LambdaMART結合了lambda梯度和MART(另稱爲GBDT,梯度提高樹)。這三種算法在工業界中應用普遍,在BAT等國內大廠和微軟谷歌等世界互聯網巨頭內部都有大量應用,還曾經贏得「Yahoo!Learning To Rank Challenge(Track 1)"的冠軍。本人認爲若是評選當今工業界中三種最重要的機器學習算法,以LambdaMART爲表明的集成學習算法確定佔有一席之地,另外兩個分別是支持向量機和深度學習。學習

2. RankNet

2.1 算法基礎定義優化

RankNet解決以下搜索排序問題:給定query集合,每一個query都對應着一個文檔集合,如何對每一個query返回排序後的文檔集合。能夠想象這樣的場景:某位高考生在得知本身的成績後,準備報考志願。據說最近西湖大學辦得不錯,因此就想到網上搜搜關於西湖大學的資料。他打開一個搜索引擎,輸入「西湖大學」四個字,而後點擊「搜索」,頁面從上到下顯示了10條搜索結果,他認爲排在上面的確定比下面的相關,因此就開始從上往下一個個地瀏覽。因此RankNet的目標就是對全部query,都能將其返回的文檔按照相關性進行排序。搜索引擎

RankNet網絡將輸入query的特徵向量xRnx∈Rn映射爲一個實數f(x)Rf(x)∈R。RankNet採用pairwise的方法進行模型訓練。具體地,給定特定query下的兩個文檔UiUi和UjUj,其特徵向量分別爲xixi和xjxj,通過RankNet進行前向計算獲得對應的分數爲si=f(xi)si=f(xi)和sj=f(xj)sj=f(xj)。用UiUjUi⊳Uj表示UiUi比UjUj排序更靠前(如對某個query來講,UiUi被標記爲「good」,UjUj被標記爲「bad」)。繼而能夠用下面的公式來表示UiUi應該比UjUj排序更靠前的機率:atom

PijP(UiUj)11+eσ(sisj)Pij≡P(Ui⊳Uj)≡11+e−σ(si−sj)

這個機率實際上就是深度學習中常用的sigmoid函數,參數σσ決定sigmoid函數的形狀。對於特定的query,定義Sij{0,±1}Sij∈{0,±1}爲文檔ii和文檔jj被標記的標籤之間的關聯,即

 

 

Sij=⎧⎩⎨101ijijjiSij={1文檔i比文檔j更相關0文檔i和文檔j相關性一致−1文檔j比文檔i更相關

 

定義P¯¯¯¯ij=12(1+Sij)P¯ij=12(1+Sij)表示UiUi應該比UjUj排序更靠前的已知機率,則能夠用交叉熵定義優化目標的損失函數:

C=P¯¯¯¯ijlogPij(1P¯¯¯¯ij)log(1Pij)C=−P¯ijlogPij−(1−P¯ij)log(1−Pij)

 

若是不太熟悉什麼是交叉熵,能夠參考宗成慶老師的《統計天然語言處理》2.2節「信息論基本概念」,裏面將熵、聯合熵、互信息、相對熵、交叉熵和困惑度等概念都講得至關清楚。

結合以上多個公式,能夠改寫損失函數CC爲:

C=12(1Sij)σ(sisj)+log(1+eσ(sisj))C=12(1−Sij)σ(si−sj)+log(1+e−σ(si−sj))

 

對於Sij=1Sij=1,

C=log(1+eσ(sisj))C=log(1+e−σ(si−sj))

 

然而對於Sij=1Sij=−1,

C=log(1+eσ(sjsi))C=log(1+e−σ(sj−si))

 

能夠看出損失函數CC具備對稱性,也即交換ii和jj的位置,損失函數的值不變。

分析損失函數CC的趨勢發現,若是對文檔UiUi和UjUj的打分能夠正確地擬合標記的標籤,則CC趨向於0,不然CC趨向於線性函數。具體地,假如Sij=1Sij=1,也即UiUi應該比UjUj排序高,若是si>sjsi>sj,則擬合的分數能夠正確排序文檔ii和文檔jj,

limsisjC=limsisjlog(1+eσ(sisj))=log1=0limsi−sj→∞C=limsi−sj→∞log(1+e−σ(si−sj))=log1=0

 

若是si<sjsi<sj,則擬合的分數不能正確排序文檔ii和文檔jj,

limsisjC=limsisjlog(1+eσ(sisj))=log(eσ(sisj))=σ(sisj)limsi−sj→∞C=limsi−sj→∞log(1+e−σ(si−sj))=log(e−σ(si−sj))=−σ(si−sj)

 

利用神經網絡對模型進行訓練,目前最有效的方法就是反向傳播算法。反向傳播算法中最核心部分就是損失函數對模型參數的求導,而後可使用下面的公式對模型參數進行迭代更新:

 

wkwkηCwk=wkη(Csisiwk+Csjsjwk)wk←wk−η∂C∂wk=wk−η(∂C∂si∂si∂wk+∂C∂sj∂sj∂wk)

 

損失函數CC對sisi和sjsj的偏導數爲:

Csi=σ(12(1Sij)11+eσ(sisj))=Csj∂C∂si=σ(12(1−Sij)−11+eσ(si−sj))=−∂C∂sj

 

sisi和sjsj對wkwk的偏導數可根據神經網絡求偏導數的方式求得。求得了損失函數CC對神經網絡模型參數wkwk的偏導數以後,就可使用梯度降低算法對其更新。這裏的學習率ηη也是一個正數,由於ηη須要知足下面的不等式:

δC=kCwkδwk=kCwk(ηCwk)=ηk(Cwk)2<0δC=∑k∂C∂wkδwk=∑k∂C∂wk(−η∂C∂wk)=−η∑k(∂C∂wk)2<0

 

2.2 RankNet分解形式:加速RankNet訓練過程

2.1節中定義的RankNet,對於每個文檔對(Ui(Ui,Uj)Uj)都將計算損失函數對神經網絡的參數wkwk的偏導數,而後更新模型參數wkwk。這樣作的缺點在於,對模型參數更新慢,耗時長。因此本節講解如何經過分解組合的方式加快這一訓練過程。

對於給定的文檔對UiUi和UjUj,損失函數CC對參數wkwk的偏導數爲:

Cwk=Csisiwk+Csjsjwk=σ(12(1Sij)11+eσ(sisj))(siwksjwk)=λij(siwksjwk)∂C∂wk=∂C∂si∂si∂wk+∂C∂sj∂sj∂wk=σ(12(1−Sij)−11+eσ(si−sj))(∂si∂wk−∂sj∂wk)=λij(∂si∂wk−∂sj∂wk)

 

其中:

λij=C(sisj)si=σ(12(1Sij)11+eσ(sisj))λij=∂C(si−sj)∂si=σ(12(1−Sij)−11+eσ(si−sj))

 

定義II爲索引對{i,j}{i,j}的集合,在不損失信息量的狀況下,能夠將集合II中的索引對都轉換成知足UiUjUi⊳Uj的形式。另外集合II中的索引對還應該知足最多隻出現一次的條件。在此基礎上,累加權重參數wkwk的更新量:

δwk=η(i,j)I(λijsiwkλijsjwk)=ηiλisiwkδwk=−η∑(i,j)∈I(λij∂si∂wk−λij∂sj∂wk)=−η∑iλi∂si∂wk

 

其中:

λi=j:{i,j}Iλijj:{j,i}Iλijλi=∑j:{i,j}∈Iλij−∑j:{j,i}∈Iλij

 

通俗地說,λiλi就是集合II中全部{i,j}{i,j}的λijλij的和−集合II中全部{j,i}{j,i}的λijλij的和。若是仍是不太明白,那看下面這個例子就明白了。集合I={{1,2},{2,3},{1,3}}I={{1,2},{2,3},{1,3}},則

 

δwk=η{i,j}I(λijsiwkλijsjwk)=η(λ12s1wkλ12s2wk+λ13s1wkλ13s3wk+λ23s2wkλ23s3wk)=η((λ12+λ13)s1wk+(λ23λ12)s2wk+(λ23λ13)s3wk)δwk=−η∑{i,j}∈I(λij∂si∂wk−λij∂sj∂wk)=−η(λ12∂s1∂wk−λ12∂s2∂wk+λ13∂s1∂wk−λ13∂s3∂wk+λ23∂s2∂wk−λ23∂s3∂wk)=−η((λ12+λ13)∂s1∂wk+(λ23−λ12)∂s2∂wk+(−λ23−λ13)∂s3∂wk)

 

因而能夠獲得λ1=λ12+λ13λ1=λ12+λ13,λ2=λ23λ12λ2=λ23−λ12,λ3=λ23λ13λ3=−λ23−λ13

λiλi能夠當作是做用在排序文檔上的力,其正負表明了方向,長度表明了力的大小。最初的實現是對每一個文檔對,都計算一遍梯度而且更新神經網絡的參數值,而這裏則是將同一個query下的全部文檔對進行疊加,而後更新一次網絡的權重參數。這種分解組合形式實際上就是一種小批量學習方法,不只能夠加快迭代速度,還能夠爲後面使用非連續的梯度模型打下基礎。

2.3 模型訓練過程示例

假設某個搜索系統中,文檔用2維的特徵向量表示。給定一個query下的三個文檔向量分別爲x1=(5,4.5)Tx1=(5,4.5)T,x2=(4,3.7)Tx2=(4,3.7)T和x3=(2,1.8)Tx3=(2,1.8)T,標記狀況爲U1U2U3U1⊳U2⊳U3。爲了簡化訓練過程,這裏採用單層的神經網絡模型,即輸入層大小2,輸出層大小爲1,輸出值爲f(x)=w0+w1x(1)+w2x(2)f(x)=w0+w1x(1)+w2x(2)。

初始化w=[0,1,1]w=[0,−1,1],控制sigmoid函數形狀的σ=0.1σ=0.1,神經網絡學習率η=0.1η=0.1。

根據以上初始值能夠計算出s1=0.5s1=−0.5,s2=0.3s2=−0.3和s3=0.2s3=−0.2,可見此時三個文檔輸出的分數並不知足標記U1U2U3U1⊳U2⊳U3。

計算λ1=λ12+λ13=0.1012λ1=λ12+λ13=−0.1012,λ2=λ23λ12=0.0002λ2=λ23−λ12=0.0002,λ3=λ23λ13=0.1010λ3=−λ23−λ13=−0.1010。

δw0=η(λ1s1w0+λ2s2w0+λ3s3w0)=0δw0=−η(λ1∂s1∂w0+λ2∂s2∂w0+λ3∂s3∂w0)=0

δw1=η(λ1s1w1+λ2s2w1+λ3s3w1)=3.032δw1=−η(λ1∂s1∂w1+λ2∂s2∂w1+λ3∂s3∂w1)=3.032

δw2=η(λ1s1w2+λ2s2w2+λ3s3w2)=2.7286δw2=−η(λ1∂s1∂w2+λ2∂s2∂w2+λ3∂s3∂w2)=2.7286

更新網絡權重:

w0=w0+δw0=0+0=0w0=w0+δw0=0+0=0

w1=w1+δw1=1+3.032=2.032w1=w1+δw1=−1+3.032=2.032

w2=w2+δw2=1+2.7286=3.7286w2=w2+δw2=1+2.7286=3.7286

使用更新後的權重從新計算三個文檔的分數,分別爲s1=26.9387s1=26.9387,s2=21.92382s2=21.92382,s3=10.77548s3=10.77548。可見,通過一輪訓練,單層神經網絡的輸出分數已經能夠很好地擬合標記的標籤。

3. 信息檢索評分

信息檢索研究者常用的排序質量評分指標有如下四種:

MRR(Mean Reciprocal Rank),平均倒數排名

MAP(Mean Average Precision),平均正確率均值

NDCG(Normalized Discounted Cumulative Gain),歸一化折損累積增益

ERR(Expected Reciprocal Rank),預期倒數排名

其中,MRR和MAP只能對二級的相關性(排序等級:相關和不相關)進行評分,而NDCG和ERR則能夠對多級的相關性(排序等級>2)進行評分。NDCG和ERR的另外一個優勢是更關注排名靠前的文檔,在計算分數時會給予排名靠前的文檔更高的權重。可是這兩種評分方式的缺點是函數不連續,不能進行求導,因此也就不能簡單地將這兩種評分方式加入到模型的損失函數中去。

3.1 MRR

對於一個查詢ii來講,rankiranki表示第一個相關結果的排序位置,因此:

MRR(Q)=1|Q|i=1|Q|1rankiMRR(Q)=1|Q|∑i=1|Q|1ranki

 

|Q||Q|表示查詢的數量,MRRMRR表示搜索系統在查詢集QQ下的平均倒數排名值。MRRMRR只能度量檢索結果只有一個而且相關性等級只有相關和不相關兩種的狀況。

舉個簡單例子:

查詢語句 查詢結果 正確結果 排序位置 排序倒數
機器學習 快速排序,深度學習,並行計算 深度學習 2 1/2
蘋果手機 小米手機,華爲手機,iphone 7 iphone 7 3 1/3
小米移動電源 小米移動電源,華爲充電器,蘋果充電插頭 小米移動電源 1 1/1

因此MRR(Q)=1/2+1/3+13=1118MRR(Q)=1/2+1/3+13=1118

 3.2 MAP

假定信息需求qjQqj∈Q對應的全部相關文檔集合爲d1,...,dmjd1,...,dmj,RjkRjk是返回結果中直到遇到dkdk後其所在位置前(含dkdk)的全部文檔的集合,則定義MAP(Q)2MAP(Q)2以下:

 

MAP(Q)=1|Q|j=1|Q|1mjk=1mjPrecision(Rjk)MAP(Q)=1|Q|∑j=1|Q|1mj∑k=1mjPrecision(Rjk)

 

實際上有兩種計算MAPMAP的方法或者說有兩種MAP(Q)MAP(Q)的定義方法。第一種方法是在每篇相關文檔所在位置上求正確率而後平均(參考上面的公式)。另外一種是在每一個召回率水平上計算此時的插值正確率,而後求11點平均正確率,最後在不一樣查詢之間計算平均。前者也稱爲非插值MAP(Q)MAP(Q)。通常提MAP(Q)MAP(Q)都指前者,全部這裏也只討論前者。

若是對定義的公式不太理解,能夠結合下面的例子進行理解。

查詢1:機器學習 查詢2:蘋果手機
排序位置 是否相關 排序位置 是否相關
1 1
2 2
3 3
4 4
5 5
6 6
7 7

針對上面檢索的結果,可計算出

AP(1)=(11+11+2/30+2/40+3/51+3/60+3/70)/3=1315AP(1)=(1∗1+1∗1+2/3∗0+2/4∗0+3/5∗1+3/6∗0+3/7∗0)/3=1315

AP(2)=(00+1/21+2/31+2/40+2/50+3/61+4/71)/4=4784AP(2)=(0∗0+1/2∗1+2/3∗1+2/4∗0+2/5∗0+3/6∗1+4/7∗1)/4=4784

MAP(Q)=AP(1)+AP(2)2=13/15+47/842=599420MAP(Q)=AP(1)+AP(2)2=13/15+47/842=599420

3.3 NDCG

NDCG是基於前kk個檢索結果進行計算的。設R(j,m)R(j,m)是評價人員給出的文檔dd對查詢jj的相關性得分,那麼有:

 

NDCG(Q,k)=1|Q|j=1|Q|Zj,km=1k2R(j,m)1log(1+m)NDCG(Q,k)=1|Q|∑j=1|Q|Zj,k∑m=1k2R(j,m)−1log(1+m)

 

其中

DCGk=m=1k2R(j,m)1log(1+m)DCGk=∑m=1k2R(j,m)−1log(1+m)

 

Zj,kZj,k爲第jj個查詢的DCG歸一化因子,用於保證對於查詢jj最完美系統的DCGkDCGk得分是1。Zj,kZj,k也能夠用1IDCGk1IDCGk表示。mm是返回文檔的位置。若是某查詢返回的文檔數k<kk′<k,那麼上述公式只須要計算到kk′爲止。

修改上面簡單的例子進行輔助理解:

查詢1:機器學習 查詢2:蘋果手機
排序位置 相關程度 排序位置 相關程度
1 3 1 2
2 2 2 2
3 3 3 3
4 0 4 1
5 1 5 2
6 2 6 3
7 2 7 1

對於查詢1:機器學習:

 

DCG7=m=172R(j,m)1log(1+m)=21.421516DCG7=∑m=172R(j,m)−1log(1+m)=21.421516

 

查詢1返回結果的最佳相關程度排序爲:3,3,2,2,2,1,0,因此,IDCG7=22.686817IDCG7=22.686817,NDCG7=DCG7IDCG7=0.944227NDCG7=DCG7IDCG7=0.944227

對於查詢2:蘋果手機:

 

DCG7=m=172R(j,m)1log(1+m)=18.482089DCG7=∑m=172R(j,m)−1log(1+m)=18.482089

 

查詢2返回結果的最佳相關程度排序爲:3,3,2,2,2,1,1,因此,IDCG7=23.167716IDCG7=23.167716,NDCG7=DCG7IDCG7=0.797752NDCG7=DCG7IDCG7=0.797752

最後可得:NDCG(Q,7)=(0.944227+0.797752)/2=0.870990NDCG(Q,7)=(0.944227+0.797752)/2=0.870990

3.4 ERR

ERR3ERR3旨在改善NDCG計算當前結果時未考慮排在前面結果的影響的缺點,提出了一種基於級聯模型的評價指標。首先定義:

 

R(g)=2g12gmax,g{0,1,...,gmax}R(g)=2g−12gmax,g∈{0,1,...,gmax}

 

gg表明文檔的得分級別,gmaxgmax表明最大的分數級別。

因而定義:

 

ERR=r=1n1ri=1r1(1Ri)RrERR=∑r=1n1r∏i=1r−1(1−Ri)Rr

 

展開公式以下:

 

ERR=R1+12(1R1)R2+13(1R1)(1R2)R3+...+1n(1R1)(1R2)...(1Rn1)RnERR=R1+12(1−R1)R2+13(1−R1)(1−R2)R3+...+1n(1−R1)(1−R2)...(1−Rn−1)Rn

 

 

舉例來講(gmax=3gmax=3):

查詢:機器學習
排序位置 相關程度
1 3
2 2
3 3
4 1

R1=0.875,R2=0.375,R3=0.875,R4=0.125R1=0.875,R2=0.375,R3=0.875,R4=0.125

ERR=0.875+120.1250.375+130.1250.6250.875+140.1250.6250.1250.125=0.913391ERR=0.875+12∗0.125∗0.375+13∗0.125∗0.625∗0.875+14∗0.125∗0.625∗0.125∗0.125=0.913391

4. LambdaRank

4.1 爲何須要LambdaRank

先看一張論文原文中的圖,以下所示。這是一組用二元等級相關性進行排序的連接地址,其中淺灰色表明連接與query不相關,深藍色表明連接與query相關。 對於左邊來講,總的pairwise偏差爲13,而右邊總的pairwise偏差爲11。可是大多數狀況下咱們更指望能獲得左邊的結果。這說明最基本的pairwise偏差計算方式並不能很好地模擬用戶對搜索引擎的指望。右邊黑色箭頭表明RankNet計算出的梯度大小,紅色箭頭是指望的梯度大小。NDCG和ERR在計算偏差時,排名越靠前權重越大,能夠很好地解決RankNet計算偏差時的缺點。可是NDCG和ERR均是不可導的函數,如何加入到RankNet的梯度計算中去?

圖1

 

4.2  LambdaRank定義

RankNet中的λijλij能夠當作是UiUi和UjUj中間的做用力,若是UiUjUi⊳Uj,則UjUj會給予UiUi向上的大小爲|λij||λij|的推進力,而對應地UiUi會給予UjUj向下的大小爲|λij||λij|的推進力。如何將NDCG等相似更關注排名靠前的搜索結果的評價指標加入到排序結果之間的推進力中去呢?實驗代表,直接用|ΔNDCG||ΔNDCG|乘以原來的λijλij就能夠獲得很好的效果,也即:

 

λij=C(sisj)si=σ1+eσ(sisj)|ΔNDCG|λij=∂C(si−sj)∂si=−σ1+eσ(si−sj)|ΔNDCG|

 

其中|ΔNDCG||ΔNDCG|是交換排序結果UiUi和UjUj獲得的NDCG差值。NDCG傾向於將排名高而且相關性高的文檔更快地向上推進,而排名地並且相關性較低的文檔較慢地向上推進。

另外還能夠將|ΔNDCG||ΔNDCG|替換成其餘的評價指標。

5. LambdaMART

5.1 MART

LambdaMART是MART和LambdaRank的結合,因此要學習LambdaMART首先得了解什麼是MART。MART是Multiple Additive Regression Tree的簡稱,不少時候又稱爲GBDT(Gradient Boosting Decision Tree)。MART是一種集成學習算法,不一樣於經典的集成學習算法Adaboost利用前一輪學習器的偏差來更新下一輪學習的樣本權重,MART每次都擬合上一輪分類器產生的殘差。舉個例子便於理解,好比一我的的年齡是50歲,第一棵樹擬合的結果是35歲,第一輪的殘差爲15歲;而後第二棵數擬合的結果是10歲,兩棵樹相加總的擬合結果是45歲,第二輪的殘差爲5歲;第三棵數擬合的結果爲2歲,三棵樹相加擬合的結果是47歲,第三輪的殘差是3歲......只要如此不斷地進行下去,擬合結果就能夠達到50歲,擬合殘差的過程就是訓練數據的過程。

對於一個給定的數據集{xi,yi},i=1,2,...,m{xi,yi},i=1,2,...,m,其中特徵向量xiRnxi∈Rn,標籤yiRyi∈R,能夠用xij,j=1,2,...,dxijxij,j=1,2,...,d來表明xi的第j個特徵值。對於一個典型的迴歸決策樹問題,須要遍歷全部特徵jj的所有閾值tt,找到最優的jj和tt使下面的等式最小化:

 

Sj=iL(yiμL)2+iR(yiμR)2Sj=∑i∈L(yi−μL)2+∑i∈R(yi−μR)2

 

其中xijtxij≤t的全部樣本落入左子樹LL中,其中xij>txij>t的全部樣本落入右子樹RR中,μL(μR)μL(μR)表示左子樹(右子樹)全部樣例標籤值的均值。若是這就是一棵最簡單的擁有一個根節點、兩個葉子節點的二叉迴歸樹,那麼只須要根據最優閾值切分爲左右子樹,而且分別計算左右子樹的值γl,l=1,2γl,l=1,2便可。若是將劃分子樹的過程繼續進行L1L−1次便可獲得一棵包含LL個葉子節點的迴歸樹。

上面公式使用最小二乘法計算擬合偏差,因此經過上面方法獲得的模型又稱爲最小二乘迴歸樹。其實無論偏差的計算方式如何,咱們均可以擬合出相應的迴歸樹,惟一的區別是梯度的計算不一樣而已。

MART使用線性組合的方式將擬合的樹結合起來,做爲最後的輸出:

 

Fn(x)=i=1Nαifi(x)Fn(x)=∑i=1Nαifi(x)

 

fi(x)fi(x)是單棵迴歸樹函數,αiαi是第ii棵迴歸樹的權重。

在這裏咱們須要弄清楚爲何擬合殘差就能不斷減小擬合偏差。假設擬合偏差CC是擬合函數FnFn的函數C(Fn)C(Fn)。那麼:

 

δCC(Fn)FnδFnδC≈∂C(Fn)∂FnδFn

 

若是取δFn=ηCFnδFn=−η∂C∂Fn,就能夠獲得δC<0δC<0。其中ηη是學習率,爲正實數。因此只要函數FnFn擬合偏差函數的負梯度就能夠不斷下降擬合偏差的值。

設標籤向量y=[y1,y2,...,ym]Ty=[y1,y2,...,ym]T,若是用最小二乘的方式表示擬合偏差,則:

C=12(Fny)2C=12(Fn−y)2

 

那麼δFn=ηCFn=η(Fny)δFn=−η∂C∂Fn=−η(Fn−y)。這其實就是上面提到的殘差,因此擬合殘差能夠不斷減小擬合偏差。

5.2 邏輯迴歸+MART進行二分類

瞭解了MART以後,下面舉一個MART實際應用的例子:使用MART和邏輯迴歸進行二分類。用於分類的樣本xiRnxi∈Rn,標籤yi{±1}yi∈{±1},擬合函數F(x)F(x)。爲了簡化表示,咱們表示條件機率以下:

 

P+P(y=1|x)P+≡P(y=1|x)

 

 

PP(y=1|x)P−≡P(y=−1|x)

 

用交叉熵表示損失函數:

L(y,F)=ylog(P+)(1y)log(P)L(y,F)=−ylog(P+)−(1−y)log(P−)

 

邏輯迴歸使用對數機率(屬於正例機率/屬於負例機率)進行建模,

 

Fn(x)=12log(P+P)Fn(x)=12log(P+P−)

 

 

P+=11+e2σFn(x)P+=11+e−2σFn(x)

 

 

P=1P+=11+e2σFn(x)P−=1−P+=11+e2σFn(x)

 

P+P+和PP−帶入L(y,F)L(y,F)中,獲得:

 

L(y,Fn)=log(1+e2yσFn)L(y,Fn)=log(1+e−2yσFn)

 

RjmRjm表示落入第mm棵樹的第jj個葉子節點中的樣例集合,能夠經過下式對該葉子節點的值進行優化:

 

γjm=argminγxiRjmlog(1+e2σyi(Fm1(xi)+γ))γjm=argminγ∑xi∈Rjmlog⁡(1+e−2σyi(Fm−1(xi)+γ))

 

上式可使用Newton-Raphson方法按照下面的公式進行迭代求解:

 

γn+1=γng(γn)g′′(γn)γn+1=γn−g′(γn)g″(γn)

 

5.3 LambdaMART基本定義

LambdaMART基於MART,優化λλ梯度。根據上面的定義,對於任意UiUi和UjUj,有:

 

λij=C(sisj)si=σ|ΔZij|1+eσ(sisj)λij=∂C(si−sj)∂si=−σ|ΔZij|1+eσ(si−sj)

 

|ΔZij||ΔZij|表示交換UiUi和UjUj的位置產生的評價指標差值,ZZ能夠是NDCGNDCG或者ERRERR等。對於特定UiUi,累加其餘全部排序項的影響,獲得:

 

λi=j:{i,j}Iλijj:{j,i}Iλijλi=∑j:{i,j}∈Iλij−∑j:{j,i}∈Iλij

 

 爲了簡化表示:

 

{i,j}Iλij=j:{i,j}Iλijj:{j,i}Iλij∑{i,j}⇌Iλij=∑j:{i,j}∈Iλij−∑j:{j,i}∈Iλij

 

因而咱們能夠更新損失函數:

 

Csi=j:{i,j}Iσ|ΔZij|1+eσ(sisj)=j:{i,j}Iσ|ΔZij|ρij∂C∂si=∑j:{i,j}∈I−σ|ΔZij|1+eσ(si−sj)=∑j:{i,j}∈I−σ|ΔZij|ρij

 

其中,咱們定義:

 

ρij=11+eσ(sisj)=λijσ|ΔZij|ρij=11+eσ(si−sj)=−λijσ|ΔZij|

 

而後能夠獲得:

 

2Cs2i={i,j}Iσ2|ΔZij|ρij(1ρij)∂2C∂si2=∑{i,j}⇌Iσ2|ΔZij|ρij(1−ρij)

 

因此咱們能夠用下面的公式計算第mm棵樹的第kk個葉子節點上的值:

 

γkm=xiRkmCsixiRkm2Cs2i=xiRkm{i,j}I|ΔZij|ρijxiRkm{i,j}I|ΔZij|σρij(1ρij)γkm=∑xi∈Rkm∂C∂si∑xi∈Rkm∂2C∂si2=−∑xi∈Rkm∑{i,j}⇌I|ΔZij|ρij∑xi∈Rkm∑{i,j}⇌I|ΔZij|σρij(1−ρij)

 

因此總結LambdaMART算法以下:

6. 參考文獻

1. Christopher J.C. Burges. From RankNet to LambdaRank to LambdaMART: An Overview. Microsoft Research Technical Report MSR-TR-010-82.

2. Chrisopher D.Manning, Prabhakar Raghavan, Hinrich Schutze著, 王斌譯. Introduction to Information Retrieval, 8.4 有序檢索結果的評價方法, 2017年10月北京第11次印刷.

3. Olivier Chapelle, Ya Zhang, Pierre Grinspan. Expected Recipocal Rank for Graded Relevance. CIKM 2009.

相關文章
相關標籤/搜索