Project Icon

SIGIR2020_peterrec

基于序列行为的参数高效迁移学习推荐方法

SIGIR2020_PeterRec提出了一种基于用户序列行为的参数高效迁移学习方法,用于改进推荐系统性能。该方法在冷启动等场景中表现出色。项目提供了多个大规模数据集,用于评估各类推荐模型,包括基础模型、可迁移模型、多模态模型和大语言模型。项目还包含PyTorch代码实现和详细的使用说明。

SIGIR2020_PeterRec

用于用户建模和推荐的序列行为参数高效迁移

文章链接: https://zhuanlan.zhihu.com/p/437671278

https://zhuanlan.zhihu.com/p/139048117

https://blog.csdn.net/abcdefg90876/article/details/109505669

https://blog.csdn.net/weixin_44259490/article/details/114850970

https://programmersought.com/article/36196143813/

https://zhuanlan.zhihu.com/p/430145630

🤗 新资源: 四个用于评估基础/可迁移/多模态/大语言模型推荐系统的大规模数据集。

PeterRec Pytorch 代码在这里: https://github.com/yuangh-x/2022-NIPS-Tenrec



如果您在发表的文章中使用了我们的代码或数据集,请引用我们的论文。

@article{yuan2020parameter,
  title={Parameter-Efficient Transfer from Sequential Behaviors for User Modeling and Recommendation},
  author={Yuan, Fajie and He, Xiangnan and Karatzoglou, Alexandros and Zhang, Liguang},
  journal={Proceedings of the 42nd international ACM SIGIR conference on Research and development in Information Retrieval},
  year={2020}
}

NextItNet pytorch 版本: https://github.com/syiswell/NextItNet-Pytorch

GRec pytorch 版本: https://github.com/hangjunguo/GRec


PeterRec_cau_parallel.py: 使用因果CNN和并行插入的PeterRec

PeterRec_cau_serial.py: 使用因果CNN和串行插入的PeterRec

PeterRec_cau_serial_lambdafm.py: 基于PeterRec_cau_serial.py,使用lambdafm负采样器,并在评估时考虑所有物品而不是仅采样100个物品

PeterRec_noncau_parallel.py: 使用非因果CNN和并行插入的PeterRec

PeterRec_noncau_serial.py: 使用因果CNN和串行插入的PeterRec

NextitNet_TF_Pretrain.py: 通过NextItNet [0]预训练(即因果CNN)

GRec_TF_Pretrain.py: 通过GRec [1]的编码器预训练(即非因果CNN)

演示步骤:

您可以直接运行我们的代码:

第一步:python NextitNet_TF_Pretrain_topk.py (由于在评估阶段输出完整的softmax,NextitNet_TF_Pretrain.py比NextitNet_TF_Pretrain_topk.py慢)

在收敛后(一旦预训练模型保存就可以停止!)

第二步:python PeterRec_cau_serial.py (或 PeterRec_cau_serial_lambdafm.py)

注意,您可以使用两种评估方法,即我们论文中的采样top-N(PeterRec_cau_serial.py)或评估所有物品(PeterRec_cau_serial_lambdafm.py)。请注意,如果您使用PeterRec_cau_serial_lambdafm.py,这意味着您正在优化top-N指标,那么您必须在所有物品中评估预测准确性(如该文件所示),而不是采样指标 —— 因为采样指标与AUC更一致,而不是真正的top-N。但如果您使用BPR或CE损失和随机负采样器,您应该使用采样指标,因为这两种损失与随机采样器直接优化AUC,而不是top-N指标。 有关更多详细信息,我建议您参考最近的一篇论文"On Sampled Metrics for Item Recommendation"。简而言之,采样指标 = AUC,而不是真正的top-N。BPR优化AUC,而lambdafm优化真正的top-N指标(例如,MRR@N,NDCG@N)。如果您使用正确的评估方法,我们论文中的所有见解和结论都将保持一致。

或者

第一步:python GRec_TF_Pretrain_topk.py 第二步:python PeterRec_noncau_parallel.py

运行我们的论文:

用我们的公开数据集替换演示数据集(包括预训练和微调):

