推薦系統(tǒng)技術(shù)演進(jìn)趨勢(shì):重排篇
煉丹筆記干貨
《推薦系統(tǒng)技術(shù)演進(jìn)趨勢(shì)》從召回篇、排序篇、重排篇依次更新,本文為重排篇。錯(cuò)過《推薦系統(tǒng)技術(shù)演進(jìn)趨勢(shì):召回篇》和《推薦系統(tǒng)技術(shù)演進(jìn)趨勢(shì):排序篇》的小伙伴可以點(diǎn)擊鏈接跳轉(zhuǎn)閱讀。

推薦系統(tǒng)技術(shù),總體而言,與NLP和圖像領(lǐng)域比,發(fā)展速度不算太快。不過最近兩年,由于深度學(xué)習(xí)等一些新技術(shù)的引入,總體還是表現(xiàn)出了一些比較明顯的技術(shù)發(fā)展趨勢(shì)。這篇文章試圖從推薦系統(tǒng)幾個(gè)環(huán)節(jié),以及不同的技術(shù)角度,來對(duì)目前推薦技術(shù)的比較彰顯的技術(shù)趨勢(shì)做個(gè)歸納。個(gè)人判斷較多,偏頗難免,所以還請(qǐng)謹(jǐn)慎參考。
在寫技術(shù)趨勢(shì)前,照例還是對(duì)推薦系統(tǒng)的宏觀架構(gòu)做個(gè)簡(jiǎn)單說明,以免讀者迷失在技術(shù)細(xì)節(jié)中。
實(shí)際的工業(yè)推薦系統(tǒng),如果粗分的化,經(jīng)常講的有兩個(gè)階段。首先是召回,主要根據(jù)用戶部分特征,從海量的物品庫里,快速找回一小部分用戶潛在感興趣的物品,然后交給排序環(huán)節(jié),排序環(huán)節(jié)可以融入較多特征,使用復(fù)雜模型,來精準(zhǔn)地做個(gè)性化推薦。召回強(qiáng)調(diào)快,排序強(qiáng)調(diào)準(zhǔn)。當(dāng)然,這是傳統(tǒng)角度看推薦這個(gè)事情。但是,如果我們更細(xì)致地看實(shí)用的推薦系統(tǒng),一般會(huì)有四個(gè)環(huán)節(jié),如下圖所示:

四個(gè)環(huán)節(jié)分別是:召回、粗排、精排和重排。
召回目的如上所述;有時(shí)候因?yàn)槊總€(gè)用戶召回環(huán)節(jié)返回的物品數(shù)量還是太多,怕排序環(huán)節(jié)速度跟不上,所以可以在召回和精排之間加入一個(gè)粗排環(huán)節(jié),通過少量用戶和物品特征,簡(jiǎn)單模型,來對(duì)召回的結(jié)果進(jìn)行個(gè)粗略的排序,在保證一定精準(zhǔn)的前提下,進(jìn)一步減少往后傳送的物品數(shù)量,粗排往往是可選的,可用可不同,跟場(chǎng)景有關(guān)。
之后,是精排環(huán)節(jié),使用你能想到的任何特征,可以上你能承受速度極限的復(fù)雜模型,盡量精準(zhǔn)地對(duì)物品進(jìn)行個(gè)性化排序。排序完成后,傳給重排環(huán)節(jié),傳統(tǒng)地看,這里往往會(huì)上各種技術(shù)及業(yè)務(wù)策略,比如去已讀、去重、打散、多樣性保證、固定類型物品插入等等,主要是技術(shù)產(chǎn)品策略主導(dǎo)或者為了改進(jìn)用戶體驗(yàn)的。
那么,每個(gè)環(huán)節(jié),從技術(shù)發(fā)展的角度看,都各自有怎樣的發(fā)展趨勢(shì)呢?下面我們分頭說明。

在重排環(huán)節(jié),常規(guī)的做法,這里是個(gè)策略出沒之地,就是集中了各種業(yè)務(wù)和技術(shù)策略。比如為了更好的推薦體驗(yàn),這里會(huì)加入去除重復(fù)、結(jié)果打散增加推薦結(jié)果的多樣性、強(qiáng)插某種類型的推薦結(jié)果等等不同類型的策略。
按理說,這塊沒什么可講的。但是,如果從技術(shù)發(fā)展趨勢(shì)角度看,重排階段上模型,來代替各種花樣的業(yè)務(wù)策略,是個(gè)總體的大趨勢(shì)。


