01.01 新年首日漲姿勢不能停:召回→排序→重排技術演進趨勢深度總結

新年首日漲姿勢不能停:召回→排序→重排技術演進趨勢深度總結

作者 | 張俊林

來源 | 深度學習前沿筆記專欄

【導讀】推薦系統技術,總體而言,與NLP和圖像領域比,發展速度不算太快。不過最近兩年,由於深度學習等一些新技術的引入,總體還是表現出了一些比較明顯的技術發展趨勢。這篇文章試圖從推薦系統幾個環節,以及不同的技術角度,來對目前推薦技術的比較彰顯的技術趨勢做個歸納。個人判斷較多,偏頗難免,所以還請謹慎參考。

在寫技術趨勢前,照例還是對推薦系統的宏觀架構做個簡單說明,以免讀者迷失在技術細節中。

新年首日涨姿势不能停:召回→排序→重排技术演进趋势深度总结

實際的工業推薦系統,如果粗分的化,經常講的有兩個階段。首先是召回,主要根據用戶部分特徵,從海量的物品庫裡,快速找回一小部分用戶潛在感興趣的物品,然後交給排序環節,排序環節可以融入較多特徵,使用複雜模型,來精準地做個性化推薦。召回強調快,排序強調準。當然,這是傳統角度看推薦這個事情。

但是,如果我們更細緻地看實用的推薦系統,一般會有四個環節,如下圖所示:

新年首日涨姿势不能停:召回→排序→重排技术演进趋势深度总结

四個環節分別是:召回、粗排、精排和重排。召回目的如上所述;有時候因為每個用戶召回環節返回的物品數量還是太多,怕排序環節速度跟不上,所以可以在召回和精排之間加入一個粗排環節,通過少量用戶和物品特徵,簡單模型,來對召回的結果進行個粗略的排序,在保證一定精準的前提下,進一步減少往後傳送的物品數量,粗排往往是可選的,可用可不同,跟場景有關。之後,是精排環節,使用你能想到的任何特徵,可以上你能承受速度極限的複雜模型,儘量精準地對物品進行個性化排序。排序完成後,傳給重排環節,傳統地看,這裡往往會上各種技術及業務策略,比如去已讀、去重、打散、多樣性保證、固定類型物品插入等等,主要是技術產品策略主導或者為了改進用戶體驗的。

那麼,每個環節,從技術發展的角度看,都各自有怎樣的發展趨勢呢?下面我們分頭說明。

召回技術演進趨勢

推薦系統的召回階段是很關鍵的一個環節,但是客觀的說,傳統地看,這個環節,技術含量是不太高的,偏向策略型導向,往往靈機一動,就能想到一個策略,增加一路新的召回。你在網上搜,發現講推薦模型的,95%是講排序階段的模型,講召回的別說模型,講它本身的都很少,這與它的策略導向有關係,大家覺得沒什麼好講的。總體而言,召回環節的有監督模型化以及一切Embedding化,這是兩個相輔相成的總體發展趨勢。而打embedding的具體方法,則可以有各種選擇,比如下面介紹的幾個技術發展趨勢,可以理解為不同的給用戶和物品打embedding的不同方法而已。

模型召回

新年首日涨姿势不能停:召回→排序→重排技术演进趋势深度总结

傳統的標準召回結構一般是多路召回,如上圖所示。如果我們根據召回路是否有用戶個性化因素存在來劃分,可以分成兩大類:一類是無個性化因素的召回路,比如熱門商品或者熱門文章或者歷史點擊率高的物料的召回;另外一類是包含個性化因素的召回路,比如用戶興趣標籤召回。我們應該怎麼看待包含個性化因素的召回路呢?其實吧,你可以這麼看,可以把某個召回路看作是:單特徵模型排序的排序結果。意思是,可以把某路召回,看成是某個排序模型的排序結果,只不過,這個排序模型,在用戶側和物品側只用了一個特徵。比如說,標籤召回,其實就是用用戶興趣標籤和物品標籤進行排序的單特徵排序結果;再比如協同召回,可以看成是隻包含UID和ItemID的兩個特徵的排序結果….諸如此類。我們應該統一從排序的角度來看待推薦系統的各個環節,這樣可能會更好理解本文所講述的一些技術。

如果我們換做上面的角度看待有個性化因素召回路,那麼在召回階段引入模型,就是自然而然的一個拓展結果:無非是把單特徵排序,拓展成多特徵排序的模型而已;而多路召回,則可以通過引入多特徵,被融入到獨立的召回模型中,找到它的替代品。如此而已。所以,隨著技術的發展,在embedding基礎上的模型化召回,必然是個符合技術發展潮流的方向。

新年首日涨姿势不能停:召回→排序→重排技术演进趋势深度总结

那麼如何在召回階段利用模型來代替多路召回呢?上圖展示了一個抽象的模型召回的通用架構,核心思想是:將用戶特徵和物品特徵分離,各自通過某個具體的模型,分別打出用戶Embedding以及物品Embedding。在線上,可以根據用戶興趣Embedding,採用類似Faiss等高效Embedding檢索工具,快速找出和用戶興趣匹配的物品,這樣就等於做出了利用多特徵融合的召回模型了。理論上來說,任何你能見到的有監督模型,都可以用來做這個召回模型,比如FM/FFM/DNN等,常說的所謂“雙塔”模型,指的其實是用戶側和物品側特徵分離分別打Embedding的結構而已,並非具體的模型。

模型召回具備自己獨有的好處和優勢,比如多路召回每路截斷條數的超參個性化問題等會自然被消解掉。當然,它也會帶來自己的問題,比較典型的是召回內容頭部問題,因為之前多路,每路召回個數靠硬性截斷,可以根據需要,保證你想要召回的,總能通過某一路拉回來;而由於換成了模型召回,面向海量物料庫,排在前列得分高的可能聚集在幾個物料分佈比較多的頭部領域。解決這個問題的方法包括比如訓練數據對頭部領域的降採樣,減少某些領域主導,以及在模型角度鼓勵多樣性等不同的方法。

另外一點值得注意的是:如果在召回階段使用模型召回,理論上也應該同步採用和排序模型相同的優化目標,尤其是如果排序階段採用多目標優化的情況下,召回模型也應該對應採取相同的多目標優化。同理,如果整個流程中包含粗排模塊,粗排也應該採用和精排相同的多目標優化,幾個環節優化目標應保持一致。因為召回和粗排是精排的前置環節,否則,如果優化目標不一致,很可能會出現高質量精排目標,在前置環節就被過濾掉的可能,影響整體效果。