您将使用我们论文中的设置重现论文中报告的结果,包括学习率、嵌入大小、扩张、批量大小等。请注意,论文中报告的结果基于相同的超参数设置,以进行公平比较和消融测试。您可以进一步微调超参数以获得最佳性能。例如,我们在微调期间使用0.001作为学习率,您可能发现0.0001表现更好,尽管论文中的所有见解保持一致。 此外,还有一些其他可以改进的地方,比如用于微调的负采样。为简单起见,我们实现了一个非常基本的均匀采样,您可以使用更高级的采样器,如LambdaFM (LambdaFM: Learning Optimal Ranking with Factorization Machines Using Lambda Surrogates),即PeterRec_cau_serial_lambdafm.py。同样,我们的预训练网络(例如NextitNet_TF_Pretrain.py)也在TF中使用了基本的采样函数,如果您在非常大规模的系统中处理数亿个物品,您也可以用自己的采样函数替换它。

数据集(脱敏)链接

用于预训练、迁移学习和用户表示学习的推荐数据集:
ColdRec2: https://drive.google.com/open?id=1OcvbBJN0jlPTEjE0lvcDfXRkzOjepMXH
ColdRec1: https://drive.google.com/open?id=1N7pMXLh8LkSYDX30-zId1pEMeNDmA7t6
    
可用于推荐系统预训练、迁移学习、跨域推荐、冷启动推荐、用户表征学习、自监督学习等任务。

请注意,我们提供了论文中使用的原始数据集和几个预处理过的数据集,以便于尝试。也就是说,为了简化,我们为每个任务提供了一个源数据集和一个目标数据集,而在实践中,建议使用一个预训练的源数据集来服务于所有目标任务(确保您的源数据集涵盖目标任务中的所有ID索引)。

实际上,ColdRec2数据集同时包含点击和喜欢操作,我们提供了以下数据集,通过分离点击和喜欢数据,可用于未来的研究。

数据集(脱敏)链接

迁移学习推荐数据集:
ColdRec2(点击和喜欢数据已分离): https://drive.google.com/file/d/1imhHUsivh6oMEtEW-RwVc4OsDqn-xOaP/view?usp=sharing

推荐设置(请注意!)

如果'eval_iter'较小,速度会慢很多,因为它表示多久执行一次评估。可能只需要1或2次迭代就会收敛。

另外,请更改您要评估的批次数量,我们只展示了20个批次作为演示,您可以将其更改为2000或更多 NextitNet_TF_Pretrain_topk.py

    parser.add_argument('--eval_iter', type=int, default=10000,
                        help='每x步采样生成器输出')
    parser.add_argument('--save_para_every', type=int, default=10000,
                        help='每隔多少步保存模型参数')
    parser.add_argument('--datapath', type=str, default='Data/Session/coldrec2_pre.csv',
                        help='数据路径')
    model_para = {
        'item_size': len(items),
        'dilated_channels': 64, # 注意在论文中我们使用256
        'dilations': [1,4,1,4,1,4,1,4,], # 注意1 4表示1 2 4 8
        'kernel_size': 3,
        'learning_rate':0.001,
        'batch_size':32,# 你可以尝试32、64、128、256等
        'iterations':5, #如果测试集性能不再变化,你可以停止预训练。可能不需要5次迭代
        'is_negsample':True #False表示无负采样
    }

PeterRec设置(例如,PeterRec_cau_serial.py/PeterRec_cau_serial_lambdafm):

    parser.add_argument('--eval_iter', type=int, default=500,
                        help='每x步采样生成器输出')
    parser.add_argument('--save_para_every', type=int, default=500,
                        help='每隔多少步保存模型参数')
    parser.add_argument('--datapath', type=str, default='Data/Session/coldrec2_fine.csv',
                        help='数据路径')
    model_para = {
        'item_size': len(items),
        'target_item_size': len(targets),
        'dilated_channels': 64,
        'cardinality': 1, # 1是ResNet,否则是ResNeXt(性能相似,但速度较慢)
        'dilations': [1,4,1,4,1,4,1,4,],
        'kernel_size': 3,
        'learning_rate':0.0001,
        'batch_size':512, #你不能使用batch_size=1,因为后面使用np.squeeze会减少一个维度
        'iterations': 20, # 注意这不是默认设置,你应该根据自己的数据集,通过观察测试集的性能来设置
        'has_positionalembedding': args.has_positionalembedding
    }
  

环境

  • Tensorflow(版本:1.7.0)
  • Python 2.7

相关工作:

[1]
@inproceedings{yuan2019simple,
  title={A simple convolutional generative network for next item recommendation},
  author={Yuan, Fajie and Karatzoglou, Alexandros and Arapakis, Ioannis and Jose, Joemon M and He, Xiangnan},
  booktitle={Proceedings of the Twelfth ACM International Conference on Web Search and Data Mining},
  pages={582--590},
  year={2019}
}
[2]
@inproceedings{yuan2020future,
  title={Future Data Helps Training: Modeling Future Contexts for Session-based Recommendation},
  author={Yuan, Fajie and He, Xiangnan and Jiang, Haochuan and Guo, Guibing and Xiong, Jian and Xu, Zhezhao and Xiong, Yilin},
  booktitle={Proceedings of The Web Conference 2020},
  pages={303--313},
  year={2020}
}
[3]
@article{sun2020generic,
  title={A Generic Network Compression Framework for Sequential Recommender Systems},
  author={Sun, Yang and Yuan, Fajie and Yang, Ming and Wei, Guoao and Zhao, Zhou and Liu, Duo},
  journal={Proceedings of the Twelfth ACM International Conference on Web Search and Data Mining},
  year={2020}
}
[4]
@inproceedings{yuan2021one,
  title={One person, one model, one world: Learning continual user representation without forgetting},
  author={Yuan, Fajie and Zhang, Guoxiao and Karatzoglou, Alexandros and Jose, Joemon and Kong, Beibei and Li, Yudong},
  booktitle={Proceedings of the 44th International ACM SIGIR Conference on Research and Development in Information Retrieval},
  pages={696--705},
  year={2021}
}

招聘

如果你想与Fajie https://fajieyuan.github.io/ 一起工作,请通过电子邮件yuanfajie@westlake.edu.cn联系他。他的实验室目前正在招募访问学生、实习生、研究助理、博士后(中国元:每年450,000-550,000)和研究科学家。如果你想在西湖大学攻读博士学位,也可以联系他。 如果你有合作的想法或论文,请随时通过微信(wuxiangwangyuan)与他交流。他对各种合作持开放态度。 西湖大学原发杰团队长期招聘:推荐系统和生物信息(尤其蛋白质相关)方向,科研助理、博士生、博士后、访问学者、研究员系列。

项目侧边栏1项目侧边栏2
推荐项目
Project Cover

豆包MarsCode

豆包 MarsCode 是一款革命性的编程助手,通过AI技术提供代码补全、单测生成、代码解释和智能问答等功能,支持100+编程语言,与主流编辑器无缝集成,显著提升开发效率和代码质量。

Project Cover

AI写歌

Suno AI是一个革命性的AI音乐创作平台,能在短短30秒内帮助用户创作出一首完整的歌曲。无论是寻找创作灵感还是需要快速制作音乐,Suno AI都是音乐爱好者和专业人士的理想选择。

Project Cover

有言AI

有言平台提供一站式AIGC视频创作解决方案,通过智能技术简化视频制作流程。无论是企业宣传还是个人分享,有言都能帮助用户快速、轻松地制作出专业级别的视频内容。

Project Cover

Kimi

Kimi AI助手提供多语言对话支持,能够阅读和理解用户上传的文件内容,解析网页信息,并结合搜索结果为用户提供详尽的答案。无论是日常咨询还是专业问题,Kimi都能以友好、专业的方式提供帮助。

Project Cover

阿里绘蛙

绘蛙是阿里巴巴集团推出的革命性AI电商营销平台。利用尖端人工智能技术,为商家提供一键生成商品图和营销文案的服务,显著提升内容创作效率和营销效果。适用于淘宝、天猫等电商平台,让商品第一时间被种草。

Project Cover

吐司

探索Tensor.Art平台的独特AI模型,免费访问各种图像生成与AI训练工具,从Stable Diffusion等基础模型开始,轻松实现创新图像生成。体验前沿的AI技术,推动个人和企业的创新发展。

Project Cover

SubCat字幕猫

SubCat字幕猫APP是一款创新的视频播放器,它将改变您观看视频的方式!SubCat结合了先进的人工智能技术,为您提供即时视频字幕翻译,无论是本地视频还是网络流媒体,让您轻松享受各种语言的内容。

Project Cover

美间AI

美间AI创意设计平台,利用前沿AI技术,为设计师和营销人员提供一站式设计解决方案。从智能海报到3D效果图,再到文案生成,美间让创意设计更简单、更高效。

Project Cover

AIWritePaper论文写作

AIWritePaper论文写作是一站式AI论文写作辅助工具,简化了选题、文献检索至论文撰写的整个过程。通过简单设定,平台可快速生成高质量论文大纲和全文,配合图表、参考文献等一应俱全,同时提供开题报告和答辩PPT等增值服务,保障数据安全,有效提升写作效率和论文质量。

投诉举报邮箱: service@vectorlightyear.com
@2024 懂AI·鲁ICP备2024100362号-6·鲁公网安备37021002001498号