List Wise重排序
關(guān)于List Wise排序,可以從兩個(gè)角度來說:
一個(gè)是優(yōu)化目標(biāo)或損失函數(shù);
一個(gè)是推薦模塊的模型結(jié)構(gòu)。
推薦系統(tǒng)里L(fēng)earning to Rank做排序,我們知道常見的有三種優(yōu)化目標(biāo):Point Wise、Pair Wise和List Wise。所以我們首先應(yīng)該明確的一點(diǎn)是:List Wise它不是指的具體的某個(gè)或者某類模型,而是指的模型的優(yōu)化目標(biāo)或者損失函數(shù)定義方式,理論上各種不用的模型都可以使用List Wise損失來進(jìn)行模型訓(xùn)練。
最簡(jiǎn)單的損失函數(shù)定義是Point Wise,就是輸入用戶特征和單個(gè)物品特征,對(duì)這個(gè)物品進(jìn)行打分,物品之間的排序,就是誰應(yīng)該在誰前面,不用考慮。明顯這種方式無論是訓(xùn)練還是在線推理,都非常簡(jiǎn)單直接效率高,但是它的缺點(diǎn)是沒有考慮物品直接的關(guān)聯(lián),而這在排序中其實(shí)是有用的。
Pair Wise損失在訓(xùn)練模型時(shí),直接用兩個(gè)物品的順序關(guān)系來訓(xùn)練模型,就是說優(yōu)化目標(biāo)是物品A排序要高于物品B,類似這種優(yōu)化目標(biāo)。其實(shí)Pair Wise的Loss在推薦領(lǐng)域已經(jīng)被非常廣泛得使用,比如BPR損失,就是典型且非常有效的Pair Wise的Loss Function,經(jīng)常被使用,尤其在隱式反饋中,是非常有效的優(yōu)化目標(biāo)。
List Wise的Loss更關(guān)注整個(gè)列表中物品順序關(guān)系,會(huì)從列表整體中物品順序的角度考慮,來優(yōu)化模型。在推薦中,List Wise損失函數(shù)因?yàn)橛?xùn)練數(shù)據(jù)的制作難,訓(xùn)練速度慢,在線推理速度慢等多種原因,盡管用的還比較少,但是因?yàn)楦⒅嘏判蚪Y(jié)果整體的最優(yōu)性,所以也是目前很多推薦系統(tǒng)正在做的事情。

從模型結(jié)構(gòu)上來看。因?yàn)橹嘏判蚰K往往是放在精排模塊之后,而精排已經(jīng)對(duì)推薦物品做了比較準(zhǔn)確的打分,所以往往重排模塊的輸入是精排模塊的Top得分輸出結(jié)果,也就是說,是有序的。而精排模塊的打分或者排序?qū)τ谥嘏拍K來說,是非常重要的參考信息。于是,這個(gè)排序模塊的輸出順序就比較重要,而能夠考慮到輸入的序列性的模型,自然就是重排模型的首選。
我們知道,最常見的考慮時(shí)序性的模型是RNN和Transformer,所以經(jīng)常把這兩類模型用在重排模塊,這是很自然的事情。
一般的做法是:排序Top結(jié)果的物品有序,作為RNN或者Transformer的輸入,RNN或者Transformer明顯可以考慮在特征級(jí)別,融合當(dāng)前物品上下文,也就是排序列表中其它物品,的特征,來從列表整體評(píng)估效果。RNN或者Transformer每個(gè)輸入對(duì)應(yīng)位置經(jīng)過特征融合,再次輸出預(yù)測(cè)得分,按照新預(yù)測(cè)的得分重新對(duì)物品排序,就完成了融合上下文信息,進(jìn)行重新排序的目的。
盡管目前還沒看到CNN做重排的方法,但是從機(jī)制上來說,明顯CNN也是比較適合用來做重排環(huán)節(jié)模型的,感興趣的同學(xué)可以試一試。當(dāng)然,前面說的強(qiáng)化學(xué)習(xí),也是非常適合用在List Wise優(yōu)化的,目前也有不少相關(guān)工作出現(xiàn)。


典型工作
1.Personalized Re-ranking for Recommendation
2.Learning a Deep Listwise Context Model for Ranking Refinement

https://zhuanlan.zhihu.com/p/100019681

