小紅書為何讓歪果仁上頭?推薦算法超牛,2篇核心論文揭祕

新智元
01-16

【新智元導讀】如今越來越多的歪果朋友入駐小紅書,而這潑天流量也帶來了“欲戴王冠,必承其重”的形勢。而讓大家紛紛讚揚的小紅書內容推薦算法則是它能夠接的下來這波流量的核心原因之一。本文通過對兩篇小紅書官方團隊發佈的推薦算法論文解讀,帶你揭開小紅書內容推薦機制的神祕面紗。

最近外國朋友瘋狂湧入“Xiaohongshu”,網友直呼,一夜之間與國際接軌。

這場史稱“美洲大遷徙”的互聯網奇象,也離不開小紅書本身過硬的內容推薦算法技術。而歪果網友也毫不吝嗇對於“Xiaohongshu”推薦算法的讚美。

01 小紅書如何“投你所好”

接下來讓我們看看,小紅書的推薦算法是怎麼不斷地成功“投你所好”。

一般來講,爲了構建出用戶所喜歡的推薦內容列表,經典的推薦系統構成爲:

從內容數據庫中檢索候選內容

通過排序模塊衡量每個事件的質量,即預測特定內容將爲用戶提供的效用程度

高質量內容將被髮送至策略模塊進行進一步篩選和重新排序,以構建最終的推薦列表

推薦系統的典型結構

目前能夠檢索到的小紅書官方發表的推薦算法相關的技術論文共有兩篇,接下來就讓我們一起揭開小紅書內容推薦機制的“神祕面紗”。

02 發現你的興趣:NoteLLM

推薦契合用戶興趣的筆記是一項關鍵任務。NoteLLM是一種用於解決內容到內容(I2I)筆記推薦問題的創新統一框架,旨在爲用戶提供更精準的筆記推薦服務。

研究者在小紅書開展了爲期一週的在線I2I推薦實驗。

與先前使用SentenceBERT的方法相比,NoteLLM的點擊率提升了16.20%,召回性能的增強使評論數增加1.10%,平均每週發佈者數量增加0.41%。

這些結果顯示,將LLM用於I2I筆記推薦任務能顯著提升推薦性能和用戶體驗。同時,新筆記一天內評論數顯著增加3.58%,表明LLM的泛化能力對冷啓動筆記有積極作用。

目前,NoteLLM已部署在小紅書的I2I筆記推薦任務中。

具體來說,通過“筆記壓縮提示詞”將筆記濃縮成特殊的單一token,再借助對比學習方法,進一步學習潛在相關筆記的嵌入關係。同時,NoteLLM還能對筆記進行總結,通過指令調優自動生成標籤或類別。

經大量實際場景驗證,NoteLLM在小紅書推薦系統裏效果顯著。

論文鏈接:https://arxiv.org/pdf/2403.01744

基於BERT模型的在線I2I筆記推薦方法存在侷限性,它們僅把標籤/類別當作筆記內容的普通部分,未深挖其潛在價值。標籤/類別蘊含着筆記的核心要點,對判斷筆記間內容相關性至關重要。

生成標籤/類別與生成筆記嵌入具有相似性,二者都能將筆記關鍵信息凝練爲有限內容。學習生成標籤/類別,有助於提升嵌入質量。

NoteLLM框架由三個關鍵部分組成:筆記壓縮提示構建、生成對比學習(GCL)和協作監督微調(CSFT)。

研究者採用統一的筆記壓縮提示,旨在將筆記內容壓縮成一個特殊的單一token,來助力I2I推薦和生成任務。

利用這個壓縮後的特殊token,通過生成對比學習(GCL)挖掘其中的協作知識。之後,藉助協作監督微調(CSFT),運用這些知識生成標籤和類別。

構建筆記壓縮提示

研究者用以下提示模板,實現了對筆記的通用壓縮以及標籤和類別的生成:

在這個模板裏,[BOS]、[EMB] 和 [EOS] 是特殊的 token 。而(指令)、(輸入筆記)、(輸出引導)和(輸出結果)是佔位符,後續會被具體內容替換。

類別生成的具體內容定義如下:

標籤生成的模板如下:

完成提示構建後,對其進行標記化處理並輸入LLM,LLM會將協作信號與關鍵語義信息提煉到壓縮詞中,依據筆記核心思想生成標籤或類別。

生成對比學習(GCL)

研究者提出生成式對比學習(GCL),目的是增強LLM捕獲更強協作信號的能力。GCL不同於從特定答案或獎勵模型中學習,它採用對比學習,從整體視角考量筆記之間關係的緊密程度。

爲了將協作信號融入LLM,採用基於用戶行爲的共現機制來構建相關筆記對。這一機制基於這樣的假設:若兩篇筆記常被用戶一起閱讀,那麼它們很可能存在關聯。

在構建相關筆記對之後,訓練NoteLLM基於文本語義和協作信號判斷筆記的相關性。

GCL的損失函數計算如下:

其中,表示GCL的損失,爲可學習的溫度參數,(,)=⊤/(∥∥*∥∥) 表示向量和的相似度。

協作監督微調(CSFT)

生成標籤/類別和生成筆記嵌入類似,都是對筆記內容的總結:前者從文本生成角度提取關鍵信息,後者從協作視角將筆記壓縮爲虛擬詞用於I2I推薦。

NoteLLM把GCL和CSFT任務結合起來建模,旨在潛在地提高嵌入的質量。研究者將這兩個任務整合到一個提示中,給它們提供額外信息,同時簡化訓練流程。

具體而言,研究者用協作監督微調(CSFT),通過筆記的語義內容和壓縮標記中的協作信號生成標籤/類別。

