天天看點

推薦系統技術演進趨勢:從召回到排序再到重排架構介紹召回排序重排技術演進趨勢參考文獻

這裡參考張俊林老師的文章連結

架構介紹

推薦系統架構介紹

推薦系統技術演進趨勢:從召回到排序再到重排架構介紹召回排序重排技術演進趨勢參考文獻
  • 召回:縮小可選集
  • 粗排:有時候因為每個使用者召回環節傳回的物品數量還是太多,怕排序環節速度跟不上,是以可以在召回和精排之間加入一個粗排環節,通過少量使用者和物品特征,簡單模型,來對召回的結果進行粗略的排序,在保證一定精準的前提下,進一步減少往後傳送的物品數量,粗排往往是可選的,可用可不同,跟場景有關。
  • 精排:使用你能想到的任何特征,可以上你能承受速度極限的複雜模型,盡量精準地對物品進行個性化排序。
  • 重排:傳統地看,這裡往往會上各種技術及業務政策,比如去已讀、去重、打散、多樣性保證、固定類型物品插入等等,主要是技術産品政策主導或者為了改進使用者體驗的。

召回

簡單介紹

技術含量不太高,模型用的少,偏向政策型導向,往往靈機一動,就能想到一個政策,增加一路新的召回。總體而言,召回環節的有監督模型化以及一切Embedding化,這是兩個相輔相成的總體發展趨勢。而embedding的具體方法,則可以有各種選擇。

非個性化召回

  • 熱門商品
  • 曆史點選率高的物料

多路召回

推薦系統技術演進趨勢:從召回到排序再到重排架構介紹召回排序重排技術演進趨勢參考文獻

可以把某路召回,看成是某個排序模型的排序結果,隻不過,這個排序模型,在使用者側和物品側隻用了一個特征。比如說,标簽召回,其實就是用使用者興趣标簽和物品标簽進行排序的單特征排序結果;再比如協同召回,可以看成是隻包含UID和ItemID的兩個特征的排序結果

模型召回

推薦系統技術演進趨勢:從召回到排序再到重排架構介紹召回排序重排技術演進趨勢參考文獻

核心思想是:将使用者特征和物品特征分離,各自通過某個具體的模型,分别打出使用者Embedding以及物品Embedding。

理論上來說,任何你能見到的有監督模型,都可以用來做這個召回模型,比如FM/FFM/DNN等,常說的所謂“雙塔”模型,指的其實是使用者側和物品側特征分離分别打Embedding的結構而已,并非具體的模型。

雙塔模型

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

因子分解

fm召回

發散點

  • 優點:

    多路召回每路截斷條數的超參個性化問題等會自然被消解掉

  • 缺點:

    召回内容頭部問題,因為之前多路,每路召回個數靠硬性截斷,可以根據需要,保證你想要召回的,總能通過某一路拉回來;而由于換成了模型召回,面向海量物料庫,排在前列得分高的可能聚集在幾個物料分布比較多的頭部領域(解決這個問題的方法包括比如訓練資料對頭部領域的降采樣,減少某些領域主導,以及在模型角度鼓勵多樣性等不同的方法)

  • 如果在召回階段使用模型召回,理論上也應該同步采用和排序模型相同的優化目标,尤其是如果排序階段采用多目标優化的情況下,召回模型也應該對應采取相同的多目标優化
  • 如果整個流程中包含粗排子產品,粗排也應該采用和精排相同的多目标優化,幾個環節優化目标應保持一緻。因為召回和粗排是精排的前置環節,否則,如果優化目标不一緻,很可能會出現高品質精排目标,在前置環節就被過濾掉的可能,影響整體效果

使用者行為序列召回

一般使用者之是以會對物品發生行為,往往意味着這些物品是符合使用者興趣的,而不同類型的行為,可能代表了不同程度的興趣。比如購買就是比點選更能表征使用者興趣的行為。

推薦系統技術演進趨勢:從召回到排序再到重排架構介紹召回排序重排技術演進趨勢參考文獻

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

核心在于:這個物品聚合函數Fun如何定義

使用者行為序列中的物品,是有時間順序的。理論上,任何能夠展現時序特點或特征局部性關聯的模型,都比較适合應用在這裡,典型的比如CNN、RNN、Transformer等,都比較适合用來內建使用者行為序列資訊。而目前的很多試驗結果證明,GRU(RNN的變體模型)可能是聚合使用者行為序列效果最好又比較簡單的模型。當然,RNN不能并行的低效率,那是另外一個問題。

排序側表征使用者特征的時候,可以隻用使用者行為過的物品序列,也可以混合使用者其它特征,比如群體屬性特征等一起來表征使用者興趣,方式比較靈活。比如DIEN,就是典型的采用混合模式的方法