典型工作:

FM模型召回:推薦系統召回四模型之:全能的FM模型

DNN雙塔召回:Sampling-Bias-Corrected Neural Modeling for Large Corpus Item Recommendations

用戶行為序列召回

用戶在使用APP或者網站的時候,一般會產生一些針對物品的行為,比如點擊一些感興趣的物品,收藏或者互動行為,或者是購買商品等。而一般用戶之所以會對物品發生行為,往往意味著這些物品是符合用戶興趣的,而不同類型的行為,可能代表了不同程度的興趣。比如購買就是比點擊更能表徵用戶興趣的行為。

新年首日涨姿势不能停:召回→排序→重排技术演进趋势深度总结

而用戶行為過的物品序列,其實是具備表徵用戶興趣的非常有價值的信息,而且這種興趣表徵,是細粒度的用戶興趣,所以對於刻畫用戶興趣具備特別的價值。利用用戶行為過的物品序列,來表徵用戶興趣,具備很好的實用價值。

如果我們抽象地來看的話,利用用戶行為過的物品序列對用戶興趣建模,本質上就是這麼個過程:輸入是用戶行為過的物品序列,可以只用物品ID表徵,也可以融入物品的Side Information比如名稱,描述,圖片等,現在我們需要一個函數Fun,這個函數以這些物品為輸入,需要通過一定的方法把這些進行糅合到一個embedding裡,而這個糅合好的embedding,就代表了用戶興趣。無論是在召回過程,還是排序過程,都可以融入用戶行為序列。在召回階段,我們可以用用戶興趣Embedding採取向量召回,而在排序階段,這個embedding則可以作為用戶側的特徵。

所以,核心在於:這個物品聚合函數Fun如何定義的問題。這裡需要注意的一點是:用戶行為序列中的物品,是有時間順序的。理論上,任何能夠體現時序特點或特徵局部性關聯的模型,都比較適合應用在這裡,典型的比如CNN、RNN、Transformer等,都比較適合用來集成用戶行為序列信息。而目前的很多試驗結果證明,GRU(RNN的變體模型)可能是聚合用戶行為序列效果最好又比較簡單的模型。當然,RNN不能並行的低效率,那是另外一個問題。

在召回階段,如何根據用戶行為序列打embedding,可以採取有監督的模型,比如Next Item Prediction的預測方式即可;也可以採用無監督的方式,比如物品只要能打出embedding,就能無監督集成用戶行為序列內容,例如Sum Pooling。而排序側,必然是有監督的模式,需要注意的是:排序側表徵用戶特徵的時候,可以只用用戶行為過的物品序列,也可以混合用戶其它特徵,比如群體屬性特徵等一起來表徵用戶興趣,方式比較靈活。比如DIEN,就是典型的採用混合模式的方法。

典型工作:

GRU:Recurrent Neural Networks with Top-k Gains for Session-based Recommendations

CNN:Personalized Top-N Sequential Recommendation via Convolutional Sequence Embedding

Transformer: Self-Attentive Sequential Recommendation

用戶多興趣拆分

上文講了利用用戶行為物品序列,打出用戶興趣Embedding的做法。但是,另外一個現實是:用戶往往是多興趣的,比如可能同時對娛樂、體育、收藏感興趣。這些不同的興趣也能從用戶行為序列的物品構成上看出來,比如行為序列中大部分是娛樂類,一部分體育類,少部分收藏類等。那麼能否把用戶行為序列物品中,這種不同類型的用戶興趣細分,而不是都籠統地打到一個用戶興趣Embedding裡呢?用戶多興趣拆分就是解決這類更細緻刻畫用戶興趣的方向。

新年首日涨姿势不能停:召回→排序→重排技术演进趋势深度总结

用戶多興趣拆分,本質上是上文所敘述的用戶行為序列打embedding方向的一個細化,無非上文說的是:以用戶行為序列物品作為輸入,通過一些能體現時序特點的模型,映射成一個用戶興趣embedding。而用戶多興趣拆分,輸入是一樣的,輸出不同,無非由輸出單獨一個用戶embedding,換成輸出多個用戶興趣embedding而已。雖說道理如此,但是在具體技術使用方向上卻不太一樣,對於單用戶興趣embedding來說,只需要考慮信息有效集成即可;而對於多用戶興趣拆分來說,需要多做些事情,多做什麼事情呢?本質上,把用戶行為序列打到多個embedding上,實際它是個類似聚類的過程,就是把不同的Item,聚類到不同的興趣類別裡去。目前常用的拆分用戶興趣embedding的方法,主要是膠囊網絡和Memory Network,但是理論上,很多類似聚類的方法應該都是有效的,所以完全可以在這塊替換成你自己的能產生聚類效果的方法來做。

說到這裡,有同學會問了:把用戶行為序列拆分到不同的embedding裡,有這個必要嗎?反正不論怎樣,即使是一個embedding,信息都已經包含到裡面了,並未有什麼信息損失問題呀。這個問題很好。

我的個人感覺是:在召回階段,把用戶興趣拆分成多個embedding是有直接價值和意義的,前面我們說過,召回階段有時候容易碰到頭部問題,就是比如通過用戶興趣embedding拉回來的物料,可能集中在頭部優勢領域中,造成弱勢興趣不太能體現出來的問題。而如果把用戶興趣進行拆分,每個興趣embedding各自拉回部分相關的物料,則可以很大程度緩解召回的頭部問題。所以我感覺,這種興趣拆分,在召回階段是很合適的,可以定向解決它面臨的一些實際問題。

對於排序環節,是否有必要把用戶興趣拆分成多個,我倒覺得必要性不是太大,很難直觀感受這樣做背後發生作用的機理是怎樣的。我能想到的,在排序環節使用多興趣Embedding能發生作用的地方,好像有一個:因為我們在計算user對某個item是否感興趣的時候,對於用戶行為序列物品,往往計算目標item和行為序列物品的Attention是有幫助的,因為用戶興趣是多樣的,物品Item的類型歸屬往往是唯一的,所以行為序列裡面只有一部分物品和當前要判斷的Item是類型相關的,這會對判斷有作用,其它的無關物品其實沒啥用,於是Attention就是必要的,可以減少那些無關物品對當前物品判斷的影響。而當行為序列物品太多的時候,我們知道,Atttention計算是非常耗時的操作,如果我們把這種Attention計算,放到聚類完的幾個興趣embedding維度計算,無疑能極大提升訓練和預測的速度。貌似這個優點還是成立的。

