Where to Go Next for Recommender Systems? ID- vs. Modality-based Recommender Models Revisited
目录
概
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]