改進

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

使用者多興趣拆分

推薦系統技術演進趨勢:從召回到排序再到重排架構介紹召回排序重排技術演進趨勢參考文獻

本質上,把使用者行為序列打到多個embedding上,實際它是個類似聚類的過程,就是把不同的Item,聚類到不同的興趣類别裡去。目前常用的拆分使用者興趣embedding的方法,主要是膠囊網絡和Memory Network,但是理論上,很多類似聚類的方法應該都是有效的,是以完全可以在這塊替換成你自己的能産生聚類效果的方法來做

這種興趣拆分,在召回階段是很合适的,可以定向解決頭部問題。

對于排序環節,是否有必要把使用者興趣拆分成多個,必要性不是太大。非要用的話,可以這麼解釋:當行為序列物品太多的時候,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這種知識傳播路徑,完全可以通過把主演作為電影這個實體的屬性特征加入正常排序模型,來達到類似知識近距離傳播的目的,是以感覺也不是很有必要在排序側專門去做知識圖譜拓展這種事情

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

典型工作:

  1. KGAT: Knowledge Graph Attention Network for Recommendation
  2. RippleNet: Propagating User Preferences on the Knowledge Graph for Recommender Systems

圖神經網絡模型召回

推薦系統技術演進趨勢:從召回到排序再到重排架構介紹召回排序重排技術演進趨勢參考文獻
推薦系統技術演進趨勢:從召回到排序再到重排架構介紹召回排序重排技術演進趨勢參考文獻

因為圖神經網絡,最終獲得的往往是圖中節點的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優化目标在排序階段和重排階段都可采用,我們把它放到重排部分去講,這裡主要介紹多目标優化;從特征和資訊角度,如何采用更豐富的新類型特征,以及資訊和特征的擴充及融合是主要技術進化方向,使用者長短期興趣分離、使用者行為序列資料的使用、圖神經網絡以及多模态融合等是這方面的主要技術趨勢。

模型表達能力

顯示特征組合

推薦系統技術演進趨勢:從召回到排序再到重排架構介紹召回排序重排技術演進趨勢參考文獻

純粹的簡單DNN模型本質上其實是在FM模型的特征Embedding化基礎上,添加幾層MLP隐層來進行隐式的特征非線性自動組合而已。所謂隐式,意思是并沒有明确的網絡結構對特征的二階組合、三階組合進行直接模組化,隻是通過MLP,讓不同特征發生互動,至于怎麼發生互動的,怎麼進行特征組合的,誰也說不清楚,這是MLP結構隐式特征組合的作用,當然由于MLP的引入,也會在特征組合時候考慮進入了特征間的非線性關系。

推薦系統技術演進趨勢:從召回到排序再到重排架構介紹召回排序重排技術演進趨勢參考文獻

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

  • 局限性:在實際做事情的時候,其實顯式結構把三階特征組合引入,已經基本足夠了

特征抽取器的進化

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裡的結構

AutoML在推薦的應用

在cv,nlp領域,目前都能通過AutoML找到比人設計的效果更好的模型結構。AutoML通過各種基礎算子的任意組合,在超大的算子組合空間内,尋找性能表現最好的模型,幾乎可以達到窮舉周遊的效果,如果設計精良的AutoML,一定可以自己找到超過目前人類專家設計的最好的那個模型,現在AutoML的不成熟,展現在需要搜尋的空間太大,比較消耗計算資源方面而已,随着技術的不斷成熟,搜尋成本越來越低,AutoML在很多算法方向超過人類表現隻是個時間問題。

推薦系統技術演進趨勢:從召回到排序再到重排架構介紹召回排序重排技術演進趨勢參考文獻
推薦系統技術演進趨勢:從召回到排序再到重排架構介紹召回排序重排技術演進趨勢參考文獻
推薦系統技術演進趨勢:從召回到排序再到重排架構介紹召回排序重排技術演進趨勢參考文獻

我們用ENAS作為網絡搜尋工具,設計了推薦領域網絡結構自動探索的嘗試。ENAS是個非常高效率的AutoML工具,可以做到單GPU半天搜尋找到最優的網絡結構,但是它定義的主要是CNN結構和RNN結構搜尋。我們對ENAS進行了改造,包括算子定義,優化目标以及評價名額定義等。DNN排序模型因為模型比較單一,是以算子是比較好找的,我們定義了推薦領域的常用算子,然後在這些算子組合空間内通過ENAS自動尋找效果最優的網絡結構,最終找到的一個表現最好的網絡結構如下圖所示:

推薦系統技術演進趨勢:從召回到排序再到重排架構介紹召回排序重排技術演進趨勢參考文獻

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

典型工作:

  • 雙線性特征組合: 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帶來的,真還不太好說。是以,綜合而言,目前看在增強學習做推薦投入,貌似還是一筆不太合算的買賣。

模型優化目标

多目标優化

推薦系統的多目标優化(點選,互動,時長等多個目标同時優化)嚴格來說不僅僅是趨勢,而是目前很多公司的研發現狀。對于推薦系統來說,不同的優化目标可能存在互相拉後腿的現象,比如互動和時長,往往拉起一個名額另外一個就會明顯往下掉,而多目标旨在平衡不同目标的互相影響,盡量能夠做到所有名額同步上漲,即使很難做到,也盡量做到在某個優化目标上漲的情況下,不拉低或者将盡量少拉低其它名額。

推薦系統技術演進趨勢:從召回到排序再到重排架構介紹召回排序重排技術演進趨勢參考文獻

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

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

與Share-Nothing結構相比,其實我們是可以讓不同優化目标共享一部分參數的,一旦引入不同目标或者任務的參數共享,我們就踏入了Transfer Learning的領地了。那麼為什麼要共享參數呢?一方面出于計算效率考慮,不同目标共享結構能夠提升計算效率;另外一點,假設我們有兩類任務或者目标,其中一個目标的訓練資料很充分,而另外一個目标的訓練資料比較少;如果獨立優化,訓練資料少的目标可能很難獲得很好的效果;如果兩個任務相關性比較高的話,其實我們可以通過共享參數,達到把大訓練資料任務的知識遷移給訓練資料比較少的任務的目的,這樣可以極大提升訓練資料量比較少的任務的效果。Share-Bottom結構是個非常典型的共享參數的多目标優化結構,核心思想是在比如網絡的底層參數,所有任務共享參數,而上層網絡,不同任務各自維護自己獨有的一部分參數,這樣就能達成通過共享參數實作知識遷移的目的。但是,Share-Bottom結構有他的缺點:如果兩個任務不那麼相關的話,因為強制共享參數,是以可能任務之間互相幹擾,會拉低不同目标的效果。MMOE針對Share-Bottom結構的局限進行了改進,核心思想也很簡單,就是把底層全部共享的參數切分成小的子網絡,不同任務根據自己的特點,學習配置不同權重的小網絡來進行參數共享。這樣做的話,即使是兩個任務不太相關,可以通過不同的配置來達到模型解耦的目的,而如果模型相關性強,可以共享更多的子網絡。明顯這樣的組合方式更靈活,是以對于MMOE來說,無論是相關還是不相關的任務,它都可以達到我們想要的效果。

假設我們標明了模型結構,仍然存在一個很關鍵的問題:不同優化目标權重如何設定?當然,我們可以根據業務要求,強制制定一些權重,比如視訊網站可能更重視時長或者完播率等名額,那就把這個目标權重設定大一些。但是,我們講過,有些任務之間的名額優化是負相關的,提升某個目标的權重,有可能造成另外一些名額的下跌。是以,如何設定不同目标權重,能夠盡量減少互相之間的負面影響,就非常重要。這塊貌似目前并沒有特别簡單實用的方案,很多實際做法做起來還是根據經驗拍一些權重參數上線AB測試,費時費力。而如何用模型自動尋找最優權重參數組合就是一個非常有價值的方向,目前最常用的方式是采用帕累托最優的方案來進行權重組合尋優,這是從經濟學引入的技術方案,未來還有很大的發展空間。

特征擴充及資訊融合

多模态資訊融合

所謂模态,指的是不同類型的或者模态形式的資訊存在形式,比如文本、圖檔、視訊、音頻、互動行為、社交關系等,都是資訊不同的存在模态形式。

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

推薦系統技術演進趨勢:從召回到排序再到重排架構介紹召回排序重排技術演進趨勢參考文獻

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

長期興趣/短期興趣分離

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

推薦系統技術演進趨勢:從召回到排序再到重排架構介紹召回排序重排技術演進趨勢參考文獻

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

使用者長期興趣:目前在對長短期興趣分離的工作中,關于如何刻畫使用者長期興趣,往往還是用非常簡單的方法,就是用UID特征來表征使用者的長期興趣,通過訓練過程對UID進行Embedding編碼,以此學習到的UID Embedding作為使用者長期興趣表征

重排技術演進趨勢

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

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

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每個輸入對應位置經過特征融合,再次輸出預測得分,按照新預測的得分重新對物品排序,就完成了融合上下文資訊,進行重新排序的目的。

典型工作:

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

參考文獻

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

繼續閱讀