2023-06-27 04:00:06 來源 : DataFunTalk
先簡單介紹一下推薦系統(tǒng)的現(xiàn)狀。
推薦系統(tǒng)其實在生活中已經(jīng)很常見了,隨著網(wǎng)絡(luò)上的信息越來越多,人們很難從海量信息中找出最適合自己的東西。為了解決這種信息過載的問題,衍生出了推薦系統(tǒng)。它會預(yù)測用戶的需求,推薦其可能喜歡的內(nèi)容,緩解用戶做出選擇的煩惱。
(資料圖片)
早期的推薦算法比較簡單,經(jīng)典算法包括基于內(nèi)容的、基于知識的、還有基于協(xié)同過濾的等等。
現(xiàn)在的研究方向主要集中在深度學(xué)習(xí)方面,通過神經(jīng)網(wǎng)絡(luò)的訓(xùn)練來有效提取特征、獲取更精準(zhǔn)的表示能力,提升匹配程度。在推薦系統(tǒng)領(lǐng)域已經(jīng)獲得不錯的效果。
上述這些方法上面都存在著一個問題,就是冷啟動問題。
冷啟動問題分為兩類:
用戶冷啟動:如何給新加入的用戶推薦可能感興趣的物品,對于一個公司來說,用戶冷啟動是非常關(guān)鍵的,新用戶的留存可以讓公司發(fā)展得更快;物品冷啟動:如何把新上架的物品推薦給潛在的用戶。本次分享將針對用戶冷啟動問題來展開討論。
二、社交興趣網(wǎng)絡(luò)針對用戶冷啟動有兩個解決方法:
首先是高效地利用 Side Information除了 ID 信息以外,通常把用戶屬性特征,比如年齡、性別,還有額外的一些東西補充到模型中去訓(xùn)練,這是利用 Side Information 的一個方式。
第二是高效地利用有限的交互數(shù)據(jù)我們沒辦法拿到更多的 Side Information,因此要高效地利用現(xiàn)有的 Side Information,來提升效果。
接下來將重點講解如何高效地利用 Side Information。這就引出了我們今天要講的社交興趣網(wǎng)絡(luò)。
社交興趣網(wǎng)絡(luò)主要分為兩個部分:
一個是社交網(wǎng)絡(luò),代表人與人之間的直接關(guān)系,比如 Facebook、 Twitter 、QQ等上面的好友關(guān)系。另一個是興趣網(wǎng)絡(luò),主要表示的是人和社交圈之間的關(guān)系,包含非常明確的,比如你經(jīng)常喜歡看搞笑視頻,或者比較喜歡看足球,或者是你在某些平臺上面經(jīng)常追哪個劇,關(guān)注哪些博主等類似的信息。我們提出了興趣抽取器SocialNet,來抽取用戶的社交興趣。這個抽取器是一個可集成到其他推薦算法中的非常實用的組件。在這基礎(chǔ)上,我們選取了YouTube DNN 做 baseline,把 SocialNet 獲得的用戶興趣集成進(jìn)去,通過 attention 的方式來進(jìn)行權(quán)重融合,得到最終的網(wǎng)絡(luò),叫做 Socail4Rec。下面來詳細(xì)介紹這一算法。
三、Socail4Rec1、算法模型的概覽圖模型的總體概覽圖如上所示,其中包含三個部分:
粗粒度興趣抽取器 – SoNN細(xì)粒度興趣抽取器 – metapathneighborhoodaggregation最后將抽取器集成到 YouTube DNN 模型里面去,做成興趣向量模型應(yīng)用,興趣增強網(wǎng)絡(luò) – SocialEnhancedRecommendation2、Social4Rec-粗粒度興趣提取器-SoNN如上圖,通過用戶,我們可以拿到他的一些社交興趣信息,比如他平時喜歡看什么電影,喜歡關(guān)注哪些明星,他的好友等等。針對這些信息,通過 Embedding Layer拿到其 embedding。
我們在中間設(shè)計了一個網(wǎng)絡(luò),叫自組織神經(jīng)網(wǎng)絡(luò),這個網(wǎng)絡(luò)的用途是將得到的這些 embedding 劃分興趣組,將用戶歸到興趣組里面。
具體做法:
(1)第一步通過自組織神經(jīng)網(wǎng)絡(luò),先得到它所屬的興趣組。自組織神經(jīng)網(wǎng)絡(luò)相當(dāng)于一個權(quán)重矩陣,在計算過程中會不斷更新。
我們先把用戶的這些興趣特征 embedding匯到網(wǎng)絡(luò)里面,去得出它所屬的興趣組。公式中Wj 就是自組織神經(jīng)網(wǎng)絡(luò)的可訓(xùn)練的權(quán)重,根據(jù)用戶的embedding,去得出用戶所屬的最接近的興趣組。
(2)第二步根據(jù)用戶的 embedding 去更新總的用戶興趣組。更新的方式主要是下面兩個公式:把用戶的輸入去計算出跟整個矩陣組的差值,根據(jù)學(xué)習(xí)率和衰減系數(shù)得到更新權(quán)重。衰減的系數(shù)可以根據(jù)公式算出來的。Sj,i 就代表當(dāng)前興趣和我們需要計算的另一個興趣的距離,來得出它所屬的范圍:
如果距離是0:我們以最大權(quán)重更新,相當(dāng)于在矩陣?yán)锩婵赡苡?100 個興趣,如果用戶算出來的上一個方法里面的興趣跟當(dāng)前興趣是同一個興趣,我們就以最大的權(quán)重去更新。如果有不一樣的距離:我們就根據(jù)公式算出它的衰減系數(shù)。如果距離太遠(yuǎn):我們就直接不更新它的權(quán)重。更新權(quán)重的方式,在經(jīng)過幾次迭代之后可以更新成一個比較合適的權(quán)重矩陣,也可以對每一個用戶區(qū)分出他的興趣組。在這個過程中,我們就可以把用戶區(qū)分到興趣組上面。
(3)第三步興趣組聚合興趣組可能會存在一些情況,太稀疏,每個組里面的人可能很少。我們需要通過 KMeans 的方法,把這些比較稀疏的興趣組進(jìn)行小小的聚合。比如可能足球細(xì)分類里面又有很多的小類。這些小類的興趣組里面的用戶并不多,我們就需要把他們重新聚合成一個大類,將用戶重新歸到大的興趣組里面。
在這一步我們就把用戶進(jìn)行了一個粗的分類,分到了比較大的興趣組里面。
3、Social4Rec-細(xì)粒度興趣提取器-Meta-path neighborhood aggregation第二個就是進(jìn)行細(xì)分類,通過粗分類我們已經(jīng)把用戶群體歸到大的組里面,但這個組會比較大。要在這個大的組里面更精細(xì)地去抽取用戶的興趣向量,我們采用了Meta-path 的方法去抽取。
一個典型的 Meta-path UMU 定義為:比如用戶訂閱電影, User 1 訂閱了 Movie 1, User 2 也訂閱了 Movie 1,通過 Meta-path 他們兩個是可以關(guān)聯(lián)起來的。通過這樣的方式,在同一個大的興趣組里面,我們可以找到這樣user1具有關(guān)聯(lián)性的很多個user2用戶,我們抽取其中的 top N 的user2用戶進(jìn)行 embedding 的聚合。
top N的用戶怎么選?。?p>直接把它們的初始 embedding 與當(dāng)前user的embedding算 距離最近的top10,然后將這個 top10 聚合到 user embedding 上面去。這是具體的計算公式,在興趣組里面,通過 Meta-path 的方法找最近 top k 的用戶,將這些用戶的 embedding 聚合起來,再加上自己用戶本身的embedding,得到最終的細(xì)粒度的用戶的 embedding。
因為我們初始的時候是有通過多種興趣,電影、關(guān)注的明星、Up 主、朋友這 4 種關(guān)系,所以我們有 4 個 Meta-path 的方法,分別得出了 4 種 Meta-path embedding。每個方式通過聚合自己的embedding、top N 個的鄰居 embedding 的向量,得到 4 個 Meta-path 的embedding。最終我們拿這 4 個興趣向量 embedding 聚合到初始的 YouTube DNN 模型上面。
4、興趣向量聚合我們的聚合方式:
首先我們輸入用戶特征到 YouTube DNN 模型里面,得到 Input DNN 的 embedding,分別對4 種興趣向量做 attention ,會得到這 4 種興趣向量的權(quán)重。比如用戶本身屬性特征過完 YouTube DNN 之后,得到一串 embedding,發(fā)現(xiàn)是比較喜歡看電影的,可能對于電影的抽出來的興趣向量的權(quán)重就會比較高。如果對于明星或者對于朋友這種關(guān)系比較重,那么它們各自的權(quán)重肯定會更高。通過這種方式得出每個興趣的權(quán)重向量,再通過權(quán)重融合,得到用戶最終疊加的興趣向量的權(quán)重融合的 embedding,再跟 item 的 embedding 進(jìn)行內(nèi)積,得到最終的 CTR 分?jǐn)?shù)。簡單來說,就是把用戶興趣直接 concat 到用戶表達(dá)上做 attention,之后再經(jīng)過 MLP 層得到 embedding,然后跟 item 做內(nèi)積,得到CTR。
這個方式在我們之前的數(shù)據(jù)集上得到了有效的驗證。
之前數(shù)據(jù)集主要是兩個,一個是社交的圖, star 代表有多少用戶關(guān)注明星的 UA 對的數(shù)量。Movie 就是用戶觀看電影的數(shù)量。
下面這個是我們主要用的數(shù)據(jù)集。我們抽取了 15 天的在線的流量日志,前 14 天用于訓(xùn)練,最后一天用于測試。其中區(qū)分了冷啟動用戶的數(shù)據(jù),用于單獨在冷啟動用戶上驗證效果。
5、總體的效果總體的效果可以看上圖的消融實驗數(shù)據(jù)。
離線部分,在全部用戶上面從最初的單獨用 YouTube DNN 模型的AUC 0.765,提升到了 0.770。在冷啟用戶上面的提升更多,將近 2.33 個百分點。
這四個消融實驗中三個對照實驗代表的含義分別為:
第一個是代表不帶粗粒度提取器的版本第二個是不帶細(xì)粒度提取器的版本第三個是不進(jìn)行 Attention,而是直接將興趣特征拼起來平均聚合。在線部分,我們在所有用戶上面去統(tǒng)計了一下,在線CTR提升了 3.6%,在冷啟用戶上CTR提升了 2%,在點擊數(shù)量和觀看時長上面都分別有比較大的提升。其中冷啟用戶的提升更多。所以在解決冷啟用戶問題方面,我們的模型顯現(xiàn)出來比較顯著的效果。
四、總結(jié)在item推薦中,學(xué)術(shù)界、業(yè)界典型的工作都是如何更好地提取用戶直接交互行為信息,而忽視了在真實平臺上我們存在的各種各樣的信息。Social interest信息在推薦算法中的實用性,這對于在推薦平臺上做算法的同學(xué)應(yīng)該是一個特別好的啟發(fā),因為我們平臺上存在大量的社交信息,有效地利用這些信息將為我們的各種業(yè)務(wù)帶來極大的提升。
五、Q&AQ1:Meta-path 的定義很大程度決定效果,而 Meta-path 的組合種類很多,怎么根據(jù)產(chǎn)品選擇?A2:聚類的個數(shù),其實剛開始是拍的,主要還是通過調(diào)參的方式去判斷出聚類數(shù),自組織神經(jīng)網(wǎng)絡(luò)聚成一些小類,最開始是定義得比較大的,在大了之后再用 KMeans 去減小它的個數(shù),中間是通過去調(diào)整得出來的,其實還主要是超參,超參是調(diào)試出來的。
Q3:有沒有分析為什么冷啟動用戶效果更好?A3:在一個 YouTube DNN 模型里面,冷啟動用戶能拿到行為序列特征是非常少的。在這種比較少的特征上面,我們抽取出來的社交興趣的Embedding 是相對比較重的,起到的作用就比較高。所以在冷啟動用戶上面,我們單獨加這個模塊效果是更好的。
注:相關(guān)代碼和論文鏈接:https://github.com/xuanjixiao/onerec。
關(guān)于OneRec在常規(guī)推薦系統(tǒng)算法和系統(tǒng)雙優(yōu)化的范式下,一線公司針對單個任務(wù)或單個業(yè)務(wù)的效果挖掘幾乎達(dá)到極限。從2019年我們開始關(guān)注多種信息的萃取融合,提出了OneRec算法,希望通過平臺或外部各種各樣的信息來進(jìn)行知識集成,打破數(shù)據(jù)孤島,極大擴(kuò)充推薦的“Extra World Knowledge”。已實踐的算法包括行為數(shù)據(jù)(多信號,長短期信號),內(nèi)容描述,社交信息,知識圖譜等。在OneRec,每種信息和整體算法的集成是可插拔的,這樣的話一方面方便大家在自己的平臺數(shù)據(jù)下靈活組合各種信息,另一方面方便開源共建,大家可以在上邊集成自己的各種算法。OneRec分享的都是之前在線上驗證過效果的工作,相關(guān)代碼和論文已經(jīng)開源在:https://github.com/xuanjixiao/onerec 。
OneRec系列算法目前已經(jīng)發(fā)布的算法:
(1) OneRec1_NeighbourEnhancedDNN 行為和內(nèi)容兩種信號的強化建模。增強用戶/item的表達(dá)和他們的交互。相關(guān)文章:后續(xù)在OneRec主頁放出。
相關(guān)論文:Neighbor Based Enhancement for the Long-Tail Ranking Problem in Video Rank Models , DLP-KDD 2021。
(2)OneRec2_Social4Rec 行為/內(nèi)容之外使用social interest信息。增強用戶的表達(dá),有效融合行為,內(nèi)容,社交興趣三種信號。相關(guān)文章:后續(xù)在OneRec主頁放出。
相關(guān)論文:Social4Rec: Distilling User Preference from Social Graph for Video Recommendation in Tencent。
論文鏈接:https://arxiv.org/pdf/2302.09971.pdf。
(3)OneRec3_SparseSharing 如何更好的利用點擊信號和轉(zhuǎn)化信號。通過彩票理論實現(xiàn)神經(jīng)元級別的多任務(wù)學(xué)習(xí),進(jìn)一步優(yōu)化cvr的效果。相關(guān)文章:《OneRec4_LT4REC:基于彩票假設(shè)的多任務(wù)學(xué)習(xí)算法》。
相關(guān)論文:LT4REC: A Lottery Ticket Hypothesis Based Multi-task Practice for Video Recommendation System。
論文鏈接:https://arxiv.org/abs/2008.09872。
[后續(xù)] 2023 CVR多任務(wù)工作:Click-aware Structure Transfer with Sample Weight Assignment for Post-Click Conversion Rate Estimation, 2023, ECML-PKDD。
[前序] 2018 CVR多任務(wù)工作:Calibration4CVR:2018年關(guān)于“神經(jīng)元級別共享的多任務(wù)CVR”的初探-2018。
(4)OneRec4_SessionLTV 對于一個session瀏覽過程,結(jié)合短期reward和長期reward,通過強化學(xué)習(xí)來建模用戶價值,從而找到LTV價值更高的結(jié)果給到用戶,在視頻場景和google RL simulator上均有正向效果。相關(guān)論文:On Modeling Long-Term User Engagement from Stochastic Feedback。
論文鏈接:https://arxiv.org/pdf/2302.06101.pdf, WWW 2023。