典型工作:

召回:Multi-Interest Network with Dynamic Routing for Recommendation at Tmall

排序:Practice on Long Sequential User Behavior Modeling for Click-Through Rate Prediction

知識圖譜融合召回

新年首日涨姿势不能停:召回→排序→重排技术演进趋势深度总结

推薦系統中,最核心的數據是用戶對物品的行為數據,因為這直接表明了用戶興趣所在。如上圖所示,如果把用戶放在一側,物品放在另一側,若用戶對某物品有行為產生,則建立一條邊,這樣就構建了用戶-物品交互的二部圖。其實,有另外一種隱藏在冰山之下的數據,那就是物品之間是有一些知識聯繫存在的,就是我們常說的知識圖譜,而這類數據是可以考慮用來增強推薦效果的,尤其是對於用戶行為數據稀疏的場景,或者冷啟動場景。以上圖例子說明,用戶點擊過電影“泰坦尼克號”,這是用戶行為數據,我們知道,電影“泰坦尼克號”的主演是萊昂納多,於是可以推薦其它由萊昂納多主演的電影給這個用戶。後面這幾步操作,利用的是電影領域的知識圖譜數據,通過知識圖譜中的“電影1—>主演—>電影2”的圖路徑給出的推薦結果。

新年首日涨姿势不能停:召回→排序→重排技术演进趋势深度总结

用於做推薦,一般有兩大類知識圖譜融合模式:知識圖譜Embedding模式(KGE)及圖路徑模式。知識圖譜Embedding模式首先根據TransE等對知識圖譜進行Embedding化編碼的工具,將節點和邊轉換成Embedding表徵方式。然後根據用戶行為過的物品,以及物品在知識圖譜中的Embedding和知識圖譜中其它知識embedding的距離,來擴展物品的信息含量,或者擴充用戶行為數據,類似用已知的用戶行為數據,在知識圖譜輔助下進行外擴。

知識圖譜的Embedding模式在可解釋性方面比較弱,因為知識之間的關聯是通過Embedding計算出來的,不好解釋為什麼從這個知識跳到那個知識;而圖路徑模式則是根據物品屬性之間的關聯等人工定義好的所謂Meta-Path,也就是人工定義的知識圖譜中知識的關聯和傳播模式,通過中間屬性來對知識傳播進行路徑搭建,具體例子就是上面說的“電影1主演電影2”,這就是人事先定義好的Meta-Path,也就是人把自己的經驗寫成規則,來利用知識圖譜裡的數據。圖路徑模式在可解釋性方面效果較好,因為是人工定義的傳播路徑,所以非常好理解知識傳播關係,但是往往實際應用效果並不好。

知識圖譜是一種信息拓展的模式,很明顯,對知識進行近距離的拓展,這可能會帶來信息補充作用,但是如果拓展的比較遠,或者拓展不當,反而可能會引入噪音,這個道理好理解。所以,我的感覺是,知識圖譜在排序側並不是特別好用,如果想用的化,比較適合用戶行為數據非常稀疏以及用戶冷啟動的場景,也就是說如果用戶數據太少,需要拓展,可以考慮使用它。

另外,知識圖譜還有一個普適性的問題,完全通用的知識圖譜在特定場景下是否好用,對此我是有疑問的,而專業性的知識圖譜,還有一個如何構建以及構建成本問題;而且很多時候,所謂的知識傳播,是可以通過添加屬性特徵來解決的,比如:電影1—>主演—>電影2這種知識傳播路徑,完全可以通過把主演作為電影這個實體的屬性特徵加入常規排序模型,來達到類似知識近距離傳播的目的,所以感覺也不是很有必要在排序側專門去做知識圖譜拓展這種事情。

這種知識拓展,可能比較適合用在召回階段,因為對於傳統觀點的召回來說,精準並不是最重要的目標,找出和用戶興趣有一定程度相關性但是又具備泛化性能的物品是召回側的重點,所以可能知識圖譜的模式更適合將知識圖譜放在召回側。

當然,知識圖譜有一個獨有的優勢和價值,那就是對於推薦結果的可解釋性;比如推薦給用戶某個物品,可以在知識圖譜裡通過物品的關鍵關聯路徑給出合理解釋,這對於推薦結果的解釋性來說是很好的,因為知識圖譜說到底是人編碼出來讓自己容易理解的一套知識體系,所以人非常容易理解其間的關係。但是,在推薦領域目前的工作中,知識圖譜的可解釋性往往是和圖路徑方法關聯在一起的,而Path類方法,很多實驗證明了,在排序角度來看,是效果最差的一類方法。所以,我覺得,應該把知識圖譜的可解釋性優勢從具體方法中獨立出來,專門用它來做推薦結果的可解釋性,這樣就能獨立發揮它自身的優勢;

至於如何利用知識圖譜做召回,其實很直觀,比如可以採取如下的無監督學習版本:例如,推薦系統裡對用戶感興趣的實體比如某個或者某些明星,往往是個單獨的召回路,而可以根據用戶的興趣實體,通過知識圖譜的實體Embedding化表達後(或者直接在知識圖譜節點上外擴),通過知識外擴或者可以根據Embedding相似性,拓展出相關實體。形成另外一路相關性弱,但是泛化能力強的Knowledge融合召回路。

典型工作:

1. KGAT: Knowledge Graph Attention Network for Recommendation

2. RippleNet: Propagating User Preferences on the Knowledge Graph for Recommender Systems

圖神經網絡模型召回

新年首日涨姿势不能停:召回→排序→重排技术演进趋势深度总结

嚴格來說,知識圖譜其實是圖神經網絡的一個比較特殊的具體實例,但是,知識圖譜因為編碼的是靜態知識,而不是用戶比較直接的行為數據,和具體應用距離比較遠,這可能是導致兩者在推薦領域表現差異的主要原因。圖神經網絡中的圖結構,可以是上面介紹知識圖譜時候說過的“用戶-物品”二部圖,也可以是我們常見的有向圖或者無向圖,圖中的節點是各種不同類型的物品及用戶,邊往往是通過用戶行為建立起來的,可以是具體用戶的具體行為,也可以是所有用戶的群體統計行為,比如物品1—>物品2可以有邊,邊還可以帶上權重,如果越多的用戶對物品1進行行為後對物品2進行行為,則這條邊的權重越大。而且對於用戶或者物品來說,其屬性也可以體現在圖中,比如對於一個

微博,它的文本內容、圖片內容、發佈者等等屬性都可以引入到圖中,比如掛接到物品上,或者建立獨立的節點也是可以的,這取決於具體的做法。

