目錄
- 概
- 符號/縮寫說明
- Training details
- Datasets
- E2E 下 MoRec 是否優於 IDRec?
- Regular setting
- Warm setting
- 越好的 encoder 帶來越好的推薦效果?
- TS versus E2E?
- 總結
- 程式碼
Yuan Z., Yuan F., Song Y., Li Y., Fu J., Yang F., Pan Y. and Ni Y. Where to go next for recommender systems? ID- vs. modality-based recommender models revisited. SIGIR, 2023.
概
ID 資訊, 模態資訊使用方式的一個綜合性的經驗驗證.
符號/縮寫說明
- MoRec: modality-based recommendation model
- IDRec: pure ID-based model
- FM: foundation model
- NLP: natural language processing
- CV: computer vision
- ME: modality encoder
- TS: two-stage paradigm
- E2E: end-to-end training
- \(i \in \mathcal{I}\), items;
- \(u \in \mathcal{U}\), users;
Training details
- Backbone: SASRec/DSSM, 前者是一個序列模型, 後者是一個雙塔模型;
- Encoder: (僅對 MoRec 有用): BERT (small/base) | RoBERTa (small/base) | ResNet50 | Swin-T/B;
- Loss function: BCE (Binary Cross-Entropy)
- Optimizer: AdamW;
- dropout rate: 0.1
- learning rate for IDRec: \(\{1e-3, 5e-4, 1e-4, 5e-5\}\);
- learning rate for MoRec (Encoder): \(\{1e-4, 5e-5, 1e-5\}\);
- learning rate for MoRec (Other): \(1e-4\);
- Weight decay: \(\{0.1, 0.01, 0\}\);
- IDRec embedding/hidden size: \(\{64, 128, 256, 512, 1024, 2048, 4096\}\);
- MoRec embedding/hidden size: 512 for DSSM, 64 for SASRec;
- Batch size: 1024 for DSSM, 128 for SASRec
注: 預設情況下, MoRec 採用的 E2E 的訓練方式, 即除了 Backbone 外, Encoder 也是跟著訓練的.
Datasets
- MIND: 在訓練 MoRec 的時候, 預設僅使用文字模態 (標題);
- H&M: 在訓練 MoRec 的時候, 預設僅使用影像模態 (Cover image);
- Bili: 在訓練 MoRec 的時候, 預設僅使用影像模態 (Cover image);
- 資料的劃分依照 leave-one-out 的方式;
E2E 下 MoRec 是否優於 IDRec?
Regular setting
- 由上圖可以發現, 透過比較強大的 encoder (如 RoBERTa/Swin-B), MoRec 是有可能趕上甚至超越 IDRec 的;
- 有意思的是, 這個結論和 backbone 有關係, DSSM 上無論用哪個 encoder 都是 IDRec 效果好, 而 SASRec 上 MoRec 就有很大機會暫優勢, 感覺其實也有可能是 SASRec 和 encoder 在結構上比較一致?
- 文字資訊 (MIND) 比起圖片資訊 (HM, Bili) 來說似乎效果更好一點, 我感覺是文字資訊的噪聲更少一點, 故而更容易利用和微調.
Warm setting
- 一般來說, 冷啟動場景下, 都是 MoRec 效果好, 這裡我們感興趣的是, warm-setting 下的情況, 可以發現, 隨著 item 的流行度的增加, IDRec 的優勢越來越大.
越好的 encoder 帶來越好的推薦效果?
- 如上圖所示, 一般情況下, 模型越複雜, 引數量越多, 的確後續的推薦效果會越好, 但是也有例外, 如 BERT-small 的效果會比 BERT-base 的效果稍稍好一點.
TS versus E2E?
-
除了 E2E 外, 還有一種比較常見的模態資訊的利用方式, 即 TS (two-stage), 它首先透過 encoder 提取模態特徵, 然後把這些模態特徵用到下游任務中 (此時, encoder 不會再進行微調), 這種方式有顯著的優點, 就是節約計算資源.
-
但是如上圖所示, TS 一般情況都是顯著遜色於 E2E 的, 如果我們在模態特徵後新增多層的 MLP 來進行對映, 則可以得到稍好的結果, 但是依然遜色於 E2E.
-
我個人認為, 這很大程度上取決於 E2E 能夠透過微調記憶資料的資訊, 其實是不公平的.
總結
總體看下來, 我的感覺是一般的模態特徵是有很大的噪聲的, 需要透過互動資訊透過調整, 一種是透過 ID embedding 去記憶, 另一種是透過微調 encoder 去記憶, 但是顯然這兩種方式都不那麼 scalable.
程式碼
[official]