RecSys 2023
代碼:iesl/narrative-driven-rec-mint: Mint: A data augmentation method for narrative driven recommendation.
1 intro
- 盡管基于歷史交互的數據能夠有效地提供推薦,但用戶在請求推薦時,往往只是對目標物品有一個模糊的概念,或者希望推薦結果能夠根據其使用情境而變化,而這些上下文信息通常在歷史交互數據中缺失
- 用戶常常會通過長篇敘述式查詢(long-form narrative queries)來描述他們的廣泛興趣和情境,從而請求推薦。這類信息訪問任務被稱為敘述驅動推薦(Narrative-Driven Recommendation, 簡稱 NDR)
- 這類敘述性請求在討論論壇和某些 Reddit 子版塊中非常常見,但現有推薦系統對這種復雜自然語言查詢的支持仍然嚴重不足
- 相較于傳統的搜索接口,用戶使用自然語言表達復雜主觀需求的情況正在顯著增加
- 具有強大語言理解能力的大語言模型(LLMs)的出現,也為滿足此類復雜請求帶來了可能
- 論文探索如何將傳統用于協同過濾推薦器訓練的歷史用戶-物品交互數據集,重新利用于支持 NDR 任務。
2 問題定義
3 方法
- 核心思想是重新利用豐富的用戶-物品交互數據集 I,借助大語言模型(LLM)生成敘述式查詢 qu?,從而構造訓練數據
-
3.1?使用 LLM 生成敘述式查詢
-
為了為用戶-物品交互數據集 I中的每位用戶生成敘述式查詢 qu,使用InstructGPT 模型作為查詢生成器 Qgen
-
將用戶與項目交互所得的文本
作為 QGen 的 prompt,并指示模型生成一個敘述式查詢
LLM根據用戶的偏好和評論,模擬這位用戶可能在 Reddit 上發出的請求性帖文
3.2 為合成查詢篩選項目
- 核心意思是:生成出來的敘述式查詢(narrative query)可能無法代表用戶所有興趣,所以需要對用戶的項目集合進行篩選,只保留那些與生成的查詢最相關的項目,來訓練檢索模型
- 如果你用用戶的全部項目
來訓練模型,會加入很多與當前查詢無關的項目,這會增加噪聲、降低訓練效果。
- 如果你用用戶的全部項目
- ——>
3.3?檢索模型訓練
- 基于上述合成數據訓練了 bi-encoder 和 cross-encoder 兩種模型
- Bi-encoder 通常作為第一階段排序器,能夠從大規模項目集合中高效檢索
- Cross-encoder 則允許更豐富的查詢-項目交互,常用于 reranking 階段。
- 在這兩種模型中均使用了一個參數規模為 110M 的預訓練 Transformer 模型 MPNet,其結構類似于 BERT。
- 在 bi-encoder 中,查詢和項目分別編碼為高維向量:
- 通過L2 距離對項目進行排序
- 在 cross-encoder 中,模型同時接收查詢和項目作為輸入,輸出一個打分:
- 損失函數
- 測試階段
- 先用訓練好的 bi-encoder 檢索前 200 個項目,再用 cross-encoder 對其重新排序。
- 實驗中對這兩個階段分別評估,分別命名為 BiEnc-Mint 和 CrEnc-Mint。
4 實驗
4.1 數據
- 使用Pointrec進行評估
- 包含 112 個真實的敘述式查詢
- 這些項目由眾包工人和/或論壇成員進行了分級相關性標注,并經數據集作者進一步驗證
- 目前這是唯一公開的、帶人工標注和候選池的 NDR 測試集
- 項目集合 CCC 包含約 70 萬個 POI,每個 POI 提供元信息(如類別、城市)和從 Bing 搜索引擎抓取的簡略描述
- 僅對與查詢相關城市與類別(如“餐廳”)中的候選項目進行排序,遵循先前工作中避免無關項目干擾的做法
- 使用 Yelp 的用戶-物品交互數據生成合成查詢用于訓練
- 排除所有評論數少于 10 的用戶和 POI,確保所選用戶為高活躍度用戶
- 這一篩選步驟參考了用戶-物品推薦系統中常見的預處理流程
- 保留評分平均值大于 3/5 且有 10-30 條高于平均值評論的用戶,以偏向那些更擅長表達喜好(而非厭惡)的用戶
- 這些用戶的興趣也更適合通過生成器建模。最終篩選后,Yelp 數據集中保留了 45,193 個用戶
- 從中隨機選出 10,000 位用戶生成合成查詢。對每位用戶,我們從其 10 條評論中隨機選一句話,組成 prompt
- 最終生成約 60,000 條訓練樣本
- 生成所有查詢的成本約為 230 美元
- 排除所有評論數少于 10 的用戶和 POI,確保所選用戶為高活躍度用戶