新年首日涨姿势不能停:召回→排序→重排技术演进趋势深度总结

圖神經網絡的最終目的是要通過一定技術手段,獲得圖中節點的embedding編碼。最常用的embedding聚合工具是CNN,對於某個圖節點來說,它的輸入可以有兩類信息,一類是自身的屬性信息,比如上面舉的微博的例子;另外一類是圖結構信息,就是和當前節點有直接邊關聯的其它節點信息。通過CNN,可以對兩類信息進行編碼和聚合,形成圖節點的embedding。通過CNN等信息聚合器,在圖節點上進行計算,並反覆迭代更新圖節點的embedding,就能夠最終獲得可靠的圖節點embedding信息,而這種迭代過程,其實體現的是遠距離的節點將信息逐步通過圖結構傳遞信息的過程,所以圖結構是可以進行知識傳遞和補充的。

我們可以進一步思考下,圖節點因為可以帶有屬性信息,比如物品的Content信息,所以明顯這對於解決物品側的冷啟動問題有幫助;而因為它也允許知識在圖中遠距離進行傳遞,所以比如對於用戶行為比較少的場景,可以形成知識傳遞和補充,這說明它也比較適合用於數據稀疏的推薦場景;另外一面,圖中的邊往往是通過用戶行為構建的,而用戶行為,在統計層面來看,本質上是一種協同信息,比如我們常說的“A物品協同B物品”,本質上就是說很多用戶行為了物品A後,大概率會去對物品B進行行為;所以圖具備的一個很好的優勢是:它比較便於把協同信息、用戶行為信息、內容屬性信息等各種異質信息在一個統一的框架裡進行融合,並統一表徵為embedding的形式,這是它獨有的一個優勢,做起來比較自然。另外的一個特有優勢,就是信息在圖中的傳播性,所以對於推薦的冷啟動以及數據稀疏場景應該特別有用。

因為圖神經網絡,最終獲得的往往是圖中節點的embedding,這個embedding,就像我們上面說的,其實融合了各種異質信息。所以它是特別適合用來做召回的,比如拿到圖網絡中用戶的embedding和物品embedding,可以直接用來做向量召回。當然,物品和用戶的embedding也可以作為特徵,引入排序模型中,這都是比較自然的。有些推薦場景也可以直接根據embedding計算user to user/item to item的推薦結果,比如看了又看這種推薦場景。

早期的圖神經網絡做推薦,因為需要全局信息,所以計算速度是個問題,往往圖規模都非常小,不具備實戰價值。而GraphSAGE則通過一些手段比如從臨近節點進行採樣等減少計算規模,加快計算速度,很多後期改進計算效率的方法都是從這個工作衍生的;而PinSage在GraphSAGE基礎上(這是同一撥人做的),進一步採取大規模分佈式計算,拓展了圖計算的實用性,可以計算Pinterest的30億規模節點、180億規模邊的巨型圖,併產生了較好的落地效果。所以這兩個工作可以重點借鑑一下。

總體而言,圖模型召回,是個很有前景的值得探索的方向。

典型工作:

GraphSAGE: Inductive Representation Learning on Large Graphs

PinSage: Graph Convolutional Neural Networks for Web-Scale Recommender Systems

排序模型技術演進趨勢

排序環節是推薦系統最關鍵,也是最具有技術含量的部分,目前大多數推薦技術其實都聚焦在這塊。下面我們從模型表達能力、模型優化目標以及特徵及信息三個角度分述推薦排序模型的技術發展趨勢。

新年首日涨姿势不能停:召回→排序→重排技术演进趋势深度总结

模型表達能力代表了模型是否具備充分利用有效特徵及特徵組合的能力,其中顯示特徵組合、新型特徵抽取器、增強學習技術應用以及AutoML自動探索模型結構是這方面明顯的技術進化方向;模型優化目標則體現了我們希望推薦系統去做好什麼,往往跟業務目標有關聯,這裡我們主要從技術角度來探討,而多目標優化以及ListWise最優是目前最常見的技術進化方向,ListWise優化目標在排序階段和重排階段都可採用,我們把它放到重排部分去講,這裡主要介紹多目標優化;從特徵和信息角度,如何採用更豐富的新類型特徵,以及信息和特徵的擴充及融合是主要技術進化方向,用戶長短期興趣分離、用戶行為序列數據的使用、圖神經網絡以及多模態融合等是這方面的主要技術趨勢,因為用戶行為序列以及圖神經網絡在召回部分介紹過,這些點同樣可以應用在排序部分,所以這裡不再敘述這兩點。

顯式特徵組合

新年首日涨姿势不能停:召回→排序→重排技术演进趋势深度总结

如果歸納下工業界CTR模型的演化歷史的話,你會發現,特徵工程及特徵組合的自動化,一直是推動實用化推薦系統技術演進最主要的方向,而且沒有之一。最早的LR模型,基本是人工特徵工程及人工進行特徵組合的,簡單有效但是費時費力;再發展到LR+GBDT的高階特徵組合自動化,以及FM模型的二階特徵組合自動化;再往後就是DNN模型的引入,純粹的簡單DNN模型本質上其實是在FM模型的特徵Embedding化基礎上,添加幾層MLP隱層來進行隱式的特徵非線性自動組合而已。所謂隱式,意思是並沒有明確的網絡結構對特徵的二階組合、三階組合進行直接建模,只是通過MLP,讓不同特徵發生交互,至於怎麼發生交互的,怎麼進行特徵組合的,誰也說不清楚,這是MLP結構隱式特徵組合的作用,當然由於MLP的引入,也會在特徵組合時候考慮進入了特徵間的非線性關係。

新年首日涨姿势不能停:召回→排序→重排技术演进趋势深度总结

明白了隱式特徵組合,也就明白了什麼是顯式特徵組合。就是在模型結構中,明確設計一些子網絡或者子結構,對二階特徵組合、三階特徵組合,甚至更高階的特徵組合進行表徵。比如說DeepFM,Deep部分就是個典型的DNN模型,這個大家基本都會用,而FM部分則是明確對特徵二階組合進行建模的子模型。這就是一個典型的顯式二階特徵組合的模型。而如果進一步拓展的話,很自然想到的一個改進思路是:除了明確的把特徵二階組合做一個子結構,還可以把特徵三階特徵組合,更高階特徵組合…..分別做一個模型子結構。融合這些子結構一起來做預測。這就是顯式特徵組合的含義,其實這條線的發展脈絡是異常清晰的。典型的對高階特徵組合建模的比如Deep& Cross、XDeepFM模型等,就是這麼個思路。

