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