基于序列行为的参数高效迁移学习推荐方法
SIGIR2020_PeterRec提出了一种基于用户序列行为的参数高效迁移学习方法,用于改进推荐系统性能。该方法在冷启动等场景中表现出色。项目提供了多个大规模数据集,用于评估各类推荐模型,包括基础模型、可迁移模型、多模态模型和大语言模型。项目还包含PyTorch代码实现和详细的使用说明。
文章链接: 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
🤗 新资源: 四个用于评估基础/可迁移/多模态/大语言模型推荐系统的大规模数据集。
MicroLens(DeepMind演讲): https://github.com/westlake-repl/MicroLens
NineRec(TPAMI): https://github.com/westlake-repl/NineRec
Tenrec(NeurIPS): 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}
}
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
另外,请更改您要评估的批次数量,我们只展示了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 }
[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)与他交流。他对各种合作持开放态度。 西湖大学原发杰团队长期招聘:推荐系统和生物信息(尤其蛋白质相关)方向,科研助理、博士生、博士后、访问学者、研究员系列。
字节跳动发布的AI编程神器IDE
Trae是一种自适应的集成开发环境(IDE),通过自动化和多元协作改变开发流程。利用Trae,团队能够更快速、精确地编写和部署代码,从而提高编程效率和项目交付速度。Trae具备上下文感知和代码自动完成功能,是提升开发效率的理想工具。
全能AI智能助手,随时解答生活与工作的多样问题
问小白,由元石科技研发的AI智能助手,快速准确地解答各种生活和工作问题,包括但不限于搜索、规划和社交互动,帮助用户在日常生活中提高效率,轻松管理个人事务。
实时语音翻译/同声传译工具
Transly是一个多场景的AI大语言模型驱动的同声传译、专业翻译助手,它拥有超精准的音频识别翻译能力,几乎零延迟的使用体验和支持多国语言可以让你带它走遍全球,无论你是留学生、商务人士、韩剧美剧爱好者,还是出国游玩、多国会议、跨国追星等等,都可以满足你所有需要同传的场景需求,线上线下通用,扫除语言障碍,让全世界的语言交流不再有国界。
一键生成PPT和Word,让学习生活更轻松
讯飞智文是一个利用 AI 技术的项目,能够帮助用户生成 PPT 以及各类文档。无论是商业领域的市场分析报告、年度目标制定,还是学生群体的职业生涯规划、实习避坑指南,亦或是活动策划、旅游攻略等内容 ,它都能提供支持,帮助用户精准表达,轻松呈现各种信息。
深度推理能力全新升级,全面对标OpenAI o1
科大讯飞的星火大模型,支持语言理解、知识问答和文本创作等多功能,适用于多种文件和业务场景,提升办公和日常生活的效率。讯飞星火是一个提供丰富智能服务的平台,涵盖科技资讯、图像创作、写作辅助、编程解答、科研文献解读等功能,能为不同需求的用户提供便捷高效的帮助,助力用户轻松获取信息、解决问题,满足多样化使用场景。
一种基于大语言模型的高效单流解耦语音令牌文本到语音合成模型
Spark-TTS 是一个基于 PyTorch 的开源文本到语音合成项目,由多个知名机构联合参与。该项目提供了高效的 LLM(大语言模型)驱动的语音合成方案,支持语音克隆和语音创建功能,可通过命令行界面(CLI)和 Web UI 两种方式使用。用户可以根据需求调整语音的性别、音高、速度等参数,生成高质量的语音。该项目适用于多种场景,如有声读物制作、智能语音助手开发等。
AI助力,做PPT更简单!
咔片是一款轻量化在线演示设计工具,借助 AI 技术,实现从内容生成到智能设计的一站式 PPT 制作服务。支持多种文档格式导入生成 PPT,提供海量模板、智能美化、素材替换等功能,适用于销售、教师、学生等各类人群,能高效制作出高品质 PPT,满足不同场景演示需求。
选题、配图、成文,一站式创作,让内容运营更高效
讯飞绘文,一个AI集成平台,支持写作、选题、配图、排版和发布。高效生成适用于各类媒体的定制内容,加速品牌传播,提升内容营销效果。
专业的AI公文写作平台,公文写作神器
AI 材料星,专业的 AI 公文写作辅助平台,为体制内工作人员提供高效的公文写作解决方案。拥有海量公文文库、9 大核心 AI 功能,支持 30 + 文稿类型生成,助力快速完成领导讲话、工作总结、述职报告等材料,提升办公效率,是体制打工人的得力写作神器。
OpenAI Agents SDK,助力开发者便捷使用 OpenAI 相关功能。
openai-agents-python 是 OpenAI 推出的一款强大 Python SDK,它为开发者提供了与 OpenAI 模型交互的高效工具,支持工具调用、结果处理、追踪等功能,涵盖多种应用场景,如研究助手、财务研究等,能显著提升开发效率,让开发者更轻松地利用 OpenAI 的技术优势。
最新AI工具、AI资讯
独家AI资源、AI项目落地
微信扫一扫关注公众号