在兩年多前,我一直以為這個方向是CTR或者推薦模型的關鍵所在,而且可能如何簡潔融入更多特徵組合是最重要且最有前景的方向。但是後來發現可能錯了,目前基本對這個方向改變了看法。目前我對這個方向的看法是:這個方向確實很重要,但是未來可挖掘的潛力和空間很有限,在這條路上繼續行進,應該不會走得太遠。原因在於,目前基本很多經驗已經證明了,顯式的二階特徵組合是非常重要的,三階特徵組合對不同類型任務基本都有幫助。四階特徵組合已經說不清楚是否有用了,跟數據集有關係,有些數據集合引入顯式4階特徵組合有幫助,有些數據集合沒什麼用。

至於更高階的特徵組合,明確用對應的子結構建模,基本已經沒什麼用了,甚至是負面作用。這說明:我們在實際做事情的時候,其實顯式結構把三階特徵組合引入,已經基本足夠了。這是為什麼說這條路繼續往後走潛力不大的原因。

典型工作:

Deep& Cross: Deep & Cross Network for Ad Click Predictions

XDeepFM: Combining Explicit and Implicit Feature Interactions for Recommender Systems

特徵抽取器的進化

從特徵抽取器的角度來看,目前主流的DNN 排序模型,最常用的特徵抽取器仍然是MLP結構,通常是兩層或者三層的MLP隱層。目前也有理論研究表明:MLP結構用來捕獲特徵組合,是效率比較低下的,除非把隱層神經元個數急劇放大,而這又會急劇增加參數規模。與自然語言處理和圖像處理比較,推薦領域的特徵抽取器仍然處於非常初級的發展階段。所以,探尋新型特徵抽取器,對於推薦模型的進化是個非常重要的發展方向。

新年首日涨姿势不能停:召回→排序→重排技术演进趋势深度总结

目前其它AI領域裡,常用的特徵抽取器包括圖像領域的CNN、NLP領域的RNN和Transformer。這些新型特徵抽取器,在推薦領域最近兩年也逐步開始嘗試使用,但是宏觀地看,在推薦領域,相對MLP結構並未取得明顯優勢,這裡的原因比較複雜。CNN捕獲局部特徵關聯是非常有效的結構,但是並不太適合做純特徵輸入的推薦模型,因為推薦領域的特徵之間,在輸入順序上並無必然的序列關係,基本屬於人工定義隨機順序,而CNN處理這種遠距離特徵關係能力薄弱,所以並不是特別適合用來處理特徵級的推薦模型。

當然,對於行為序列數據,因為本身帶有序列屬性,所以CNN和RNN都是非常適合應用在行為序列結構上的,也是有一定應用歷史的典型工具,但是對於沒有序關係存在的特徵來說,這兩個模型的優勢不能發揮出來,反而會放大各自的劣勢,比如CNN的捕獲遠距離特徵關係能力差的弱點,以及RNN的不可並行處理、所以速度慢的劣勢等。

Transformer作為NLP領域最新型也是最有效的特徵抽取器,從其工作機制來說,其實是非常適合用來做推薦的。為什麼這麼說呢?核心在於Transformer的Multi-Head Self Attention機制上。MHA結構在NLP裡面,會對輸入句子中任意兩個單詞的相關程度作出判斷,而如果把這種關係套用到推薦領域,就是通過MHA來對任意特徵進行特徵組合,而上文說過,特徵組合對於推薦是個很重要的環節,所以從這個角度來說,Transformer是特別適合來對特徵組合進行建模的,一層Transformer Block代表了特徵的二階組合,更多的Transformer Block代表了更高階的特徵組合。

但是,實際上如果應用Transformer來做推薦,其應用效果並沒有體現出明顯優勢,甚至沒有體現出什麼優勢,基本稍微好於或者類似於典型的MLP結構的效果。這意味著,可能我們需要針對推薦領域特點,對Transformer需要進行針對性的改造,而不是完全直接照搬NLP裡的結構。

典型工作:

AutoInt: Automatic Feature Interaction Learning via Self-Attentive Neural Networks

DeepFM: An End-to-End Wide & Deep Learning Framework for CTR Prediction

AutoML在推薦的應用

AutoML在17年初開始出現,最近三年蓬勃發展,在比如圖像領域、NLP領域等都有非常重要的研究進展,在這些領域,目前都能通過AutoML找到比人設計的效果更好的模型結構。AutoML作為算法方向最大的領域趨勢之一,能否在不同領域超過人類專家的表現?這應該不是一個需要回答“會不會”的問題,而是應該回答“什麼時間會”的問題。

原因很簡單,AutoML通過各種基礎算子的任意組合,在超大的算子組合空間內,尋找性能表現最好的模型,幾乎可以達到窮舉遍歷的效果,而人類專家設計出來的最好的模型,無非是算子組合空間中的一個點而已,而且人類專家設計的那個模型,是最好模型的可能性是很低的。如果設計精良的AutoML,一定可以自己找到超過目前人類專家設計的最好的那個模型,這基本不會有什麼疑問,就像人類就算不是2017年,也會是某一年,下圍棋下不過機器,道理其實是一樣的,因為AutoML在巨大的算子組合空間裡尋找最優模型,跟圍棋在無窮的棋盤空間尋找勝利的盤面,本質上是一個事情。

無非,現在AutoML的不成熟,體現在需要搜索的空間太大,比較消耗計算資源方面而已,隨著技術的不斷成熟,搜索成本越來越低,AutoML在很多算法方向超過人類表現只是個時間問題。

新年首日涨姿势不能停:召回→排序→重排技术演进趋势深度总结新年首日涨姿势不能停:召回→排序→重排技术演进趋势深度总结
新年首日涨姿势不能停:召回→排序→重排技术演进趋势深度总结

在推薦領域,採用AutoML做網絡結構的工作還很少,這裡面有很多原因。由於我一直以來特別看好這個方向,所以在18年的時候,我們也嘗試過利用AutoML來自動探索推薦系統的網絡結構,這裡非常簡略地介紹下過程及結果(參考上面三圖)。我們用ENAS作為網絡搜索工具,設計了推薦領域網絡結構自動探索的嘗試。ENAS是個非常高效率的AutoML工具,可以做到單GPU半天搜索找到最優的網絡結構,但是它定義的主要是CNN結構和RNN結構搜索。我們對ENAS進行了改造,包括算子定義,優化目標以及評價指標定義等。DNN排序模型因為模型比較單一,所以算子是比較好找的,我們定義了推薦領域的常用算子,然後在這些算子組合空間內通過ENAS自動尋找效果最優的網絡結構,最終找到的一個表現最好的網絡結構如下圖所示:

