文章目錄
- 1. 背景與問題
- 任務
- 背景動機
- LLM2Rec 兩大步驟
- 2. 方法
- 2.1 Collaborative Supervised Fine-tuning(CSFT)
- 2.2 Item-level Embedding Modeling
- 2.2.1 從單向注意力 → 雙向注意力(Bidirectional attention)
- 2.2.2 商品級別的對比學習(Item-level Contrastive Learning)
- 2.3 喂給序列推薦模型
- 3. 實驗
- 3.1 主實驗
- 3.2 消融實驗
- 3.3 其他
- 3.3.1 域分析
- 3.3.2 LLM Backbones 分析
- 3.3.3 性能分析
- 4. 總結
這里來學習一篇文章《LLM2Rec: Large Language Models Are Powerful Embedding Models for Sequential Recommendation》是新國立 蔡達成(Tat-Seng Chua)團隊在 KDD-2025 上的工作。
論文鏈接:https://arxiv.org/abs/2506.21579
代碼鏈接:https://github.com/HappyPointer/LLM2Rec
1. 背景與問題
任務
整體任務也是協同與語義的結合。
現有探索有兩種:
- 一種是純文本法:只用文本(商品介紹等)做 embedding,能泛化但丟了 CF 信號。
- 另一種是混合法:試圖融合文本和 CF 信號,比如把 ID 向量和文本向量拼接、用文本指導 ID 訓練、或設計融合網絡(比如cross-attention)。【CCFRec 也算這類吧】本質還是主要依賴 ID 向量。
作者認為:最好的 embedding model,應該 “天生” 就能同時捕獲 CF 信號和 語義知識,而不是通過外部拼拼湊湊【OneRec 中的 embedding 方式】本文旨在探索如何讓 LLM 既理解文本,又成為可以泛化的 embedding 生成器,服務于推薦系統。
背景動機
- 近幾年發現大語言模型(LLM)經過“監督微調”后,其實可以學會推薦相關任務。
- 作者想讓LLM既能捕捉CF信號(比如哪些商品經常一起被買),又有理解文本內容的能力。
- 但是LLM原本只會做“token級別預測”(即只會預測下一個詞),并不是專門為生成商品的“整體向量”設計的。
LLM2Rec 兩大步驟
協同監督微調(CSFT)
- 把真實推薦場景下的用戶交互序列(比如:用戶買了A、B、C,接下來可能買D)用來微調 LLM,讓它能夠學習到商品間的 CF 信號。
- 實例:比如任天堂的一堆游戲(馬里奧、動物森友會等),這些游戲經常被同一批用戶一起買,經過訓練后,這些游戲的向量會變得更接近。
商品級嵌入建模(IEM)
- 在前面基礎上,對 LLM 做進一步的結構和目標優化,讓它更適合生成“商品級的向量”。
- 主要包括兩個技術:
- 雙向注意力+掩碼預測(MNTP):讓模型可以更全面地理解每個商品的文本信息。
- 商品級對比學習:讓同一個商品的不同“視角”聚在一起,不同商品拉得更遠,這樣嵌入更加區分度高。
2. 方法
2.1 Collaborative Supervised Fine-tuning(CSFT)
輸入其實就是一串商品標題的列表,之間只用逗號隔開,沒有復雜的模板,以防止模型學到無關的模板信息。
每次只讓模型根據前面的商品序列“自回歸地”生成下一個商品標題:
2.2 Item-level Embedding Modeling
大語言模型(LLM,比如GPT)通常都是單向的 decoder 模型,它們被設計用于“自回歸”(即一個詞一個詞地預測下一個詞)。
但是,這種單向預測機制在生成高質量的item embedding時表現一般。因為生成 embedding 通常需要雙向地同時看前面和后面的上下文信息。
作者希望能夠綜合兩種模型的優點:
- 單向decoder(LLM):擁有強大的語義理解能力。
- 雙向encoder模型(如BERT):更適合生成高質量的上下文感知嵌入。
因此,作者試圖對LLM進行改造,使它同時擁有 encoder 的雙向理解能力,來生成高質量的商品嵌入。
2.2.1 從單向注意力 → 雙向注意力(Bidirectional attention)
單向注意力(Causal Attention):
- 傳統的decoder LLM在生成一個詞的嵌入時,只能看到它前面的詞,無法看到后面的詞,這叫做“因果注意力(Causal attention)”。
為什么要轉為雙向注意力?
- 在生成嵌入時,我們希望模型能看到整個商品描述的全部內容(即:商品標題或描述中的所有詞)。
- 因此,作者去掉了單向的限制,改造成“雙向注意力”:生成一個詞的嵌入時,可以同時參考它前后所有詞的信息。
怎么訓練這種雙向的LLM?(Masked Next Token Prediction,簡稱MNTP)
- 在商品的文本序列中,隨機遮蓋掉一些詞(隨機mask),然后讓LLM根據前后詞的信息預測出這些被mask的詞。
- 這樣LLM逐漸就能習慣于雙向地理解商品的文本,從而生成更有效的嵌入。
- MNTP的損失函數:
LMNTP=?∑i∈I∑s=0?ip(ti,s∣ti,<s)\mathcal{L}_{MNTP}=-\sum_{i\in I}\sum_{s=0}^{\ell_i}p(t_{i,s}|t_{i,<s}) LMNTP?=?i∈I∑?s=0∑?i??p(ti,s?∣ti,<s?)
2.2.2 商品級別的對比學習(Item-level Contrastive Learning)
為什么需要對比學習?
- 上一步的方法(MNTP)還是以詞(token)為單位,而作者希望獲得的是商品級(整個句子或描述)的整體嵌入。
- 單純把詞級嵌入平均(average-pooling)是一種簡單方法,但不一定足夠好。
對比學習怎么做?
- 每個商品文本會隨機生成兩個略有差異的版本(比如隨機遮蓋不同的詞),讓模型去分別生成兩個版本的商品嵌入。
- 模型的目標:
- 同一個商品的兩個版本嵌入盡可能接近;
- 不同商品的嵌入盡可能遠離。
- 這樣生成的嵌入就更容易區分不同的商品,也能更好地表示商品本身。
- 對比學習的損失函數:
LIC=?∑i∈Ilog?exp?(E(t~i1)E(t~i2)?/τ)∑j∈Iexp?(E(t~j1)E(t~j2)?/τ)\mathcal{L}_{IC}=-\sum_{i\in I}\log\frac{\exp\left(\mathcal{E}(\tilde{t}_i^1)\mathcal{E}(\tilde{t}_i^2)^\top/\tau\right)}{\sum_{j\in I}\exp\left(\mathcal{E}(\tilde{t}_j^1)\mathcal{E}(\tilde{t}_j^2)^\top/\tau\right)} LIC?=?i∈I∑?log∑j∈I?exp(E(t~j1?)E(t~j2?)?/τ)exp(E(t~i1?)E(t~i2?)?/τ)?
我疑惑這里沒有用 logit shift 僅僅通過這個階段的訓練改變的目標是不是太大了?原本 自回歸的 causal mask 模型的 hidden state 本質上更關注下一個位置的 token 預測。每個位置輸出的 hidden state 與下一個 token 緊密相關,而非自己當前 token 本身。BERT是在預測當前位置token,而不是下一個位置token。
2.3 喂給序列推薦模型
把 LLM2Rec 生成的每個 item 的 embedding ziz_izi?,用一個簡單的線性變換(就是加個“門檻”,w乘上再加b,公式:zi′=Wzi+bz'_i = Wz_i + bzi′?=Wzi?+b)。
這個線性層參數(W和b)可以在下游推薦系統訓練時一起優化,適配到下游的場景。
3. 實驗
3.1 主實驗
3.2 消融實驗
3.3 其他
3.3.1 域分析
3.3.2 LLM Backbones 分析
3.3.3 性能分析
4. 總結
感覺直接從 next-token-prediction 轉變為 mask-token-prediction 的地方,是不是可能導致模型變化很大,因為也在看 Diffusion LLM 的文章,他們一般在基于自回歸 next-token-prediction 上預訓練,然后使用 mask-token-prediciton 的時候由于當前位置預測的任務變了,所有做了一個 logit shift ,這樣輸出的 hidden state 不會有太大變化,能夠繼續訓練,這里卻不是。是否是因為沒這樣做才導致 IEM1(MNTP) 在消融實驗里提升很小。