CSFT損失的計算方式如下:

其中,爲CSFT損失,是輸出序列的長度,表示輸出序列中的第個標記,是輸入序列。

最後,把GCL和CSFT結合,得到NoteLLM的總損失函數:

通過模型更新,NoteLLM可在筆記推薦場景中同時開展I2I推薦任務和標籤/類別生成任務。

03實現多樣化推薦:SSD

論文鏈接:https://arxiv.org/pdf/2107.05204

該論文主要是提出了滑動頻譜分解(SSD)方法,以解決小紅書中“多樣化信息流推薦”的問題。並且文中也提出了計算嵌入向量的策略CB2CF,以應對實際推薦場景中的長尾效應。

滑動頻譜分解

推薦系統通常提供很長的內容序列,而用戶當前的瀏覽窗口只能佔據整個序列的一部分。因此用戶需要不斷滑動當前瀏覽窗口才能獲取推薦內容序列中其餘內容。

如下圖所示,用戶閱覽窗口的處理步驟爲:首先,一個固定大小爲ω的窗口在整個原始內容序列中滑動。然後將內容的多個窗口以內容矩陣的形式堆疊在一起。最後將每個內容映射到其d維內容嵌入,得到軌跡張量。

在推薦場景中,作者將軌跡矩陣推廣到三階情況,將d維內容嵌入視爲多元觀測,並藉助單變量時間序列奇異譜分析(SSA),對進行奇異值分解。

其中,的體積代表了基於整個序列以及滑動窗口的多樣性,奇異矩陣可以看作是推薦內容呈現的正交方向,而奇異值則指的是這些方向在用戶對多樣性感知中的權重。

作者繼續通過這些內容所跨越的超平行體的體積來定義多樣性,由於多樣化的內容嵌入更加正交,這意味着它能夠跨越更大的體積。

一方面,推薦系統通常計算質量分數來表示用戶的預期效用,例如視頻觀看時間或參與度。另一方面,多樣性有時被視爲探索以發現更多關於用戶的信息

其中

爲三階張量的體積,γ是一個超參數,用於調整質量和多樣性之間的權衡。該目標函數利用貪心算法進行推理求解。

由於該方法將整個內容序列視爲用戶觀察到的時間序列,並通過頻譜分析分解其滑動表示。因此,作者將提出的方法稱爲滑動頻譜分解(SSD,Sliding Spectrum Decomposition)。

作者也利用在線實驗論證了相比於DPP(Determinantal Point Process)推薦算法,SSD分別在駐留時間、互動次數、ILAD、MRT四個指標分別進步了+0.25%,+0.71%,+0.37%,+0.53%。

其中ILAD是通過用戶查看筆記內容之間的平均成對相異性來衡量多樣性。MRT則使用用戶點擊的內容類別的平均數量來描述多樣性。

這說明SSD算法能夠更進一步地解決小紅書中“多樣化信息流推薦”的問題,給用戶更多類別的個性化推薦內容。

計算嵌入向量的CB2CF

協同過濾(CF,Collaborative Filtering)是一種常用的推薦系統算法,它基於用戶的行爲數據來計算內容之間的相似度,並據此爲用戶提供個性化推薦。

在CF策略的基礎上,作者提出了採用如下圖所示的孿生網絡結構CB2CF策略來計算內容嵌入向量。

嵌入模型CB2CF的網絡架構

對於給定的一個筆記內容,分別利用預訓練的BERT模型提取文本描述的特徵,Inception-V3模型提取封面圖像的特徵,將兩者特徵拼接後通過全連接層得到目標嵌入向量。

在訓練數據收集上,僅使用筆記內容本身作爲特徵,避免長尾效應的影響。對於有用戶互動的筆記,將通過 ItemCF方法檢索且在推薦結果中曝光足夠的筆記,與組成的筆記對作爲正樣本;隨機採樣ItemCF檢索的筆記與組成的筆記對作爲負樣本。

爲適應SSD方法,採用餘弦相似度作爲距離度量,並對嵌入向量進行歸一化,通過在歸一化後的向量後附加一個元素爲1的額外維度,解決餘弦距離與體積定義的不匹配問題。

最後,作者將這個問題視爲一個二分類任務,並使用交叉熵損失作爲目標函數。

在實驗中,作者將注意力限制在僅有少量互動的長尾內容上,並隨機抽取了100,000個筆記,這些內容在一個月內的互動次數均少於3次。

下圖展示了給定一個描述中國書法的低參與度內容時,從CF和CB2CF生成的最相似內容的示例。顯然,在這種情境下,所提出的CB2CF方法能夠檢索到更多相似內容,而CF則檢索到了與娛樂和繪畫相關的內容。

這說明將SSD與CB2CF嵌入相結合,能夠實現更好地捕捉用戶在長序列場景下對多樣性的感知,且在長尾效應下精確衡量內容相似度,給用戶提供符合興趣且廣泛多樣的個性化推薦內容。

免責聲明:投資有風險,本文並非投資建議,以上內容不應被視為任何金融產品的購買或出售要約、建議或邀請,作者或其他用戶的任何相關討論、評論或帖子也不應被視為此類內容。本文僅供一般參考,不考慮您的個人投資目標、財務狀況或需求。TTM對信息的準確性和完整性不承擔任何責任或保證,投資者應自行研究並在投資前尋求專業建議。

熱議股票

  1. 1
     
     
     
     
  2. 2
     
     
     
     
  3. 3
     
     
     
     
  4. 4
     
     
     
     
  5. 5
     
     
     
     
  6. 6
     
     
     
     
  7. 7
     
     
     
     
  8. 8
     
     
     
     
  9. 9
     
     
     
     
  10. 10