新年首日涨姿势不能停:召回→排序→重排技术演进趋势深度总结

首先是特徵onehot到embedding的映射,我們把這層固定住了,不作為模型結構探索因子。在特徵embedding之上,有三個並行結構,其中兩個是包含兩個隱層的MLP結構,另外一個是特徵雙線性組合模塊(Each Fields Type,具體含義可以參考下面的FibiNet)。其表現超過了DeepFM等人工結構,但是並未超過很多。(感謝黃通文同學的具體嘗試)

總體而言,目前AutoML來做推薦模型,還很不成熟,找出的結構相對人工設計結構效果優勢也不是太明顯。這與DNN Ranking模型比較簡單,算子類型太少以及模型深度做不起來也有很大關係。但是,我相信這裡可以有更進一步的工作可做。

典型工作:

ENAS結構搜索:AutoML在推薦排序網絡結構搜索的應用

雙線性特徵組合: FiBiNET: Combining Feature Importance and Bilinear feature Interaction for Click-Through Rate Prediction

增強學習在推薦的應用

新年首日涨姿势不能停:召回→排序→重排技术演进趋势深度总结

增強學習其實是比較吻合推薦場景建模的。一般而言,增強學習有幾個關鍵要素:狀態、行為以及回報。在推薦場景下,我們可以把狀態St定義為用戶的行為歷史物品集合;推薦系統可選的行為空間則是根據用戶當前狀態St推薦給用戶的推薦結果列表,這裡可以看出,推薦場景下,用戶行為空間是巨大無比的,這制約了很多無法對巨大行為空間建模的增強學習方法的應用;而回報呢,則是用戶對推薦系統給出的列表內容進行互動的行為價值,比如可以定義點擊了某個物品,則回報是1,購買了某個物品,回報是5….諸如此類。有了這幾個要素的場景定義,就可以用典型的增強學習來對推薦進行建模。

利用增強學習來做推薦系統,有幾個顯而易見的好處,比如:

  1. 比較容易對“利用-探索”(Exploitation/Exploration)建模。所謂利用,就是推薦給用戶當前收益最大的物品,一般推薦模型都是優化這個目標;所謂探索,就是隨機推給用戶一些物品,以此來探測用戶潛在感興趣的東西。如果要進行探索,往往會犧牲推薦系統的當前總體收益,畢竟探索效率比較低,相當的通過探索渠道推給用戶的物品,用戶其實並不感興趣,浪費了推薦位。但是,利用-探索的均衡,是比較容易通過調節增強學習的回報(Reward)來體現這個事情的,比較自然;

  2. 比較容易體現用戶興趣的動態變化。我們知道,用戶興趣有長期穩定的,也有不斷變化的。而增強學習比較容易通過用戶行為和反饋的物品對應的回報的重要性,而動態對推薦結果產生變化,所以是比較容易融入體現用戶興趣變化這個特點的。

  3. 有利於推薦系統長期收益建模。這點是增強學習做推薦最有優勢的一個點。我們優化推薦系統,往往會有一些短期的目標比如增加點擊率等,但是長期目標比如用戶體驗或者用戶活躍留存等指標,一般不太好直接優化,而增強學習模型比較容易對長期收益目標來進行建模。

說了這麼多優點,貌似增強學習應該重點投入去做,是吧?我的意見正好相反,覺得從實際落地角度來看,推薦系統裡要嘗試增強學習方法,如果你有這個衝動,最好還是抑制一下。主要原因是,貌似增強學習是技術落地投入產出比非常低的技術點。首先投入高,要想把增強學習做work,意味著有很多大坑在等著你去踩,數據怎麼做、模型怎麼寫、回報怎麼拍,長期收益怎麼定義、建模並拆解成回報…….超大規模實際場景的用戶和物品,增強學習這麼複雜的模型,系統怎麼才能真的落地並撐住流量…..很多坑在裡面;其次,貌似目前看到的文獻看,貌似很少見到真的把增強學習大規模推到真實線上系統,併產生很好的收益的系統。

Youtube在最近一年做了不少嘗試,雖說把系統推上線了,但是收益怎樣不好說。而且,從另外一個角度看,做增強學習裡面還是有不少Trick在,那些收益到底是系統帶來的,還是Trick帶來的,真還不太好說。所以,綜合而言,目前看在增強學習做推薦投入,貌似還是一筆不太合算的買賣。當然,長遠看,可能還是很有潛力的,但是貌似這個潛力還需要新的技術突破去推動和挖掘。

典型工作:

Youtube: Top-K Off-Policy Correction for a REINFORCE Recommender System

Youtube: Reinforcement Learning for Slate-based Recommender Systems: A Tractable Decomposition and Practical Methodology

多目標優化

推薦系統的多目標優化(點擊,互動,時長等多個目標同時優化)嚴格來說不僅僅是趨勢,而是目前很多公司的研發現狀。對於推薦系統來說,不同的優化目標可能存在互相拉後腿的現象,比如互動和時長,往往拉起一個指標另外一個就會明顯往下掉,而多目標旨在平衡不同目標的相互影響,儘量能夠做到所有指標同步上漲,即使很難做到,也儘量做到在某個優化目標上漲的情況下,不拉低或者將盡量少拉低其它指標。多目標優化對於實用化的推薦系統起到了舉足輕重的作用,這裡其實是有很多工作可以做的,而如果多目標優化效果好,對於業務效果的推動作用也非常大。總而言之,多目標優化是值得推薦系統相關研發人員重點關注的技術方向。

新年首日涨姿势不能停:召回→排序→重排技术演进趋势深度总结

從技術角度講,多目標優化最關鍵的有兩個問題。第一個問題是多個優化目標的模型結構問題;第二個問題是不同優化目標的重要性如何界定的問題。

既然存在多個優化目標,最簡單直接的方式,也是目前最常用的方式是:每個優化目標獨立優化,比如點擊目標訓練一個模型,互動目標訓練一個模型,時長目標訓練一個模型,各自優化,然後每個目標獨立給實例預測打分,給每個目標設定權重值,各個目標打分加權求和線性融合,或者引入權重指數及根據目標關係引入非線性融合。這是目前最常見的落地方案。因為目標之間獨立優化,模型是通過分數融合來實現多目標的,所以可以把這種多目標方式稱作“Share-Nothing”結構。這個結構實現和優化方式很簡單。

