Skip to content

SuperTom99/ttttt

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

8 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Generative Recommender System: From Reproduction to Optimization

PyTorch License Faiss

这是一个基于生成式检索(Generative Retrieval)范式的序列推荐系统项目。

本项目复现并改进了 TIGER (Transformer Index for Generative Recommenders) 架构,实现了从 User HistoryTarget Item Semantic ID 的端到端生成。项目包含三个递进的版本:***RQ-VAE Greedy Strategy版本、RQ-VAE Beam Search版本 以及 RQ-Kmeans 效率探索版

🌟 核心特性 (Key Features)

  • Zero-shot 冷启动推荐: 利用 Sentence-T5 提取 Item 多模态语义特征,替代传统 ID Embedding,实现对新物品的即时推荐。
  • 训练稳定性攻坚: 在 VQ 训练中引入 Sinkhorn Algorithm (基于最优传输),解决 Codebook Collapse 问题,最大化码本利用率。
  • 索引一致性工程: 设计并落地 "Sinkhorn重采样 + 后缀位修正" 的两阶段去重策略,将 Semantic ID 的哈希冲突率彻底降至 0%
  • 严格评估体系: 建立基于 Exact Match (全匹配) 的评估指标,确保生成序列在 Item 级别的精准度。

🚀 项目演进 (Project Evolution)

本项目不仅仅是论文复现,更包含对算法缺陷的思考与改进:

1. 基础复现 (Base: RQ-VAE)

严格遵循 TIGER 论文设置,使用残差量化变分自编码器 (RQ-VAE) 将高维语义向量离散化为层次化 Tuple ID。

  • 特点: 采用 Greedy Strategy 进行量化,使用 Adagrad 优化器训练。

2. 精度优化 (Enhanced: RQ-VAE / Beam Search)

针对基础版贪婪量化导致的局部最优问题,引入 Joint Quantization 思想。

  • 改进: 在离线索引构建阶段,实现 Vectorized Beam Search
  • 效果: 显著降低重构误差 (Reconstruction Loss),从算法源头区分高相似商品,实现内源性冲突抑制。

3. 效率探索 (Exploration: RQ-Kmeans)

基于奥卡姆剃刀原则 (Occam's Razor),探索非参数化方法的可行性。

  • 改进: 使用 Faiss 实现 RQ-Kmeans 替代 RQ-VAE 神经网络。
  • 效果: 在保留高质量预训练向量几何结构的同时,将索引构建效率提升 10倍+,且完全消除训练坍塌风险。

📊 使用指南 (Usage)

第一步:数据预处理

下载 Amazon Review 数据集 (Beauty/Toys等),运行预处理脚本(process.ipynb)提取语义向量 注:data文件中包含Beauty的数据集

第二步:构建语义索引 (三选一)

选项 A: 训练 RQ-VAE (基础版)

注:默认 RQ-VAE 采取的是Greedy Strategy

  1. 运行rqvae/main.py
  2. 运行rqvae/generate_code.py

选项 B: 使用 Beam Search 生成索引 (优化版)

  1. 在rqvae/models/rqvae.py文件中,将导入文件改为 rq_beamsearch.py
  2. 根据rqvae/models/rqvae.py,rqvae/generate_code.py和model/main.py文件中的注释替换为beam search的代码
  3. 首先运行rqvae/main.py,然后运行rqvae/generate_code.py

选项 C: 使用 RQ-Kmeans (极速版)

  1. 运行rqkmeans/generate_kmeans_code.py

第三步:训练生成式推荐模型 (TIGER)

  1. 运行model/main.py文件

📈 实验结果 (Results)

我们在 Amazon Beauty 数据集上对三个变体进行了详细对比。实验环境保持一致,均采用 TIGER 架构,仅改变语义索引 (Semantic Indexing) 的生成方式。

主要指标对比 (Performance on Beauty Dataset)

Method Indexing Strategy Epochs to Converge Train Loss Recall@20 NDCG@20 Collision Rate*
Tiger-RQVAE (Base) Greedy VQ 96 1.941 0.1069 0.0490 0.061
Tiger-Enhanced Beam Search VQ 129 1.861 0.1114 0.0513 0.077
Tiger-RQKmeans Faiss K-means 82 2.000 0.1156 0.0516 0.0735

*注:Collision Rate 指未进行后缀修正前的原始哈希冲突率。最终系统均通过后缀修正保证了 0% 冲突。

💡 实验结论与分析 (Analysis)

  1. 精度换取效果 (Precision Matters):

    • Tiger-Enhanced (RQ-VAE2) 相比基础版,NDCG@20 提升了约 4.7%。这证实了在离线索引阶段引入 Beam Search (Joint Quantization) 能更精准地还原 Item 语义,从而帮助下游生成模型更准确地进行推荐排序。
    • 同时,Enhanced 版本的 Training Loss 最低 (1.86),说明高质量的 Semantic ID 序列更容易被 T5 模型学习和预测。
  2. 非参数化的胜利 (Simplicity Wins):

    • Tiger-RQKmeans 取得了 最高的 Recall@20 (0.1156)最优的 NDCG@20 (0.0516),且收敛速度最快 (Epoch 82)。
    • 这有力地证明了:在 Sentence-T5 这种高质量预训练向量的基础上,保持原始几何结构的残差聚类 (K-means) 是一种比训练神经量化器 (VQ-VAE) 性价比更高的选择。它不仅消除了训练坍塌的风险,还带来了更强的泛化能力。
  3. 冲突率与性能的 Trade-off:

    • 虽然 Enhanced 版本的原始冲突率 (0.077) 略高于基础版,但其推荐性能依然提升。这说明只要通过工程手段(后缀修正)解决了唯一性问题,语义的保真度 (Fidelity) 才是决定生成式推荐效果的核心因素。

🔗 参考资料 (References)

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages