Skip to content

模型库导览

Torch-RecHub 提供了丰富的推荐模型库,涵盖了推荐系统的各个环节,包括排序、召回、多任务学习和生成式推荐。所有模型均基于 PyTorch 实现,易于使用和扩展。

模型库结构

模型库按照推荐系统的不同阶段和任务类型进行组织:

  1. 排序模型 (Ranking):用于精排阶段,预测用户对物品的点击率或偏好分数
  2. 召回模型 (Matching):用于粗排阶段,从海量物品中召回候选集
  3. 多任务模型 (Multi-Task):同时优化多个相关任务,提高模型的泛化能力
  4. 生成式推荐 (Generative):利用生成式模型生成个性化推荐

模型选择指南

排序模型选择

模型适用场景特点
WideDeep基础排序任务结合线性模型和深度模型,兼顾记忆和泛化能力
DeepFM特征交互重要的场景同时捕获低阶和高阶特征交互
DCN/DCNv2显式特征交叉场景显式学习高阶特征交叉,计算效率高
DIN用户兴趣动态变化场景基于注意力机制捕捉用户兴趣
DIEN长序列兴趣建模建模用户兴趣的动态演化过程
BST序列特征重要的场景使用 Transformer 建模序列特征
AutoInt自动特征交互学习自动学习特征交互模式

召回模型选择

模型适用场景特点
DSSM文本匹配场景双塔结构,将用户和物品映射到同一向量空间
YoutubeDNN大规模推荐场景基于用户行为序列的深度召回
MIND多兴趣推荐场景为用户学习多个兴趣表示
GRU4Rec/SASRec序列推荐场景建模用户近期行为序列
ComirecDR/ComirecSA可控多兴趣推荐允许控制生成的兴趣数量

多任务模型选择

模型适用场景特点
SharedBottom任务相关性强的场景所有任务共享底层网络
MMOE任务冲突较大的场景多门控专家混合,为不同任务学习不同专家组合
PLE复杂多任务场景渐进式分层提取,缓解负迁移问题
ESMM样本选择偏差场景全空间建模,解决样本选择偏差
AITM任务间存在依赖关系自适应信息迁移,学习任务间的依赖关系

生成式推荐选择

模型适用场景特点
HSTUnext-item 序列推荐层级序列转换单元,支持位置/时间偏置
HLLM预计算 LLM item embedding 的序列推荐冻结 item 语义表,训练用户序列 Transformer
RQ-VAEitem 语义 ID 量化把连续 item embedding 压缩成多级 codebook ID
TIGER语义 ID 生成式检索用 T5 生成下一个 item 的合法语义 ID

模型文档导航

排序模型

详细介绍各种排序模型的原理、使用方法和参数说明。

查看排序模型文档

召回模型

详细介绍各种召回模型的原理、使用方法和参数说明。

查看召回模型文档

多任务模型

详细介绍各种多任务模型的原理、使用方法和参数说明。

查看多任务模型文档

生成式推荐模型

详细介绍各种生成式推荐模型的原理、使用方法和参数说明。

查看生成式推荐模型文档

使用示例

python
# 排序模型使用示例
from torch_rechub.models.ranking import DeepFM
from torch_rechub.trainers import CTRTrainer

# 创建模型
model = DeepFM(deep_features=deep_features, fm_features=fm_features, mlp_params={"dims": [256, 128], "dropout": 0.2})

# 创建训练器
trainer = CTRTrainer(model, optimizer_params={"lr": 0.001}, device="cpu")

# 训练模型
trainer.fit(train_dataloader, val_dataloader)

# 召回模型使用示例
from torch_rechub.models.matching import DSSM
from torch_rechub.trainers import MatchTrainer

# 创建模型
model = DSSM(user_features=user_features, item_features=item_features, temperature=1.0,
             user_params={"dims": [256, 128, 64]}, item_params={"dims": [256, 128, 64]})

# 创建训练器
trainer = MatchTrainer(model, mode=0, device="cpu")

# 训练模型
trainer.fit(train_dataloader)

贡献新模型

如果您想贡献新的模型,请参考 贡献指南,遵循项目的编码规范和文档要求。