日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 运维知识 > windows >内容正文

windows

【推荐系统】推荐系统中的排序学习

發(fā)布時(shí)間:2025/3/8 windows 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【推荐系统】推荐系统中的排序学习 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

?本文首先介紹排序?qū)W習(xí)的三種主要類別,然后詳細(xì)介紹推薦領(lǐng)域最常用的兩種高層排序?qū)W習(xí)算法框架:BPR和LambdaMART。因?yàn)榕判驅(qū)W習(xí)的算法和實(shí)踐大都來源于信息檢索,一些理論也必須從信息檢索的領(lǐng)域說起,所以本文也會(huì)涉及一些的信息檢索、搜索方面的理論知識,但重點(diǎn)依然會(huì)放在推薦領(lǐng)域排序?qū)W習(xí)的應(yīng)用思路。

作者:盧明冬,個(gè)人博客:https://lumingdong.cn/learning-to-rank-in-recommendation-system.html

「排序?qū)W習(xí)(Learning to Rank,LTR)」,也稱「機(jī)器排序?qū)W習(xí)(Machine-learned Ranking,MLR)」 ,就是使用機(jī)器學(xué)習(xí)的技術(shù)解決排序問題。自從機(jī)器學(xué)習(xí)的思想逐步滲透到信息檢索等領(lǐng)域之后,如何利用機(jī)器學(xué)習(xí)來提升信息檢索的性能水平變成了近些年來非常熱門的研究話題,因此產(chǎn)生了各類基于機(jī)器學(xué)習(xí)的排序算法,也帶來了搜索引擎技術(shù)的成熟和發(fā)展,如今,Learning to Rank已經(jīng)成為搜索、推薦和廣告領(lǐng)域非常重要的技術(shù)手段。

本文我們首先介紹排序?qū)W習(xí)的三種主要類別,然后詳細(xì)介紹推薦領(lǐng)域最常用的兩種高層排序?qū)W習(xí)算法框架:BPR和LambdaMART。因?yàn)榕判驅(qū)W習(xí)的算法和實(shí)踐大都來源于信息檢索,一些理論也必須從信息檢索的領(lǐng)域說起,所以本文也會(huì)涉及一些的信息檢索、搜索方面的理論知識,但重點(diǎn)依然會(huì)放在推薦領(lǐng)域排序?qū)W習(xí)的應(yīng)用思路。

為什么需要排序?qū)W習(xí)

傳統(tǒng)的排序方法可粗略分為基于相似度和基于重要性進(jìn)行排序兩大類,早期基于相關(guān)度的模型,通常利用 query 和 doc 之間的詞共現(xiàn)特性(如布爾模型)、VSM(如 TF-IDF、LSI)、概率排序思想(如BM25、LMIR)等方式。基于重要性的模型,利用的是 doc 本身的重要性,如 PageRank、TrustRank 等。在之前《基于內(nèi)容的推薦算法》和《文本內(nèi)容分析算法》兩篇文章中,稍有涉及其中的知識點(diǎn)。[^1][^2][^3]

傳統(tǒng)的檢索模型所考慮的因素并不多,主要是利用詞頻、逆文檔頻率和文檔長度、文檔重要度這幾個(gè)因子來人工擬合排序公式,且其中大多數(shù)模型都包含參數(shù),也就需要通過不斷的實(shí)驗(yàn)確定最佳的參數(shù)組合,以此來形成相關(guān)性打分。這種方式非常簡單高效,但是也同時(shí)存在很多問題[^4]:

  • 很難融合多種信息

  • 手動(dòng)調(diào)參工作量太大,如果模型參數(shù)很多,手動(dòng)調(diào)參的可用性非常低

  • 可能會(huì)過擬合

  • LTR則是基于特征,通過機(jī)器學(xué)習(xí)算法訓(xùn)練來學(xué)習(xí)到最佳的擬合公式,相比傳統(tǒng)的排序方法,優(yōu)勢有很多:

  • 可以根據(jù)反饋?zhàn)詣?dòng)學(xué)習(xí)并調(diào)整參數(shù)

  • 可以融合多方面的排序影響因素

  • 避免過擬合(通過正則項(xiàng))

  • 實(shí)現(xiàn)個(gè)性化需求(推薦)

  • 多種召回策略的融合排序推薦(推薦)

  • 多目標(biāo)學(xué)習(xí)(推薦)

  • $排序?qū)W習(xí)在推薦領(lǐng)域的重要作用

    「推薦的整個(gè)流程可以分為召回、排序、重排序這三個(gè)階段」,通俗來說,召回就是找到用戶可能喜歡的幾百條資訊,排序就是對這幾百條資訊利用機(jī)器學(xué)習(xí)的方法預(yù)估用戶對每條資訊的偏好程度,一般以點(diǎn)擊率衡量,也就是點(diǎn)擊率預(yù)估問題。不難看出,排序?qū)W習(xí)在推薦領(lǐng)域主要用于排序階段,最常用的是Pointwise排序方法;重排序更多是考慮業(yè)務(wù)邏輯的規(guī)則過濾,如在推薦結(jié)果的多樣性、時(shí)效性、新穎性等方面進(jìn)行控制。

    在沒有Learning to Rank之前,基于內(nèi)容的推薦算法和基于鄰域的協(xié)同過濾雖然也能預(yù)測用戶的偏好,可以幫助用戶召回大量的物品,但是我們必須知道,「推薦系統(tǒng)中更重要的目標(biāo)是排序,因?yàn)檎嬲詈笸扑]給用戶的只有少數(shù)物品,我們更關(guān)心這些召回物品中哪些才是用戶心中更加喜歡的,也就是排序更靠前,這便是Top-N推薦」。例如使用用戶最近點(diǎn)擊的資訊信息召回這些item的相關(guān)結(jié)果與用戶偏好類別的熱門結(jié)果組合后進(jìn)行返回。但是這對于資訊類推薦需要考慮以下問題:**資訊類信息流屬于用戶消費(fèi)型場景,item時(shí)效性要求高,item base cf容易召回較舊的內(nèi)容,而且容易導(dǎo)致推薦結(jié)果收斂。**因此可以將item的相關(guān)結(jié)果保證時(shí)效性的基礎(chǔ)上,融合類別、標(biāo)簽熱門結(jié)果,對各個(gè)策略的召回結(jié)果按照線上總體反饋進(jìn)行排序,就可以作為用戶的推薦結(jié)果。但是這一融合過程比較復(fù)雜,一種簡單的方式就是看哪種召回策略總體收益越高就擴(kuò)大這個(gè)策略的曝光占比,對于個(gè)體而言卻顯得不是特別個(gè)性化,而且在規(guī)則調(diào)參上也比較困難[^5],「而Leaning to Rank則可以根據(jù)用戶的反饋對多路召回的item進(jìn)行排序推薦。」

    排序?qū)W習(xí)框架

    排序?qū)W習(xí)是一個(gè)典型的有監(jiān)督機(jī)器學(xué)習(xí)過程,我們分別簡單來看一下排序?qū)W習(xí)在搜索以及推薦領(lǐng)域中的框架和基本流程。

    基本流程

    在信息檢索中,對每一個(gè)給定的查詢-文檔對,抽取特征,通過日志挖掘或者人工標(biāo)注的方法獲得真實(shí)數(shù)據(jù)標(biāo)注。然后通過排序模型,使得輸入能夠和實(shí)際的數(shù)據(jù)相似。

    排序?qū)W習(xí)在現(xiàn)代推薦架構(gòu)中處于非常關(guān)鍵的環(huán)節(jié),它可以完成不同召回策略的統(tǒng)一排序,也可將離線、近線、在線的推薦結(jié)果根據(jù)根據(jù)用戶所處的場景進(jìn)行整合和實(shí)時(shí)調(diào)整,完成打分重排并推薦給用戶。

    美團(tuán)推薦框架(2017年)

    無論是搜索還是推薦,排序?qū)W習(xí)模型的特征提取以及訓(xùn)練數(shù)據(jù)的獲取是非常重要的兩個(gè)過程,與常見的機(jī)器學(xué)習(xí)任務(wù)相比,也有很多特殊的地方,下面我們簡單介紹這兩個(gè)過程中可能需要考慮的問題。

    特征提取

    在排序?qū)W習(xí)模型中,文檔都是轉(zhuǎn)化成特征向量來表征的,這便涉及一系列文本特征提取的工作,我們這里簡單介紹一些可能用到的特征提取方法以及常用的特征類型。

    文檔的特征通常可以從傳統(tǒng)排序模型獲得一些相關(guān)特征或者相關(guān)度打分值,所以可分為兩種類型:

    一是文檔本身的特征,比如Pagerank值、內(nèi)容豐富度、spam值、number of slash、url length、inlink number、outlink number、siterank,用戶停留時(shí)間、CTR、二跳率等。

    二是Query-Doc的特征:文檔對應(yīng)查詢的相關(guān)度、每個(gè)域的tf、idf值,bool model,vsm,bm25,language model相關(guān)度等。

    也可以對文檔分域,如對于一個(gè)網(wǎng)頁文本,特征所在的文檔區(qū)域可以包括body域,anchor域,title域,url域,whole document域等。

    通過各個(gè)域和各種特征,我們可以組合出很多特征,當(dāng)然有些特征是正相關(guān)有些是負(fù)相關(guān),這需要我們通過學(xué)習(xí)過程去選取優(yōu)化。

    標(biāo)簽獲取

    特征可以通過各種方式進(jìn)行提取,但是Label的獲取就不是那么容易了。目前主要的方式是人工標(biāo)注或者日志提取,需注意的是,標(biāo)注的類型與算法選擇以及損失函數(shù)都有很大關(guān)系。

    「人工標(biāo)注」

    人工標(biāo)注比較靈活,但是若需要大量的訓(xùn)練數(shù)據(jù),人工標(biāo)注就不太現(xiàn)實(shí)了,人工標(biāo)注主要有以下幾種標(biāo)注類型:

  • 「單點(diǎn)標(biāo)注」

    單點(diǎn)標(biāo)注只關(guān)注單點(diǎn),不考慮相互聯(lián)系,單點(diǎn)標(biāo)注又分三種不同的標(biāo)注方式:

    優(yōu)缺點(diǎn)

    優(yōu)點(diǎn):標(biāo)注的量少,為O(n)

    缺點(diǎn):難標(biāo),不好統(tǒng)一

    • 對于每個(gè)查詢文檔直接打上絕對標(biāo)簽,即相關(guān)度得分

    • 二元標(biāo)注

      相關(guān)和不相關(guān)

    • 五級標(biāo)注

      按照相關(guān)度劃分五級(同NDCG指標(biāo)):即“最相關(guān)”、“相關(guān)”、“中性”、“不相關(guān)”、最不相關(guān)”,通常在模型訓(xùn)練時(shí)會(huì)用數(shù)字來表示,如1~5

    • 「兩兩標(biāo)注」

      優(yōu)缺點(diǎn)

      優(yōu)點(diǎn):標(biāo)注起來比較方便 缺點(diǎn):標(biāo)注量大,應(yīng)該有

      • 對于一個(gè)查詢Query,標(biāo)注文檔d1比文檔d2是否更加相關(guān),即

    • 「列表標(biāo)注」

      優(yōu)缺點(diǎn)

      優(yōu)點(diǎn):相對于上面兩種,標(biāo)注的效果會(huì)很好 缺點(diǎn):工作量巨大,人工幾乎無法完成(整體的文檔數(shù)量太大)

      • 對于一個(gè)查詢Query,將人工理想的排序全部標(biāo)好

      「日志抽取」

      當(dāng)搜索引擎搭建起來之后,就可以通過用戶點(diǎn)擊記錄來獲取訓(xùn)練數(shù)據(jù)。對應(yīng)查詢返回的搜索結(jié)果,用戶會(huì)點(diǎn)擊其中的某些網(wǎng)頁,我們可以假設(shè)用戶優(yōu)先點(diǎn)擊的是和查詢更相關(guān)的網(wǎng)頁,盡管很多時(shí)候這種假設(shè)并不成立,但實(shí)際經(jīng)驗(yàn)表明這種獲取訓(xùn)練數(shù)據(jù)的方法是可行的。

      比如,搜索結(jié)果A、B、C分別位于第1、2、3位,B比A位置低,但卻得到了更多的點(diǎn)擊,那么B的相關(guān)性可能好于A。

      「這種點(diǎn)擊數(shù)據(jù)隱含了Query到文檔的相關(guān)性好壞。所以一般會(huì)使用點(diǎn)擊倒置的高低位結(jié)果作為訓(xùn)練數(shù)據(jù)」

      但是日志抽取也存在問題:

      • 用戶總是習(xí)慣于從上到下瀏覽搜索結(jié)果

      • 用戶點(diǎn)擊有比較大的噪聲

      • 一般頭查詢(head query)才存在用戶點(diǎn)擊

      排序?qū)W習(xí)設(shè)計(jì)方法

      排序?qū)W習(xí)的模型通常分為「單點(diǎn)法(Pointwise Approach)」、**配對法(Pairwise Approach)「和」列表法(Listwise Approach)**三大類,三種方法并不是特定的算法,而是排序?qū)W習(xí)模型的設(shè)計(jì)思路,主要區(qū)別體現(xiàn)在損失函數(shù)(Loss Function)、以及相應(yīng)的標(biāo)簽標(biāo)注方式和優(yōu)化方法的不同。

      三種方法從ML角度的總覽:

      單點(diǎn)法(Pointwise)

      單點(diǎn)法排序?qū)W習(xí)模型的每一個(gè)訓(xùn)練樣本都僅僅是某一個(gè)查詢關(guān)鍵字和某一個(gè)文檔的配對。它們之間是否相關(guān),與其他文檔和其他查詢關(guān)鍵字都沒有關(guān)系。很明顯,單點(diǎn)法排序?qū)W習(xí)是對現(xiàn)實(shí)的一個(gè)極大簡化,但是對于訓(xùn)練排序算法來說是一個(gè)不錯(cuò)的起點(diǎn)。

      單點(diǎn)法將文檔轉(zhuǎn)換為特征向量后,機(jī)器學(xué)習(xí)系統(tǒng)根據(jù)從訓(xùn)練數(shù)據(jù)中學(xué)習(xí)到的分類或者回歸函數(shù)對文檔打分,打分結(jié)果即是搜索結(jié)果。

      單點(diǎn)排序?qū)W習(xí)可以按照標(biāo)注和損失函數(shù)設(shè)計(jì)的不同,將排序問題轉(zhuǎn)化成回歸、分類、和有序分類問題(有些文獻(xiàn)也稱有序回歸)問題,可參考下圖:

      分別看一下?lián)p失函數(shù)的設(shè)計(jì)思想:

      • 分類(Classification):輸出空間包含的是無序類別,對每個(gè)查詢-文檔對的樣本判斷是否相關(guān),可以是二分類的,如相關(guān)認(rèn)為是正例,不相關(guān)認(rèn)為是負(fù)例;也可以是類似NDCG那樣的五級標(biāo)注的多分類問題。

        分類模型通常會(huì)輸出一個(gè)概率值,可根據(jù)概率值的大小排序作為排序最終結(jié)果。

      • 回歸(Regression):輸出空間包含的是真實(shí)值相關(guān)度得分,可通過回歸來直接擬合相關(guān)度打分。

      • 有序分類(Ordinal Classification):有序分類也稱有序回歸(Ordinal Regression),輸出空間一般包含的是有序類別,通常的做法是找到一個(gè)打分函數(shù),然后用一系列閾值對得分進(jìn)行分割,得到有序類別。如采用 PRanking、基于 Margin 的方法。

      $推薦領(lǐng)域的Pointwise排序?qū)W習(xí)

      「回到我們的推薦系統(tǒng)領(lǐng)域,最常用就是二元分類的Pointwise,比如常見的點(diǎn)擊率(CTR)預(yù)估問題,之所以用得多,是因?yàn)槎诸惖腜ointwise模型的復(fù)雜度通常比Pairwise和Listwise要低,而且可以借助用戶的點(diǎn)擊反饋?zhàn)匀坏赝瓿烧?fù)樣例的標(biāo)注,而其他Pairwise和Listwise的模型標(biāo)注就沒那么容易了。成功地將排序問題轉(zhuǎn)化成分類問題,也就意味著我們機(jī)器學(xué)習(xí)中那些常用的分類方法都可以直接用來解決排序問題,如LR、GBDT、SVM等,甚至包括結(jié)合深度學(xué)習(xí)的很多推薦排序模型,都屬于這種Pointwise的思想范疇。」

      「Pointwise方法存在的問題:」

      Pointwise方法通過優(yōu)化損失函數(shù)求解最優(yōu)的參數(shù),可以看到Pointwise方法非常簡單,工程上也易實(shí)現(xiàn),但是Pointwise也存在很多問題:

      • Pointwise只考慮單個(gè)文檔同query的相關(guān)性,沒有考慮文檔間的關(guān)系,然而排序追求的是排序結(jié)果,并不要求精確打分,只要有相對打分即可;

      • 通過分類只是把不同的文檔做了一個(gè)簡單的區(qū)分,同一個(gè)類別里的文檔則無法深入?yún)^(qū)別,雖然我們可以根據(jù)預(yù)測的概率來區(qū)別,但實(shí)際上,這個(gè)概率只是準(zhǔn)確度概率,并不是真正的排序靠前的預(yù)測概率;

      • Pointwise 方法并沒有考慮同一個(gè) query 對應(yīng)的文檔間的內(nèi)部依賴性。一方面,導(dǎo)致輸入空間內(nèi)的樣本不是 IID 的,違反了 ML 的基本假設(shè),另一方面,沒有充分利用這種樣本間的結(jié)構(gòu)性。其次,當(dāng)不同 query 對應(yīng)不同數(shù)量的文檔時(shí),整體 loss 將容易被對應(yīng)文檔數(shù)量大的 query 組所支配,應(yīng)該每組 query 都是等價(jià)的才合理。

      • 很多時(shí)候,排序結(jié)果的Top N條的順序重要性遠(yuǎn)比剩下全部順序重要性要高,因?yàn)閾p失函數(shù)沒有相對排序位置信息,這樣會(huì)使損失函數(shù)可能無意的過多強(qiáng)調(diào)那些不重要的 docs,即那些排序在后面對用戶體驗(yàn)影響小的 doc,所以對于位置靠前但是排序錯(cuò)誤的文檔應(yīng)該加大懲罰。

      「代表算法:」

      基于神經(jīng)網(wǎng)絡(luò)的排序算法RankProp、基于感知機(jī)的在線排序算法Prank(Perception Rank)/OAP-BPM和基于SVM的排序算法。

      「推薦中使用較多的Pointwise方法是LR、GBDT、SVM、FM以及結(jié)合DNN的各種排序算法。」

      配對法(Pairwise)

      配對法的基本思路是對樣本進(jìn)行兩兩比較,構(gòu)建偏序文檔對,從比較中學(xué)習(xí)排序,因?yàn)閷τ谝粋€(gè)查詢關(guān)鍵字來說,最重要的其實(shí)不是針對某一個(gè)文檔的相關(guān)性是否估計(jì)得準(zhǔn)確,而是要能夠正確估計(jì)一組文檔之間的“相對關(guān)系”。

      因此,Pairwise的訓(xùn)練集樣本從每一個(gè)“關(guān)鍵字文檔對”變成了“關(guān)鍵字文檔文檔配對”。也就是說,每一個(gè)數(shù)據(jù)樣本其實(shí)是一個(gè)比較關(guān)系,當(dāng)前一個(gè)文檔比后一個(gè)文檔相關(guān)排序更靠前的話,就是正例,否則便是負(fù)例,如下圖。試想,有三個(gè)文檔:A、B 和 C。完美的排序是“B>C>A”。我們希望通過學(xué)習(xí)兩兩關(guān)系“B>C”、“B>A”和“C>A”來重構(gòu)“B>C>A”。

      這里面有幾個(gè)非常關(guān)鍵的假設(shè)[^6]:

      **第一,我們可以針對某一個(gè)關(guān)鍵字得到一個(gè)完美的排序關(guān)系。**在實(shí)際操作中,這個(gè)關(guān)系可以通過五級相關(guān)標(biāo)簽來獲得,也可以通過其他信息獲得,比如點(diǎn)擊率等信息。然而,這個(gè)完美的排序關(guān)系并不是永遠(yuǎn)都存在的。試想在電子商務(wù)網(wǎng)站中,對于查詢關(guān)鍵字“蘋果”,有的用戶的意圖是購買水果,有的用戶則是打算購買蘋果手機(jī),甚至對于同一個(gè)用戶,在不同時(shí)期,對于同一個(gè)關(guān)鍵詞的搜索意圖也可能是不一樣的,顯然,這類情況就不存在一個(gè)完美排序。

      **第二,我們寄希望能夠?qū)W習(xí)文檔之間的兩兩配對關(guān)系從而“重構(gòu)”這個(gè)完美排序。**然而,這也不是一個(gè)有“保證”的思路。用剛才的例子,希望學(xué)習(xí)兩兩關(guān)系“B>C”、“B>A”和“C>A”來重構(gòu)完美排序“B>C>A”。然而,實(shí)際中,這三個(gè)兩兩關(guān)系之間是獨(dú)立的。特別是在預(yù)測的時(shí)候,即使模型能夠正確判斷“B>C”和“C>A”,也不代表模型就一定能得到“B>A”。注意,這里的關(guān)鍵是“一定”,也就是模型有可能得到也有可能得不到。兩兩配對關(guān)系不能“一定”得到完美排序,這個(gè)結(jié)論其實(shí)就揭示了這種方法的不一致性。也就是說,我們并不能真正保證可以得到最優(yōu)的排序。

      **第三,我們能夠構(gòu)建樣本來描述這樣的兩兩相對的比較關(guān)系。**一個(gè)相對比較簡單的情況,認(rèn)為文檔之間的兩兩關(guān)系來自于文檔特征(Feature)之間的差異。也就是說,可以利用樣本之間特征的差值當(dāng)做新的特征,從而學(xué)習(xí)到差值到相關(guān)性差異這樣的一組對應(yīng)關(guān)系。

      Pairwise最終的算分,分類和回歸都可以實(shí)現(xiàn),不過最常用的還是二元分類,如下圖:

      「不同類型的人工標(biāo)注標(biāo)簽如何轉(zhuǎn)換到 pairwise 類方法的輸出空間:」

      Pairwise方法的輸出空間應(yīng)該是包括所有文檔的兩兩文檔對的偏序關(guān)系(pairwise preference),其取值為,+1 表示文檔對中前者更相關(guān),-1則表示文檔對中后者更相關(guān),我們可以把不同類型的人工標(biāo)注的標(biāo)簽轉(zhuǎn)換到Pairwise的真實(shí)標(biāo)簽。

      • 對于單點(diǎn)標(biāo)注,比如相關(guān)度打分 ,文檔對 () 的真實(shí)標(biāo)簽可定義為 ;

      • 對于兩兩標(biāo)注,本身已經(jīng)是文檔對的偏序標(biāo)簽,可直接作為真實(shí)標(biāo)簽,文檔對 () 的真實(shí)標(biāo)簽可定義為;

      • 對于列表標(biāo)注,拿到的是整體排序 ,文檔對 () 的真實(shí)標(biāo)簽可定義為。

      「Pairwise方法存在的問題:」

      Pairwise 方法通過考慮兩兩文檔之間的相關(guān)對順序來進(jìn)行排序,相比Pointwise方法有明顯改善。但 Pairwise 方法仍有如下問題:

      • 使用的是兩文檔之間相關(guān)度的損失函數(shù),而它和真正衡量排序效果的指標(biāo)之間存在很大不同,甚至可能是負(fù)相關(guān)的,如可能出現(xiàn) Pairwise Loss 越來越低,但 NDCG 分?jǐn)?shù)也越來越低的現(xiàn)象。

      • 只考慮了兩個(gè)文檔的先后順序,且沒有考慮文檔在搜索列表中出現(xiàn)的位置,導(dǎo)致最終排序效果并不理想。

      • 不同的查詢,其相關(guān)文檔數(shù)量差異很大,轉(zhuǎn)換為文檔對之后,有的查詢可能有幾百對文檔,有的可能只有幾十個(gè),這樣不加均一化地在一起學(xué)習(xí),模型會(huì)優(yōu)先考慮文檔對數(shù)量多的查詢,減少這些查詢的loss,最終對機(jī)器學(xué)習(xí)的效果評價(jià)造成困難。

      • Pairwise方法的訓(xùn)練樣例是偏序文檔對,它將對文檔的排序轉(zhuǎn)化為對不同文檔與查詢相關(guān)性大小關(guān)系的預(yù)測;因此,如果因某個(gè)文檔相關(guān)性被預(yù)測錯(cuò)誤,或文檔對的兩個(gè)文檔相關(guān)性均被預(yù)測錯(cuò)誤,則會(huì)影響與之關(guān)聯(lián)的其它文檔,進(jìn)而引起連鎖反應(yīng)并影響最終排序結(jié)果。

      「代表算法:」

      基于SVM的Ranking SVM算法、基于神經(jīng)網(wǎng)絡(luò)的RankNet算法和基于Boosting的RankBoost算法。

      「推薦中使用較多的Pairwise方法是貝葉斯個(gè)性化排序(Bayesian personalized ranking,BPR)。」

      「$Pointwise與Pairwise的結(jié)合方案」

      Pairwise方法的訓(xùn)練樣例是偏序文檔對,它將對文檔的排序轉(zhuǎn)化為對不同文檔與查詢相關(guān)性大小關(guān)系的預(yù)測;因此,如果因某個(gè)文檔相關(guān)性被預(yù)測錯(cuò)誤,或文檔對的兩個(gè)文檔相關(guān)性均被預(yù)測錯(cuò)誤,則會(huì)影響與之關(guān)聯(lián)的其它文檔,進(jìn)而引起連鎖反應(yīng)并影響最終排序結(jié)果。而Pointwise方法的訓(xùn)練樣例是單個(gè)文檔,它解決的問題恰恰是對單個(gè)文檔的相關(guān)性預(yù)測。基于此,本文在Pairwise方法的基礎(chǔ)上,增加Pointwise損失函數(shù),通過融入對單個(gè)文檔相關(guān)性大小的考慮,減小因錯(cuò)誤預(yù)測單個(gè)文檔相關(guān)性大小而導(dǎo)致連鎖反應(yīng)所造成的損失,來優(yōu)化Pairwise方法去排序模型,提升其排序性能。

      1)推薦領(lǐng)域中,凡是基于協(xié)同過濾對單個(gè)物品進(jìn)行偏好打分預(yù)測的模型,其實(shí)都可以看成是Pointwise排序方法。對于Pairwise方法,協(xié)同過濾可以發(fā)展為用戶對一對物品偏好。一個(gè)通常的做法是將Pointwise的輸出作為Pairwise的輸入特征,然后兩兩作差,在用Pointwise方法保證單個(gè)物品預(yù)測精度的基礎(chǔ)上,用Pairwise對做進(jìn)一步排序優(yōu)化。這種方法的一個(gè)典型案例是BPR,它是推薦領(lǐng)域中使用較多的Pairwise方法,具體內(nèi)容我們將在下一小節(jié)單獨(dú)介紹。

      2)將Pointwise的損失函數(shù)融合進(jìn)Pairwise的損失函數(shù)[^7]

      考查現(xiàn)存Pointwise方法,大多將排序問題轉(zhuǎn)化為分類或回歸問題,所用到的損失函數(shù)分別為分類或回歸問題的損失函數(shù)。本文采用回歸損失函數(shù),它也是人工神經(jīng)網(wǎng)絡(luò)中常用的用于衡量訓(xùn)練樣例的預(yù)測值與真實(shí)值之間誤差的函數(shù)。記為訓(xùn)練集合中文檔的相關(guān)性大小標(biāo)注值,為排序模型對文檔的相關(guān)性預(yù)測值,則其Pointwise損失函數(shù)形式如下:

      考慮到Pairwise方法不會(huì)將所有文檔的相關(guān)性預(yù)測錯(cuò)誤,且單個(gè)文檔在不同偏序文檔對中存在重復(fù),因而將Pairwise損失函數(shù)與Pointwise損失函數(shù)線性插值,得到改進(jìn)的損失函數(shù),形式如下:

      其中, 與 是不同損失函數(shù)的權(quán)重,試驗(yàn)中通過驗(yàn)證集來確定其大小。

      列表法(Listwise)

      相對于嘗試學(xué)習(xí)每一個(gè)樣本是否相關(guān)或者兩個(gè)文檔的相對比較關(guān)系,列表法排序?qū)W習(xí)的基本思路是嘗試直接優(yōu)化像 NDCG(Normalized Discounted Cumulative Gain)這樣的指標(biāo),從而能夠?qū)W習(xí)到最佳排序結(jié)果。

      關(guān)于NDCG以及其他相關(guān)排序指標(biāo),可參考我之前寫的文章《工業(yè)界推薦系統(tǒng)的評測標(biāo)準(zhǔn)》。

      列表法的相關(guān)研究有很大一部分來自于微軟研究院,這其中著名的作者就有微軟亞州院的徐君、李航、劉鐵巖等人,以及來自微軟西雅圖的研究院的著名排序算法LambdaMART以及Bing搜索引擎的主導(dǎo)人克里斯托弗·博格斯(Christopher J.C. Burges)。

      列表法排序?qū)W習(xí)有兩種基本思路。第一種稱為Measure-specific,就是直接針對 NDCG 這樣的指標(biāo)進(jìn)行優(yōu)化。目的簡單明了,用什么做衡量標(biāo)準(zhǔn),就優(yōu)化什么目標(biāo)。第二種稱為Non-measure specific,則是根據(jù)一個(gè)已經(jīng)知道的最優(yōu)排序,嘗試重建這個(gè)順序,然后來衡量這中間的差異。

      「1)Measure-specific,直接針對 NDCG 類的排序指標(biāo)進(jìn)行優(yōu)化」

      先來看看直接優(yōu)化排序指標(biāo)的難點(diǎn)和核心在什么地方。

      難點(diǎn)在于,希望能夠優(yōu)化 NDCG 指標(biāo)這樣的“理想”很美好,但是現(xiàn)實(shí)卻很殘酷。NDCG、MAP以及AUC這類排序標(biāo)準(zhǔn),都是在數(shù)學(xué)的形式上的“非連續(xù)”(Non-Continuous )和“非可微分”(Non-Differentiable)。而絕大多數(shù)的優(yōu)化算法都是基于“連續(xù)”(Continuous )和“可微分” (Differentiable)函數(shù)的。因此,直接優(yōu)化難度比較大。

      針對這種情況,主要有這么幾種解決方法。

      第一種方法是,既然直接優(yōu)化有難度,那就找一個(gè)近似 NDCG 的另外一種指標(biāo)。而這種替代的指標(biāo)是“連續(xù)”和“可微分”的 。只要我們建立這個(gè)替代指標(biāo)和 NDCG 之間的近似關(guān)系,那么就能夠通過優(yōu)化這個(gè)替代指標(biāo)達(dá)到逼近優(yōu)化 NDCG 的目的。這類的代表性算法的有 SoftRank 和 AppRank。

      第二種方法是,嘗試從數(shù)學(xué)的形式上寫出一個(gè) NDCG 等指標(biāo)的“邊界”(Bound),然后優(yōu)化這個(gè)邊界。比如,如果推導(dǎo)出一個(gè)上界,那就可以通過最小化這個(gè)上界來優(yōu)化 NDCG。這類的代表性算法有 SVM-MAP 和 SVM-NDCG。

      第三種方法則是,希望從優(yōu)化算法上下手,看是否能夠設(shè)計(jì)出復(fù)雜的優(yōu)化算法來達(dá)到優(yōu)化 NDCG 等指標(biāo)的目的。對于這類算法來說,算法要求的目標(biāo)函數(shù)可以是“非連續(xù)”和“非可微分”的。這類的代表性算法有 AdaRank 和 RankGP。

      「2)Non-measure specific,嘗試重建最優(yōu)順序,衡量其中差異」

      這種思路的主要假設(shè)是,已經(jīng)知道了針對某個(gè)搜索關(guān)鍵字的完美排序,那么怎么通過學(xué)習(xí)算法來逼近這個(gè)完美排序。我們希望縮小預(yù)測排序和完美排序之間的差距。值得注意的是,在這種思路的討論中,優(yōu)化 NDCG 等排序的指標(biāo)并不是主要目的。這里面的代表有 ListNet 和 ListMLE。

      「3)列表法和配對法的中間解法」

      第三種思路某種程度上說是第一種思路的一個(gè)分支,因?yàn)楹芴貏e,這里單獨(dú)列出來。其特點(diǎn)是在純列表法和配對法之間尋求一種中間解法。具體來說,這類思路的核心思想,是從 NDCG 等指標(biāo)中受到啟發(fā),設(shè)計(jì)出一種替代的目標(biāo)函數(shù)。這一步和剛才介紹的第一種思路中的第一個(gè)方向有異曲同工之妙,都是希望能夠找到替代品。

      找到替代品以后,接下來就是把直接優(yōu)化列表的想法退化成優(yōu)化某種配對。這第二步就更進(jìn)一步簡化了問題。這個(gè)方向的代表方法就是微軟發(fā)明的 LambdaRank 以及后來的 LambdaMART。微軟發(fā)明的這個(gè)系列算法成了微軟的搜索引擎 Bing 的核心算法之一,而且LambdaMART也是推薦領(lǐng)域中可能用到一類排序算法。

      「Listwise方法存在的問題:」

      列表法相較單點(diǎn)法和配對法針對排序問題的模型設(shè)計(jì)更加自然,解決了排序應(yīng)該基于 query 和 position 問題。

      但列表法也存在一些問題:一些算法需要基于排列來計(jì)算 loss,從而使得訓(xùn)練復(fù)雜度較高,如 ListNet和 BoltzRank。此外,位置信息并沒有在 loss 中得到充分利用,可以考慮在 ListNet 和 ListMLE 的 loss 中引入位置折扣因子。

      「代表算法:」

      基于Measure-specific的SoftRank、SVM-MAP、SoftRank、LambdaRank、LambdaMART,基于Non-measure specific的ListNet、ListMLE、BoltzRank。

      「推薦中使用較多的Listwise方法是LambdaMART。」

      推薦常用的排序?qū)W習(xí)算法

      BPR(貝葉斯個(gè)性化排序)

      「基本設(shè)定」

      「貝葉斯個(gè)性化排序(Bayesian personalized ranking,BPR」)是一種Pairwise方法,并且借鑒了矩陣分解的思路,在開始深入講解原理之前我們先了解整個(gè)BPR的基礎(chǔ)假設(shè)以及基本設(shè)定。[^8] [^9]

      因?yàn)槭腔谪惾~斯的Pairwise方法,BPR有兩個(gè)基本假設(shè):

    • 每個(gè)用戶之間的偏好行為相互獨(dú)立,即用戶 在商品 和 之間的偏好和其他用戶無關(guān)。

    • 同一用戶對不同物品的偏序相互獨(dú)立,也就是用戶 在商品 和 之間的偏好和其他的商品無關(guān)。

    • 在原始論文中,BPR用來解決隱式反饋的推薦排序問題,假設(shè)有用戶集 和物品集 ,當(dāng)用戶 ()在物品展示頁面點(diǎn)擊了物品 ()卻沒有點(diǎn)擊同樣曝光在展示頁面的物品 (),則說明對于物品和物品 ,用戶 可能更加偏好物品 ,用Pairwise的思想則是物品 的排序要比物品 的排序更靠前,這個(gè)偏序關(guān)系可以寫成一個(gè)三元組$,為了簡化表述,我們用>_u符號表示用戶u的偏好,可以表示為:i>_uj。單獨(dú)用>_u代表用戶u對應(yīng)的所有商品中兩兩偏序關(guān)系,可知>_u \subset I^2,且>_u$滿足下面的特性:

      • 完整性:

      • 反對稱性:

      • 傳遞性:

      記S為所有用戶對所有物品發(fā)生的隱式反饋集合,這里針對隱式反饋問題對評分矩陣進(jìn)行了簡化,即點(diǎn)擊過則視為正例,記為1;沒點(diǎn)擊過則視為負(fù)例,通常會(huì)置為0,如下圖所示:

      可知,,我們這里定義:

      「矩陣分解的一些缺陷」

      我們知道,矩陣分解是通過預(yù)測用戶對候選物品的評分,然后根據(jù)這個(gè)預(yù)測評分去排序,最后再推薦給用戶。這種方法是一種典型的Pointwise方法,無論是預(yù)測評分還是預(yù)測隱式反饋,本質(zhì)上都是在預(yù)測用戶對一個(gè)物品的偏好程度。

      但是這種方法有很大的問題,因?yàn)楹芏鄷r(shí)候我們只能收集到少數(shù)正例樣本,剩下的數(shù)據(jù)其實(shí)是真實(shí)負(fù)例和缺失值的混合構(gòu)成(這里的缺失值是指訓(xùn)練數(shù)據(jù)中除正例和負(fù)例外的未知數(shù)據(jù),可以理解為未曝光或者曝光了的但是用戶可能沒有注意到缺失數(shù)據(jù),所以缺失值中的樣本即有可能是正例,也有可能是負(fù)例),而我們用這種方法構(gòu)建訓(xùn)練數(shù)據(jù)的時(shí)候,往往無法確定負(fù)例到底是哪些,就只能把除正例以外的其他部分都當(dāng)作是負(fù)例,這就會(huì)使得訓(xùn)練數(shù)據(jù)中負(fù)例的一部分其實(shí)是缺失值。把缺失值當(dāng)作是負(fù)樣本,再以預(yù)測誤差為評判標(biāo)準(zhǔn)去使勁逼近這些樣本。逼近正樣本沒問題,但是同時(shí)逼近的負(fù)樣本只是缺失值而已,真正呈現(xiàn)在用戶面前,并不能確定是不喜歡還是喜歡。而且,這樣的模型僅能預(yù)測正例或負(fù)例,對于類別內(nèi)的樣本無法深入?yún)^(qū)別其重要性,不利于排序。

      當(dāng)然,對于這種情況,我們也可以用一些其他方法來規(guī)避這些問題,比如負(fù)例采樣,比如按預(yù)測概率排序,但這些方法也僅僅是“緩兵之計(jì)”,對于解決排序問題來說并不完善。

      我們來看看BPR是怎么解決的,它是如何采用Pairwise方法來重新優(yōu)化矩陣分解的。

      「BPR的樣本構(gòu)建」

      首先BPR利用Pairwise的思想來構(gòu)建偏序關(guān)系,它依然沒有從無反饋數(shù)據(jù)中去區(qū)分負(fù)例樣本和缺失值,不過和之前的方法不一樣的是,BPR不是單純地將無反饋數(shù)據(jù)都看做是負(fù)例,而是與正例結(jié)合一起來構(gòu)建偏序關(guān)系。「這里的核心假設(shè)是,某用戶對他有過反饋的物品的偏好程度一定比沒有反饋過的物品高」(這里的反饋一般指隱式反饋,如點(diǎn)擊瀏覽等,不涉及負(fù)反饋),未反饋的物品包括真正的負(fù)例以及缺失值。BPR試圖通過用戶的反饋矩陣S來為每一個(gè)用戶構(gòu)建出完整的偏序關(guān)系,也稱全序關(guān)系,用表示。

      例如下圖:

      圖左邊的矩陣是反饋數(shù)據(jù)集S,“+”代表有反饋數(shù)據(jù),“?”代表無反饋數(shù)據(jù)。

      圖右邊的小矩陣是每個(gè)用戶的偏序關(guān)系矩陣,“+”代表用戶喜歡 勝過喜歡 ,作為訓(xùn)練數(shù)據(jù)的正例;“-”代表用戶喜歡 勝過喜歡 ,作為訓(xùn)練數(shù)據(jù)的負(fù)例;“?”代表同類數(shù)據(jù)無法確定偏序關(guān)系。

      比如用戶看過產(chǎn)品但是沒看過產(chǎn)品,所以我們假設(shè)用戶喜歡產(chǎn)品勝過:即。對于用戶均產(chǎn)生反饋過的產(chǎn)品,我們不能推斷出任何偏好,同樣,對于那些用戶都沒有反饋過的兩個(gè)產(chǎn)品,我們也不能推斷出任何偏好。也就是說,兩個(gè)有反饋數(shù)據(jù)之間以及兩個(gè)無反饋數(shù)據(jù)之間都無法構(gòu)建偏序關(guān)系。

      為了形式化描述這種情形,我們定義訓(xùn)練數(shù)據(jù) :

      其中 的表示是用戶 更喜歡 勝過 ; 是離散數(shù)學(xué)中的符號,表示and,等同于;表示物品集 除正例外其他剩余的樣本。

      由于是反對稱的,因此我們也隱式地考慮了負(fù)樣本。

      相比于單點(diǎn)法的矩陣分解,基于配對法的BPR有兩大優(yōu)勢:

    • 訓(xùn)練數(shù)據(jù)由正樣本,負(fù)樣本和缺失值構(gòu)成。兩個(gè)未觀測到的物品的缺失值正好就是以后需要進(jìn)行排序的物品對。這意味著從成對訓(xùn)練的角度,訓(xùn)練數(shù)據(jù)和測試數(shù)據(jù)是不相交的。

    • 訓(xùn)練數(shù)據(jù)是為后面的排序目標(biāo)函數(shù)生成的,也就是觀測值的子集被用作訓(xùn)練數(shù)據(jù)。

    • 「從MF到BPR」

      通過上面的樣本構(gòu)造便可以得到我們的訓(xùn)練樣本,每一個(gè)樣本都是由用戶 、物品 、物品 、以及兩個(gè)物品的偏序關(guān)系 構(gòu)成的四元組 ,其中 表示兩個(gè)物品偏序關(guān)系并作為label,通常用0、1標(biāo)注,如物品 的偏序大于物品 的,則 標(biāo)注為1,反之則標(biāo)注為0。

      接下來我們來看看如何構(gòu)建目標(biāo)函數(shù)。

      首先我們必須清楚,這回的目標(biāo)不再是像MF的均方根誤差最小,而是需要滿足物品相對排序最佳。一個(gè)簡單的思路就是當(dāng)?shù)玫搅擞脩艉臀锲返耐扑]分?jǐn)?shù)后,就可以計(jì)算四元組的樣本中,物品 和物品 的分?jǐn)?shù)差,這個(gè)分?jǐn)?shù)可能是正數(shù),也可能是負(fù)數(shù),也可能是 0。

      我們可以通過預(yù)測分?jǐn)?shù)的差值的大小來判斷排序是否良好,最希望的情況是:如果物品 和物品 偏序關(guān)系的標(biāo)注為 1,那么希望兩者分?jǐn)?shù)之差是個(gè)正數(shù),而且越大越好;如果物品 和物品 的相對順序是 0,則希望分?jǐn)?shù)之差是負(fù)數(shù),且越小越好。

      可以看出,這種方式來構(gòu)建目標(biāo)函數(shù)的話,依然是需要預(yù)測分?jǐn)?shù)的,而這個(gè)分?jǐn)?shù)的預(yù)測最常用的就是矩陣分解的方法,原論文中還用到了另外一種方法,叫自適應(yīng)K近鄰(Adaptive KNN)。這里我們這里只看矩陣分解。「當(dāng)然BPR中的預(yù)測的分?jǐn)?shù)無論在顯示反饋還是隱式反饋情境下,都只是用來輔助度量相對排序,其評分并不作為實(shí)際的意義上的評分。」

      同F(xiàn)unkSVD矩陣一樣,預(yù)測分?jǐn)?shù)的問題可以視作對矩陣進(jìn)行估計(jì)。通過矩陣分解我們可以將目標(biāo)矩陣X近似分解為兩個(gè)低秩矩陣和 的乘積:

      其中 是特征矩陣的維度。 中的每一行可以視作描述一個(gè)用戶的特征向量,類似地中的每一行可以視作描述物品 的特征向量。因此,預(yù)測公式也可以寫成:

      $$\hat{x}_{ui}=q_i^T p_u==\sum _{f=1}^{k}p_{uf} \cdot q_{if} $$

      其中,??,?? 代表向量點(diǎn)積。

      有了這些基礎(chǔ)的理解后,接下來我們來看BPR如何在矩陣分解的基礎(chǔ)上來構(gòu)建排序的目標(biāo)函數(shù),BPR的過程實(shí)際上是一種優(yōu)化過程。

      「BPR 損失函數(shù)推導(dǎo)」

      BPR 基于「最大后驗(yàn)估計(jì)」來求解模型參數(shù),這里我們用來表示參數(shù)和, 代表用戶u對應(yīng)的所有商品的全序關(guān)系,則優(yōu)化目標(biāo)是。根據(jù)貝葉斯公式,我們有:

      由于我們求解假設(shè)了用戶的排序和其他用戶無關(guān),那么對于任意一個(gè)用戶 來說,對所有的物品一樣,所以有:

      這個(gè)優(yōu)化目標(biāo)轉(zhuǎn)化為兩部分。第一部分和樣本數(shù)據(jù)集有關(guān),第二部分和樣本數(shù)據(jù)集無關(guān)。

      對于第一部分,由于我們假設(shè)每個(gè)用戶之間的偏好行為相互獨(dú)立,同一用戶對不同物品的偏序相互獨(dú)立,所以有:

      其中,

      這里說一下我對負(fù)例部分 寫法的理解:

      在構(gòu)建樣本一小節(jié),我們已經(jīng)知道,,這里依然以上面矩陣圖為例來說明。

      對而言,其訓(xùn)練集合。根據(jù),它的負(fù)例表達(dá)為,并且只有這一種表達(dá)。因?yàn)?#xff08;,,)中的和都是有限制的。

      根據(jù)上面講到的完整性和反對稱性,優(yōu)化目標(biāo)的第一部分可以簡化為:

      而對于這個(gè)概率,我們可以使用下面這個(gè)式子來代替:

      其中,是sigmoid函數(shù),即:

      這里你也許會(huì)問,為什么可以用這個(gè)sigmoid函數(shù)來代替呢? 其實(shí)這里的代替可以選擇其他的函數(shù),不過式子需要滿足BPR的完整性,反對稱性和傳遞性。原論文作者這么做除了是滿足這三個(gè)性質(zhì)外,另一個(gè)原因是為了方便優(yōu)化計(jì)算。

      對于這個(gè)式子,我們要滿足當(dāng)時(shí),, 反之當(dāng)時(shí),,最簡單的表示這個(gè)性質(zhì)的方法就是

      而 , ,就是我們的矩陣對應(yīng)位置的值。這里為了方便,我們不寫,這樣上式可以表示為:

      注意上面的這個(gè)式子也不是唯一的,只要可以滿足上面提到的當(dāng)時(shí),,以及對應(yīng)的相反條件即可。這里我們?nèi)匀话丛撐牡氖阶觼怼?/p>

      最終,我們的第一部分優(yōu)化目標(biāo)轉(zhuǎn)化為:

      對于第二部分,原作者大膽使用了貝葉斯假設(shè),即這個(gè)概率分布符合正態(tài)分布,且對應(yīng)的均值是0,協(xié)方差矩陣是,即

      原作者為什么這么假設(shè)呢?個(gè)人覺得還是為了優(yōu)化方便,因?yàn)楹竺嫖覀冏鰞?yōu)化時(shí),需要計(jì)算,而對于上面假設(shè)的這個(gè)多維正態(tài)分布,其對數(shù)和成正比。即:

      可以發(fā)現(xiàn),它正是我們常見的正則化項(xiàng),用來防止過擬合,這就是說正則項(xiàng)其實(shí)可以認(rèn)為模型參數(shù)還有個(gè)先驗(yàn)概率,這是貝葉斯學(xué)派的觀點(diǎn),也是 BPR 這個(gè)名字中“貝葉斯”的來歷。

      最終對于我們的最大對數(shù)后驗(yàn)估計(jì)函數(shù)

      由于

      再添加負(fù)號以求最小損失,并將拆分,由此我們便得到「BPR最終的損失函數(shù)」

      這樣一看,其實(shí)BPR的損失函數(shù)還是很簡單的。

      「BPR的優(yōu)化學(xué)習(xí)過程」

      BPR可以用常用的梯度下降或者牛頓法來優(yōu)化,我們以梯度下降為例。

      對求導(dǎo):

      這樣我們可以求出:

      有了梯度迭代式子,用梯度下降法求解模型參數(shù)就容易了。下面我們歸納下BPR的算法流程。

      「BPR算法流程」

      下面簡要總結(jié)下BPR的算法訓(xùn)練流程:

      輸入:訓(xùn)練集D三元組,學(xué)習(xí)率, 正則化參數(shù),分解矩陣維度k。

      輸出:模型參數(shù),矩陣P、Q

    • 隨機(jī)初始化矩陣P、Q

    • 迭代更新模型參數(shù):

    • 3. 如果P、Q收斂,則算法結(jié)束,輸出P、Q,否則回到步驟2。

      當(dāng)我們拿到P、Q后,就可以計(jì)算出每一個(gè)用戶u對應(yīng)的任意一個(gè)商品的排序分:,最終選擇排序分最高的若干商品輸出。

      「BPR和AUC的關(guān)系」

      我們通過上面的內(nèi)容知道,AUC是一個(gè)不連續(xù)不可微分的函數(shù),我們無法直接當(dāng)做目標(biāo)函數(shù)來進(jìn)行優(yōu)化,不過BPR目標(biāo)函數(shù)經(jīng)過化簡和變形后,和把 AUC 當(dāng)成目標(biāo)函數(shù)是非常相似的,因此,「BPR 模型從某種角度來說,其實(shí)是AUC的一種近似。」

      單用戶AUC通常定義為:

      因此平均AUC為:

      如用我們上面Ds表示方法,則可寫成:

      其中, 為歸一化常數(shù):

      而我們之前BPR的優(yōu)化目標(biāo)函數(shù)為:

      通過這兩個(gè)公式的對比,不難發(fā)現(xiàn),除了標(biāo)準(zhǔn)化常數(shù)之外,它們只是在損失函數(shù)上稍有不同。AUC使用了不可微分的損失,實(shí)際上可以看作一個(gè)階躍函數(shù)(Heaviside Function):

      而BPR則用的是可微分的Sigmoid函數(shù)來代替這個(gè)Heaviside函數(shù),因?yàn)檫@兩個(gè)函數(shù)圖像非常相似。其實(shí)這種方式在實(shí)踐中很常見 ,通常會(huì)啟發(fā)式地選擇一個(gè)與不可微的躍遷函數(shù)圖像非常接近的可微函數(shù),當(dāng)然這里我們?yōu)榱吮阌趦?yōu)化,最后我們用的是。如下圖所示:

      「BPR小結(jié)」

      BPR其實(shí)可以看作在準(zhǔn)確率之上更加高層的排序算法框架,可以將Pointwise變成Pairwise,因此,實(shí)際上它不僅僅局限于矩陣分解,理論上Pointwise算法都可以使用BPR,難點(diǎn)在于求損失函數(shù)。另外,基于MF的BPR經(jīng)過了很好的驗(yàn)證,使用范圍很廣,所以但凡適用于MF的推薦場景,基本都可以在其上層添加BPR進(jìn)行排序優(yōu)化。

      在實(shí)際產(chǎn)品中,BPR之類的推薦排序在海量數(shù)據(jù)中選擇極少量數(shù)據(jù)做推薦的時(shí)候有優(yōu)勢,因此在很多互聯(lián)網(wǎng)大廠中應(yīng)用也很廣泛。

      LambdaMART

      LambdaMART是一個(gè)享有盛譽(yù)的經(jīng)典機(jī)器學(xué)習(xí)排序模型,也是微軟在Bing中使用了較長時(shí)間的模型。LambdaMART的提出先后經(jīng)由RankNet、LambdaRank逐步演化而來,這三種算法被多次證明能夠很好地解決現(xiàn)實(shí)中的排序問題,而它們的提出,都涉及一個(gè)核心人物,他就是來自微軟研究院的克里斯多夫?博格斯(Christopher J.C. Burges),可以說,是博格斯領(lǐng)導(dǎo)的團(tuán)隊(duì)發(fā)明了微軟搜索引擎 Bing 的算法。

      接下來,我們依次介紹RankNet、LambdaRank和LambdaMART算法。[^10]

      RankNet

      RankNet是2005年微軟提出的一種Pairwise的Learning to Rank算法,它從概率的角度來解決排序問題。RankNet的核心是「提出了一種概率損失函數(shù)來學(xué)習(xí)Ranking Function」,并應(yīng)用Ranking Function對文檔進(jìn)行排序。這里的Ranking Function可以是任意對參數(shù)可微的模型,也就是說,該概率損失函數(shù)并不依賴于特定的機(jī)器學(xué)習(xí)模型,在論文中,RankNet是基于神經(jīng)網(wǎng)絡(luò)實(shí)現(xiàn)的。除此之外,GDBT、LR、MF等模型也可以應(yīng)用于該框架。

      「預(yù)測相關(guān)性概率」

      RankNet網(wǎng)絡(luò)將輸入query的特征向量映射為一個(gè)實(shí)數(shù)。其實(shí)它的整個(gè)過程其實(shí)與上面介紹的BPR十分相似。具體地,給定特定query下的兩個(gè)文檔和,其特征向量分別為和,經(jīng)過RankNet進(jìn)行前向計(jì)算得到對應(yīng)的分?jǐn)?shù)為和。用表示比排序更靠前(如對某個(gè)query來說,被標(biāo)記為“good”,被標(biāo)記為“bad”)。RankNet把排序問題轉(zhuǎn)換成比較一個(gè) 文檔對的排序概率問題,它首先計(jì)算每個(gè)文檔的得分,再用下面的公式來計(jì)算應(yīng)該比排序更靠前的概率:

      這個(gè)概率實(shí)際上就是深度學(xué)習(xí)中經(jīng)常使用的sigmoid函數(shù),由于參數(shù)影響的是sigmoid函數(shù)的形狀,對最終結(jié)果影響不大,因此通常默認(rèn)使用 進(jìn)行簡化。

      RankNet證明了如果知道一個(gè)待排序文檔的排列中相鄰兩個(gè)文檔之間的排序概率,則通過推導(dǎo)可以算出每兩個(gè)文檔之間的排序概率。因此對于一個(gè)待排序文檔序列,只需計(jì)算相鄰文檔之間的排序概率,不需要計(jì)算所有pair,減少計(jì)算量。

      「真實(shí)相關(guān)性概率」

      對于特定的query,定義為文檔和文檔被標(biāo)記的標(biāo)簽之間的關(guān)聯(lián),即

      我們定義比更相關(guān)(排序更靠前)的真實(shí)概率為:

      「RankNet的損失函數(shù)」

      對于一個(gè)排序,RankNet從各個(gè)doc的相對關(guān)系來評價(jià)排序結(jié)果的好壞,排序的效果越好,那么有錯(cuò)誤相對關(guān)系的pair就越少。所謂錯(cuò)誤的相對關(guān)系即如果根據(jù)模型輸出排在前面,但真實(shí)label為的相關(guān)性小于,那么就記一個(gè)錯(cuò)誤pair,**RankNet本質(zhì)上就是以錯(cuò)誤的pair最少為優(yōu)化目標(biāo),也就是說RankNet的目的是優(yōu)化逆序?qū)?shù)。而在抽象成損失函數(shù)時(shí),RankNet實(shí)際上是引入了概率的思想:不是直接判斷排在前面,而是說以一定的概率P排在前面,即是以預(yù)測概率與真實(shí)概率的差距最小作為優(yōu)化目標(biāo)。**最后,**RankNet使用交叉熵(Cross Entropy)作為損失函數(shù)**,來衡量對的擬合程度:(注:這里為了與原論文保持一致,用C表示損失函數(shù),但實(shí)際上,更習(xí)慣用L。)

      化簡后,有:

      當(dāng),有:

      當(dāng),有:

      可以看出損失函數(shù)具有對稱性,也即交換和的位置,損失函數(shù)的值不變。

      分析損失函數(shù)的趨勢發(fā)現(xiàn),如果對文檔和的打分可以正確地?cái)M合標(biāo)記的標(biāo)簽,則趨向于0,否則趨向于線性函數(shù)。具體地,假如,即應(yīng)該比排序高:

      如果,則擬合的分?jǐn)?shù)可以正確排序文檔和文檔,

      如果$s_i

      下面展示了當(dāng)分別取1,0,-1的時(shí)候損失函數(shù)以為變量的示意圖[^11]:

      可以看到當(dāng)時(shí),模型預(yù)測的相關(guān)性分?jǐn)?shù)比越大,其損失函數(shù)的值越小;時(shí),比越小,損失函數(shù)的值越小;時(shí),損失函數(shù)的最小值在與相等處取得。

      該損失函數(shù)有以下幾個(gè)特點(diǎn):

    • 當(dāng)兩個(gè)相關(guān)性不同的文檔算出來的模型分?jǐn)?shù)相同時(shí),即,此時(shí)的損失函數(shù)的值為,依然大于0,仍會(huì)對這對pair做懲罰,使他們的排序位置區(qū)分開。

    • 損失函數(shù)是一個(gè)類線性函數(shù),可以有效減少異常樣本數(shù)據(jù)對模型的影響,因此具有魯棒性。

    • Ranknet最終目標(biāo)是訓(xùn)練出一個(gè)打分函數(shù);,使得所有pair的排序概率估計(jì)的損失最小,即:

      其中,表示所有在同一query下,且具有不同相關(guān)性判斷的doc pair,每個(gè)pair有且僅有一次。

      通常,這個(gè)打分函數(shù)只要是光滑可導(dǎo)就行,比如都可以,RankNet使用了兩層神經(jīng)網(wǎng)絡(luò):

      「參數(shù)更新」

      RankNet采用神經(jīng)網(wǎng)絡(luò)模型優(yōu)化損失函數(shù),也就是后向傳播過程,采用梯度下降法求解并更新參數(shù):

      其中, 是學(xué)習(xí)率,論文中實(shí)驗(yàn)時(shí)選取的范圍是1e-3到1e-5,因?yàn)镽ankNet是一種方法框架,因此這里的可以是NN、LR、GBDT等算法的權(quán)重。

      對RankNet的梯度進(jìn)行因式分解,有:

      其中,

      可以發(fā)現(xiàn)其中的對稱關(guān)系,和對的偏導(dǎo)數(shù)可根據(jù)神經(jīng)網(wǎng)絡(luò)求偏導(dǎo)數(shù)的方式求得。

      由公式可知,結(jié)果排序最終由模型得分 確定,它的梯度很關(guān)鍵,于是我們定義:

      考慮有序?qū)?,有 ,于是有簡化

      這個(gè)就是接下來要介紹的LambdaRank和LambdaMART中的Lambda,稱為Lambda梯度。

      「RankNet小結(jié)」

      排序問題的評價(jià)指標(biāo)一般有NDCG、ERR、MAP、MRR等,這些指標(biāo)的特點(diǎn)是不平滑、不連續(xù),無法求梯度,因此無法直接用梯度下降法求解。RankNet的創(chuàng)新點(diǎn)在于沒有直接對這些指標(biāo)進(jìn)行優(yōu)化,而是間接把優(yōu)化目標(biāo)轉(zhuǎn)換為可以求梯度的基于概率的交叉熵?fù)p失函數(shù)進(jìn)行求解。因此任何用梯度下降法優(yōu)化目標(biāo)函數(shù)的模型都可以采用該方法,RankNet采用的是神經(jīng)網(wǎng)絡(luò)模型,其他類似boosting tree等模型也可以使用該方法求解。

      LambdaRank

      RankNet有哪些缺陷,為什么需要LambdaRank?

      盡管 RankNet 取得了一些成功,但它存在一些缺陷,我們講過RankNet本質(zhì)上就是以錯(cuò)誤的pair最少為優(yōu)化目標(biāo),也就是說RankNet的直接目的就是優(yōu)化逆序?qū)?shù)(pairwise error),這種方式一定程度上能夠解決一些排序問題,但它并不完美。

      我們先來直觀認(rèn)識一下RankNet優(yōu)化逆序?qū)?shù)量這個(gè)過程。

      逆序?qū)?shù)(pairwise error)表示一個(gè)排列中,抽查任意兩個(gè)item,一共有 種可能的組合,如果這兩個(gè)item的之間的相對排序錯(cuò)誤,逆序?qū)?shù)量增加1。

      「逆序?qū)?shù)的實(shí)質(zhì)就是插入排序過程中要移動(dòng)元素的次數(shù)。直觀理解為要想把某個(gè)元素移動(dòng)到最優(yōu)排序位置,需要移動(dòng)多少次,兩個(gè)元素就是二者移動(dòng)次數(shù)的和。」

      例如,對某個(gè)Query,和它相關(guān)的文章有兩個(gè),記為 。

    • 如果模型 對此Query返回的n條結(jié)果中, 分別位于前兩位,那么pairwise error就為0;

    • 如果模型 對此Query返回的n條結(jié)果中, 分別位于第1位和第n位,那么pairwise error為n-2;

    • 如果模型 對此Query返回的n條結(jié)果中, 分別位于第2和第3位,那么pair-wise error為2;

    • 假設(shè)RankNet經(jīng)過兩輪迭代實(shí)現(xiàn)下圖所示的順序優(yōu)化:

      第一輪的時(shí)候逆序?qū)?shù)為13,第二輪為 3 + 8 = 11,逆序?qū)?shù)從13優(yōu)化到11,損失確實(shí)是減小了,如果用AUC作為評價(jià)指標(biāo),也可以獲得指標(biāo)的提升。但實(shí)際上,我們不難發(fā)現(xiàn),優(yōu)化逆序?qū)?shù)并沒有考慮位置的權(quán)重,這與我們實(shí)際希望的排序目標(biāo)不一致。下一輪迭代,RankNet為了獲得更大的逆序?qū)?shù)的減小,會(huì)按照黑色箭頭那樣的趨勢,排名靠前的文檔優(yōu)化力度會(huì)減弱,更多的重心是把后一個(gè)文檔往前排,這與我們搜索排序目標(biāo)是不一致的,我們更希望出現(xiàn)紅色箭頭的趨勢,優(yōu)化的重點(diǎn)放在排名靠前的文檔,盡可能地先讓它排在最優(yōu)位置。所以我們需要一個(gè)能夠考慮位置權(quán)重的優(yōu)化指標(biāo)。

      你應(yīng)該理解了,「RankNet以優(yōu)化逆序?qū)?shù)為目標(biāo),并沒有考慮位置的權(quán)重,這種優(yōu)化方式對AUC這類評價(jià)指標(biāo)比較友好,但實(shí)際的排序結(jié)果與現(xiàn)實(shí)的排序需求不一致,現(xiàn)實(shí)中的排序需求更加注重頭部的相關(guān)度,排序評價(jià)指標(biāo)選用 NDCG 這一類的指標(biāo)才更加符合實(shí)際需求。而RankNet這種以優(yōu)化逆序?qū)?shù)為目的的交叉熵?fù)p失,并不能直接或者間接優(yōu)化NDCG這樣的指標(biāo)。」

      我們知道NDCG是一個(gè)不連續(xù)的函數(shù),無法直接優(yōu)化,那LambdaRank又是如何解決這個(gè)問題的呢?

      我們必須先有這樣一個(gè)洞察,「對于絕大多數(shù)的優(yōu)化過程來說,目標(biāo)函數(shù)很多時(shí)候僅僅是為了推導(dǎo)梯度而存在的。而如果我們直接就得到了梯度,那自然就不需要目標(biāo)函數(shù)了。」

      于是,微軟學(xué)者經(jīng)過分析,就直接把RankNet最后得到的Lambda梯度拿來作為LambdaRank的梯度來用了,這也是LambdaRank中Lambda的含義。這樣我們便知道了LambdaRank其實(shí)是一個(gè)經(jīng)驗(yàn)算法,它不是通過顯示定義損失函數(shù)再求梯度的方式對排序問題進(jìn)行求解,而是分析排序問題需要的梯度的物理意義,直接定義梯度,即Lambda梯度。有了梯度,就不用關(guān)心損失函數(shù)是否連續(xù)、是否可微了,所以,微軟學(xué)者直接把NDCG這個(gè)更完善的評價(jià)指標(biāo)與Lambda梯度結(jié)合了起來,就形成了LambdaRank。

      我們來分析一下Lambda梯度的物理意義。

      LambdaRank中的Lambd其實(shí)就是RankNet中的梯度,「可以看成是和中間的作用力,代表下一次迭代優(yōu)化的方向和強(qiáng)度」。如果,則會(huì)給予向上的大小為的推動(dòng)力,而對應(yīng)地會(huì)給予向下的大小為的推動(dòng)力[^12]。對應(yīng)上面的那張圖,Lambda的物理意義可以理解為圖中箭頭,即優(yōu)化趨勢,因此有些人也會(huì)把Lambda梯度稱之為箭頭函數(shù)。

      之后,直接用乘以就可以得到LambdaRank的Lambda,即:

      其中是和交換排序位置得到的NDCG差值。NDCG傾向于將排名高并且相關(guān)性高的文檔更快地向上推動(dòng),而排名低而且相關(guān)性較低的文檔較慢地向上推動(dòng),這樣通過引入IR評價(jià)指標(biāo)就實(shí)現(xiàn)了類似上面圖中紅色箭頭的優(yōu)化趨勢。可以證明,通過此種方式構(gòu)造出來的梯度經(jīng)過迭代更新,最終可以達(dá)到優(yōu)化NDCG的目的。

      另外還可以將替換成其他的評價(jià)指標(biāo),比如ERR等(其實(shí)AUC也可,但不會(huì)這樣用)。

      對于對于特定,累加其他所有排序項(xiàng)的影響,得到:

      可以理解為?檔在query 排列中移動(dòng)的?向和?度。也就是說:「每條文檔移動(dòng)的方向和趨勢取決于其他所有與之 label 不同的文檔。」

      如何理解上面這個(gè)公式呢?舉個(gè)例子:

      如果只有一組Pair ,則。可知。

      當(dāng)然,我們還可以反推一下 LambdaRank 的損失函數(shù),確切地應(yīng)該稱為效用函數(shù)(utility function):

      這里的泛指可用的評價(jià)指標(biāo),但最常用的還是NDCG。

      總結(jié)LambdaRank的主要突破點(diǎn):

      • 分析了梯度的物理意義;

      • 繞開損失函數(shù),直接定義梯度。

      LambdaMART

      LambdaRank重新定義了梯度,賦予了梯度新的物理意義,因此,所有可以使用梯度下降法求解的模型都可以使用這個(gè)梯度,基于決策樹的MART就是其中一種,將梯度Lambda和MART結(jié)合就是大名鼎鼎的LambdaMART。實(shí)踐證明,基于決策樹的方法對于排序問題非常有效果,也就成了很多類似方法的標(biāo)準(zhǔn)配置。LambdaMART不但是微軟 Bing 搜索引擎使用較長時(shí)間的算法,也是獲得2008年Yahoo!learning to rank challenge比賽的冠軍使用的算法。

      MART就是我們熟知的GBDT,LambdaMART只是在GBDT的過程中做了一個(gè)很小的修改。原始GBDT的原理是直接在函數(shù)空間對函數(shù)進(jìn)行求解模型,結(jié)果由許多棵樹組成,每棵樹的擬合目標(biāo)是損失函數(shù)的梯度,而在LambdaMART中這個(gè)梯度就換成了Lambda梯度,這樣就使得GBDT 并不是直接優(yōu)化二分分類問題,而是一個(gè)改裝了的二分分類問題,也就是在優(yōu)化的時(shí)候優(yōu)先考慮能夠進(jìn)一步改進(jìn) NDCG 的方向。

      由此,LambdaMART的整個(gè)過程如下:

      關(guān)鍵過程數(shù)學(xué)推導(dǎo):

      需注意的是,原論文的這部分推導(dǎo)過程比較跳躍,非常粗略,加上數(shù)學(xué)符號的表示也是不太常見,所以我也不能保證下面我的理解一定是對的,LambdaMART這個(gè)過程理解起來不難,但是真的要去代碼實(shí)現(xiàn)會(huì)涉及很多計(jì)算細(xì)節(jié),難度不小,代碼實(shí)踐可參考 :link: LambdaMART代碼實(shí)現(xiàn)(https://blog.csdn.net/mr_tyting/article/details/80580075)。

    • 每棵樹的訓(xùn)練會(huì)先遍歷所有的訓(xùn)練數(shù)據(jù)(label不同的文檔pair),計(jì)算每個(gè)pair互換位置導(dǎo)致的指標(biāo)變化 以及Lambda,即:

      然后計(jì)算每個(gè)文檔的Lambda:

      為了簡化表示,我們將上述求和操作表示如下:

      因此,對于該模型的任何給定狀態(tài)(即對于任何特定的一組分?jǐn)?shù)),以及特定的,我們可以利用Lambda梯度推出更新?lián)p失(效用)函數(shù):

      由此可得

      我們定義:

      于是可知:

      再計(jì)算每個(gè) 的導(dǎo)數(shù),用于后面的牛頓法求解葉子節(jié)點(diǎn)的數(shù)值:

    • 創(chuàng)建回歸樹擬合第一步生成的 ,劃分樹節(jié)點(diǎn)的標(biāo)準(zhǔn)是MSE(Mean Square Error),生成一顆葉子節(jié)點(diǎn)數(shù)為的回歸樹。

    • 對第二步生成的回歸樹,計(jì)算每個(gè)葉子節(jié)點(diǎn)的數(shù)值,采用牛頓迭代法求解,即對落入該葉子節(jié)點(diǎn)的文檔集,用下面的公式計(jì)算第棵樹的第個(gè)葉子節(jié)點(diǎn)上的值:

    • 更新模型,將當(dāng)前學(xué)習(xí)到的回歸樹加入到已有的模型中,用學(xué)習(xí)率(也叫shrinkage系數(shù))做regularization。

    • LambdaMART具有很多優(yōu)勢:[^13]

    • 適用于排序場景:不是傳統(tǒng)的通過分類或者回歸的方法求解排序問題,而是直接求解;

    • 損失函數(shù)可導(dǎo):通過損失函數(shù)的轉(zhuǎn)換,將類似于NDCG這種無法求導(dǎo)的IR評價(jià)指標(biāo)轉(zhuǎn)換成可以求導(dǎo)的函數(shù),并且富有了梯度的實(shí)際物理意義,數(shù)學(xué)解釋非常漂亮;

    • 增量學(xué)習(xí):由于每次訓(xùn)練可以在已有的模型上繼續(xù)訓(xùn)練,因此適合于增量學(xué)習(xí);

    • 組合特征:因?yàn)椴捎脴淠P?#xff0c;因此可以學(xué)到不同特征組合情況;

    • 特征選擇:因?yàn)槭腔贛ART模型,因此也具有MART的優(yōu)勢,每次節(jié)點(diǎn)分裂選取Gain最?的特征,可以學(xué)到每個(gè)特征的重要性,因此可以做特征選擇;

    • 適用于正負(fù)樣本比例失衡的數(shù)據(jù):因?yàn)槟P偷挠?xùn)練對象具有不同label的文檔pair,而不是預(yù)測每個(gè)文檔的label,因此對正負(fù)樣本比例失衡不敏感。

    • LambdaMART提供了一個(gè)很好的算法框架,有了這個(gè)Lambda梯度的計(jì)算和應(yīng)用方法,我們還可以與深度網(wǎng)絡(luò)相結(jié)合,通過該梯度構(gòu)造出的深度學(xué)習(xí)網(wǎng)絡(luò)稱之為LambdaDNN,訓(xùn)練的時(shí)候利用深度網(wǎng)絡(luò)預(yù)測同Query下的Doc得分,根據(jù)用戶實(shí)際點(diǎn)擊Doc的情況計(jì)算Lambda梯度并反向傳播回深度網(wǎng)絡(luò),則可以得到一個(gè)直接預(yù)測NDCG的深度網(wǎng)絡(luò)。Lambda梯度除了與DNN網(wǎng)絡(luò)相結(jié)合外,事實(shí)上可以與絕大部分常見的網(wǎng)絡(luò)結(jié)構(gòu)相結(jié)合。為了進(jìn)一步學(xué)習(xí)到更多交叉特征,在LambdaDNN的基礎(chǔ)上還可以拓展到LambdaDeepFM和LambdaDCN網(wǎng)絡(luò);其中DCN網(wǎng)絡(luò)是一種加入Cross的并行網(wǎng)絡(luò)結(jié)構(gòu),交叉的網(wǎng)絡(luò)每一層的輸出特征與第一層的原始輸入特征進(jìn)行顯性的兩兩交叉,相當(dāng)于每一層學(xué)習(xí)特征交叉的映射去擬合層之間的殘差。美團(tuán)技術(shù)團(tuán)隊(duì)在今年發(fā)表了一篇:link:《大眾點(diǎn)評搜索基于知識圖譜的深度學(xué)習(xí)排序?qū)嵺`》(https://tech.meituan.com/2019/01/17/dianping-search-deeplearning.html),大家可參考其中深度排序的一些思路。

      另外需要注意的是,LmabdaRank和LambdaMART雖然看起來很像配對法(Pairwise),但其實(shí)都屬列表法(Listwise),確切來說是Listwise和Pairwise之間的一種混合方法。列表法從理論上和研究情況來看,都是比較理想的排序?qū)W習(xí)方法。因?yàn)榱斜矸▏L試統(tǒng)一排序?qū)W習(xí)的測試指標(biāo)和學(xué)習(xí)目標(biāo)。盡管在學(xué)術(shù)研究中,純列表法表現(xiàn)優(yōu)異,但是在實(shí)際中,類似于 LambdaRank和LambdaMART 這類思路,也就是基于配對法和列表法之間的混合方法更受歡迎。因?yàn)閺目傮w上看,純列表法的運(yùn)算復(fù)雜度都比較高,而在工業(yè)級的實(shí)際應(yīng)用中,真正的優(yōu)勢并不是特別大,因此純列表法的主要貢獻(xiàn)目前還多是學(xué)術(shù)價(jià)值。

      應(yīng)用場景

      在推薦領(lǐng)域,排序?qū)W習(xí)可能會(huì)用在以下場景:

    • 用于多路召回策略的融合排序

      一個(gè)推薦系統(tǒng)的召回階段可能會(huì)用到多種不同召回策略,比如基于內(nèi)容的召回、基于熱門物品的召回、基于協(xié)同過濾的召回、基于類別和標(biāo)簽的召回等等,不同的召回策略召回的物品無法確切地分辨哪個(gè)策略召回更重要,所以需要一個(gè)排序?qū)W習(xí)模型,根據(jù)用戶的行為反饋來對多路召回的物品進(jìn)行排序推薦,這也是排序模塊的一大重要作用。

    • 多目標(biāo)學(xué)習(xí)排序

      通常一個(gè)推薦系統(tǒng)的目標(biāo)是提高點(diǎn)擊率(CTR)或轉(zhuǎn)化率(CVR),但是這些并不能完全反映用戶對推薦物品的滿意度,以此為目標(biāo)的推薦系統(tǒng)也無法保證用戶存留。為了提高用戶對推薦物品滿意度,可能還需要依賴更多的指標(biāo),比如加購、收藏、分享等等。由此便產(chǎn)生了多種目標(biāo),那如何將多種目標(biāo)綜合到一個(gè)模型里面進(jìn)行學(xué)習(xí),這就是推薦系統(tǒng)的多目標(biāo)學(xué)習(xí),而排序?qū)W習(xí)可以作為多目標(biāo)學(xué)習(xí)的一種方法。

      關(guān)于多目標(biāo)學(xué)習(xí),更多內(nèi)容可參考我的另一篇文章《推薦系統(tǒng)中的多任務(wù)學(xué)習(xí)》(https://lumingdong.cn/multi-task-learning-in-recommendation-system.html),這里僅談一下常見的多目標(biāo)學(xué)習(xí)方法。

      1)每個(gè)目標(biāo)訓(xùn)練一個(gè)模型,每個(gè)模型算出一個(gè)分?jǐn)?shù)(預(yù)估概率),然后根據(jù)業(yè)務(wù)設(shè)計(jì)一個(gè)經(jīng)驗(yàn)公式計(jì)算出綜合分?jǐn)?shù),再按照綜合分?jǐn)?shù)進(jìn)行排序推薦。這個(gè)經(jīng)驗(yàn)公式通常會(huì)包含代表各個(gè)目標(biāo)重要性的超參數(shù)(比如最簡單的線性回歸中的權(quán)重),但這些超參數(shù)基本是靠人工根據(jù)經(jīng)驗(yàn)來確定的,因?yàn)楹茈y標(biāo)注 Label,不太容易用模型學(xué)習(xí)。

      2)使用排序?qū)W習(xí)方法融合多目標(biāo),一種常見的方法是對多目標(biāo)產(chǎn)生的物品構(gòu)建Pair,比如用戶對物品產(chǎn)生的購買,對物品 產(chǎn)生了了點(diǎn)擊,假入我們覺得購買的目標(biāo)比點(diǎn)擊的目標(biāo)更重要,就可以讓。有了順序?qū)?#xff0c;我們便可以訓(xùn)練排序?qū)W習(xí)模型。比如根據(jù)前面講得特征工程建立一個(gè) LR模型或者DNN模型。訓(xùn)練目標(biāo)就是學(xué)習(xí)DNN或者LR的參數(shù)。

      3)采?用多任務(wù)學(xué)習(xí)(multi-task learning),共享參數(shù),學(xué)習(xí)出多個(gè)分?jǐn)?shù),最后結(jié)合起來。典型的算法有谷歌的MMOE(Multi-gate Mixture-of-Experts)以及阿里的ESMM(Entire Space Multi-Task Model)。

    • 參考資料

      [^1]: [延伸]Tie-Yan Liu. Learning to Rank for Information Retrieval. Springer
      [^2]: [延伸]Hang Li. Learning to rank for information retrieval and natural language processing
      [^3]: [延伸]Li Hang. A Short Introduction to Learning to Rank
      [^4]: Learning to rank學(xué)習(xí)基礎(chǔ)
      [^5]: 達(dá)觀數(shù)據(jù). 資訊信息流LTR實(shí)踐. 機(jī)器之心
      [^6]: 洪亮劼. AI技術(shù)內(nèi)參. 極客時(shí)間
      [^7]: [吳佳金等. 改進(jìn)Pairwise損失函數(shù)的排序?qū)W習(xí)方法. 知網(wǎng)](http://cpfd .cnki.com.cn/Article/CPFDTOTAL-ZGZR201008001015.htm)
      [^8]: Steffen Rendle et. Bayesian Personalized Ranking from Implicit Feedback. arxiv
      [^9]: 劉建平. 貝葉斯個(gè)性化排序(BPR)算法小結(jié). cnblogs
      [^10]: Christopher J.C. Burges. From RankNet to LambdaRank to LambdaMART: An Overview. Microsoft
      [^11]: 笨兔勿應(yīng). Learning to Rank算法介紹. cnblogs
      [^12]: RL-Learning. 機(jī)器學(xué)習(xí)排序算法:RankNet to LambdaRank to LambdaMART. cnblogs
      [^13]: huagong_adu. Learning To Rank之LambdaMART的前世今生. CSDN

      往期精彩回顧適合初學(xué)者入門人工智能的路線及資料下載機(jī)器學(xué)習(xí)及深度學(xué)習(xí)筆記等資料打印機(jī)器學(xué)習(xí)在線手冊深度學(xué)習(xí)筆記專輯《統(tǒng)計(jì)學(xué)習(xí)方法》的代碼復(fù)現(xiàn)專輯 AI基礎(chǔ)下載機(jī)器學(xué)習(xí)的數(shù)學(xué)基礎(chǔ)專輯獲取一折本站知識星球優(yōu)惠券,復(fù)制鏈接直接打開:https://t.zsxq.com/662nyZF本站qq群704220115。加入微信群請掃碼進(jìn)群(如果是博士或者準(zhǔn)備讀博士請說明):

    總結(jié)

    以上是生活随笔為你收集整理的【推荐系统】推荐系统中的排序学习的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。