與Share-Nothing結構相比,其實我們是可以讓不同優化目標共享一部分參數的,一旦引入不同目標或者任務的參數共享,我們就踏入了Transfer Learning的領地了。那麼為什麼要共享參數呢?一方面出於計算效率考慮,不同目標共享結構能夠提升計算效率;另外一點,假設我們有兩類任務或者目標,其中一個目標的訓練數據很充分,而另外一個目標的訓練數據比較少;如果獨立優化,訓練數據少的目標可能很難獲得很好的效果;如果兩個任務相關性比較高的話,其實我們可以通過共享參數,達到把大訓練數據任務的知識遷移給訓練數據比較少的任務的目的,這樣可以極大提升訓練數據量比較少的任務的效果。

Share-Bottom結構是個非常典型的共享參數的多目標優化結構,核心思想是在比如網絡的底層參數,所有任務共享參數,而上層網絡,不同任務各自維護自己獨有的一部分參數,這樣就能達成通過共享參數實現知識遷移的目的。但是,Share-Bottom結構有他的缺點:如果兩個任務不那麼相關的話,因為強制共享參數,所以可能任務之間相互干擾,會拉低不同目標的效果。MMOE針對Share-Bottom結構的侷限進行了改進,核心思想也很簡單,就是把底層全部共享的參數切分成小的子網絡,不同任務根據自己的特點,學習配置不同權重的小網絡來進行參數共享。這樣做的話,即使是兩個任務不太相關,可以通過不同的配置來達到模型解耦的目的,而如果模型相關性強,可以共享更多的子網絡。明顯這樣的組合方式更靈活,所以對於MMOE來說,無論是相關還是不相關的任務,它都可以達到我們想要的效果。

上面介紹的是典型的不同多目標的模型結構,各自有其適用場景和特點。而假設我們選定了模型結構,仍然存在一個很關鍵的問題:不同優化目標權重如何設定?當然,我們可以根據業務要求,強制制定一些權重,比如視頻網站可能更重視時長或者完播率等指標,那就把這個目標權重設置大一些。但是,我們講過,有些任務之間的指標優化是負相關的,提升某個目標的權重,有可能造成另外一些指標的下跌。

所以,如何設定不同目標權重,能夠儘量減少相互之間的負面影響,就非常重要。這塊貌似目前並沒有特別簡單實用的方案,很多實際做法做起來還是根據經驗拍一些權重參數上線AB測試,費時費力。而如何用模型自動尋找最優權重參數組合就是一個非常有價值的方向,目前最常用的方式是採用帕累托最優的方案來進行權重組合尋優,這是從經濟學引入的技術方案,未來還有很大的發展空間。

典型工作:

MMOE:Modeling Task Relationships in Multi-task Learning with Multi-gate Mixture-of-Experts

帕累托最優:A Pareto-Efficient Algorithm for Multiple Objective Optimization in E-Commerce Recommendation

多模態信息融合

所謂模態,指的是不同類型的或者模態形式的信息存在形式,比如文本、圖片、視頻、音頻、互動行為、社交關係等,都是信息不同的存在模態形式。如果類比一下的話,就彷彿我們人類感知世界,也是用不同的感官來感知不同的信息類型的,比如視覺、聽覺、味覺、觸覺等等,就是接受不同模態類型的信息,而大腦會把多模態信息進行融合,來接受更全面更綜合的世界知識。類似的,如何讓機器學習模型能夠接受不同模態類型的信息,並做知識和信息互補,更全面理解實體或者行為。這不僅僅是推薦領域的技術發現趨勢,也是人工智能幾乎所有方向都面臨的重大發展方向,所以這個方向特別值得重視。

多模態融合,從技術手段來說,本質上是把不同模態類型的信息,通過比如Embedding編碼,映射到統一的語義空間內,使得不同模態的信息,表達相同語義的信息完全可類比。比如說自然語言說的單詞“蘋果”,和一張蘋果的圖片,應該通過一定的技術手段,對兩者進行信息編碼,比如打出的embedding,相似度是很高的,這意味著不同模態的知識映射到了相同的語義空間了。這樣,你可以通過文本的蘋果,比如搜索包含蘋果的照片,諸如此類,可以玩出很多新花樣。

新年首日涨姿势不能停:召回→排序→重排技术演进趋势深度总结

在推薦場景下,多模態融合其實不是個很有難度的算法方向,大的技術框架仍然遵循目前主流的技術框架,比如DNN Ranking。為了體現多模態集成的目標,可以在User側或者Item側,把多模態信息作為新的特徵融入,比如加入CNN特徵抽取器,把商品圖片的特徵抽取出來,作為商品側的一種新特徵,不同模態的融入,很可能意味著找到對應的特徵抽取器,以新特徵的方式融入,而有監督學習的學習目標會指導特徵抽取器抽出那些有用的特徵。

所以,你可以看到,如果在推薦裡融入多模態,從算法層面看,並不難,它的難點其實在它處;本質上,多模態做推薦,如果說難點的話,難在工程效率。因為目前很多模態的信息抽取器,比如圖片的特徵抽取,用深層ResNet或者ReceptionNet,效果都很好,但是因為網絡層深太深,抽取圖片特徵的速度問題就是多模態落地面臨的主要問題。所以,本質上,在推薦領域應用多模態,看上去其實是個工程效率問題,而非複雜的算法問題。而且,如果融合多模態的話,離開DNN模型,基本是不現實的。在這點上,可以比較充分體現DNN模型相對傳統模型的絕對技術優勢。

多模態信息融合,不僅僅是排序端的一個發展方向,在召回側也是一樣的,比如用用戶點擊過的圖片,作為圖片類型的新召回路,或者作為模型召回的新特徵。明顯這種多模態融合是

貫穿了推薦領域各個技術環節的。

典型工作:

DNN召回:Collaborative Multi-modal deep learning for the personalized product retrieval in Facebook Marketplace

排序:Image Matters: Visually modeling user behaviors using Advanced Model Server

長期興趣/短期興趣分離

對於推薦系統而言,準確描述用戶興趣是非常重要的。目前常用的描述用戶興趣的方式主要有兩類。一類是以用戶側特徵的角度來表徵用戶興趣,也是最常見的;另外一類是以用戶發生過行為的物品序列作為用戶興趣的表徵。

新年首日涨姿势不能停:召回→排序→重排技术演进趋势深度总结

我們知道,用戶興趣其實是可以繼續細分的,一種典型的分法就是劃分為長期興趣和短期興趣。長期興趣代表用戶長久的比較穩定的偏好;而短期興趣具有不斷變化等特點。兩者綜合,可以從穩定性和變化性這個維度來表徵用戶偏好。

最近推薦系統在排序側模型的演進方向來說,把用戶長期興趣和短期興趣分離並各自建立模型是個技術小趨勢。那麼用什麼信息作為用戶的短期興趣表徵?什麼信息作為用戶的長期興趣表徵呢?各自又用什麼模型來集成這些信息呢?這是這個趨勢的三個關鍵之處。

目前的常用做法是:用戶短期興趣往往使用用戶點擊(或購買,互動等其它行為類型)過的物品序列來表徵,尤其對於比較活躍的用戶,用點擊序列更能體現短期的含義,因為出於工程效率的考慮,如果用戶行為序列太長,往往不會都拿來使用,而是使用最近的K個行為序列中的物品,來表徵用戶興趣,而這明顯更含有短期的含義;因為點擊序列具備序列性和時間屬性,所以對於這類數據,用那些能夠刻畫序列特性或者物品局部相關性的模型比較合適,比如RNN/CNN和Transformer都比較適合用來對用戶短期興趣建模。

而用戶長期興趣如何表徵呢?我們換個角度來看,其實傳統的以特徵作為用戶興趣表徵的方法,其中部分特徵就是從用戶長期興趣出發來刻畫的,比如群體人群屬性,是種間接刻畫用戶長期興趣的方法,再比如類似用戶興趣標籤,是種用用戶行為序列物品的統計結果來表徵用戶長期興趣的方法。這些方法當然可以用來刻畫用戶長期興趣,但是往往粒度太粗,所以我們其實需要一個比較細緻刻畫用戶長期興趣的方式和方法。

目前在對長短期興趣分離的工作中,關於如何刻畫用戶長期興趣,往往還是用非常簡單的方法,就是用UID特徵來表徵用戶的長期興趣,通過訓練過程對UID進行Embedding編碼,以此學習到的UID Embedding作為用戶長期興趣表徵,而用戶行為序列物品作為用戶短期興趣表徵。當然,UID如果用一些其它手段比如矩陣分解獲得的Embedding初始化,也是很有幫助的。

總而言之,用戶長期興趣和短期興趣的分離建模,應該還是有意義的。長期興趣目前建模方式還比較簡單,這裡完全可以引入一些新方法來進行進一步的興趣刻畫,而且有很大的建模空間。

典型工作:

Neural News Recommendation with Long- and Short-term User Representations

Sequence-Aware Recommendation with Long-Term and Short-Term Attention Memory Networks

重排技術演進趨勢

在重排環節,常規的做法,這裡是個策略出沒之地,就是集中了各種業務和技術策略。比如為了更好的推薦體驗,這裡會加入去除重複、結果打散增加推薦結果的多樣性、強插某種類型的推薦結果等等不同類型的策略。

按理說,這塊沒什麼可講的。但是,如果從技術發展趨勢角度看,重排階段上模型,來代替各種花樣的業務策略,是個總體的大趨勢。

List Wise重排序

關於List Wise排序,可以從兩個角度來說,一個是優化目標或損失函數;一個是推薦模塊的模型結構。

推薦系統裡Learning to Rank做排序,我們知道常見的有三種優化目標:Point Wise、Pair Wise和List Wise。所以我們首先應該明確的一點是:List Wise它不是指的具體的某個或者某類模型,而是指的模型的優化目標或者損失函數定義方式,理論上各種不用的模型都可以使用List Wise損失來進行模型訓練。最簡單的損失函數定義是Point Wise,就是輸入用戶特徵和單個物品特徵,對這個物品進行打分,物品之間的排序,就是誰應該在誰前面,不用考慮。

明顯這種方式無論是訓練還是在線推理,都非常簡單直接效率高,但是它的缺點是沒有考慮物品直接的關聯,而這在排序中其實是有用的。Pair Wise損失在訓練模型時,直接用兩個物品的順序關係來訓練模型,就是說優化目標是物品A排序要高於物品B,類似這種優化目標。其實Pair Wise的Loss在推薦領域已經被非常廣泛得使用,比如BPR損失,就是典型且非常有效的Pair Wise的Loss Function,經常被使用,尤其在隱式反饋中,是非常有效的優化目標。

List Wise的Loss更關注整個列表中物品順序關係,會從列表整體中物品順序的角度考慮,來優化模型。在推薦中,List Wise損失函數因為訓練數據的製作難,訓練速度慢,在線推理速度慢等多種原因,儘管用的還比較少,但是因為更注重排序結果整體的最優性,所以也是目前很多推薦系統正在做的事情。

新年首日涨姿势不能停:召回→排序→重排技术演进趋势深度总结

從模型結構上來看。因為重排序模塊往往是放在精排模塊之後,而精排已經對推薦物品做了比較準確的打分,所以往往重排模塊的輸入是精排模塊的Top得分輸出結果,也就是說,是有序的。而精排模塊的打分或者排序對於重排模塊來說,是非常重要的參考信息。於是,這個排序模塊的輸出順序就比較重要,而能夠考慮到輸入的序列性的模型,自然就是重排模型的首選。我們知道,最常見的考慮時序性的模型是RNN和Transformer,所以經常把這兩類模型用在重排模塊,這是很自然的事情。

一般的做法是:排序Top結果的物品有序,作為RNN或者Transformer的輸入,RNN或者Transformer明顯可以考慮在特徵級別,融合當前物品上下文,也就是排序列表中其它物品,的特徵,來從列表整體評估效果。RNN或者Transformer每個輸入對應位置經過特徵融合,再次輸出預測得分,按照新預測的得分重新對物品排序,就完成了融合上下文信息,進行重新排序的目的。

儘管目前還沒看到CNN做重排的方法,但是從機制上來說,明顯CNN也是比較適合用來做重排環節模型的,感興趣的同學可以試一試。當然,前面說的強化學習,也是非常適合用在List Wise優化的,目前也有不少相關工作出現。

典型工作:

Personalized Re-ranking for Recommendation

Learning a Deep Listwise Context Model for Ranking Refinement

好了,這篇文章又太長了,先寫這麼多吧。

致謝:本文的部分內容和觀點,是在和一些同學的技術討論過程中形成的,在此感謝微博機器學習團隊佘青雲和王志強同學的想法和建議

(*本文為AI科技大本營轉載文章,轉載請聯繫原作者)


分享到:


相關文章: