ReChorus: 基于隐式反馈的Top-K推荐评测框架

科技工作者之家 2020-07-04

来源:社媒派SMP

ReChorus 是由清华大学信息检索实验室(THUIR)马少平教授、张敏副教授(SMP委员)、刘奕群教授(SMP委员)团队发布的一个轻量级 Top-K 推荐评测框架,旨在为此类场景的推荐算法提供一个公平的平台进行对比,缓解如今 state-of-the-art 模型论文中因实验设置和细节设定不同而导致结果不可比的问题,力求形成一个各类推荐算法百花齐放的“合唱团”(Chorus)。框架由博士生王晨阳开发,底层架构为 PyTorch,编程语言使用 Python。



01

ReChorus介绍

ReChorus 重现了一系列当下流行的推荐算法,包括经典的 BPR、NCF;使用序列信息的 GRU4Rec、SASRec;使用商品间知识图谱的 CFKG;以及近期提出的 TiSASRec、Chorus 等。工具包内置了一个公开的 Amazon 数据集(14.6w 交互),可以通过命令行参数快速进行不同算法的对比。



ReChorus 力求将算法间差异化的部分集中到一个文件中,而将共性的部分整合到框架的基本类里,同时保证足够的可扩展性。与其他推荐工具包相比,ReChorus 的特性包括:


研究导向:更适合研究者进行快速的模型设计和对比,简单模型用数十行即可实现。

易于上手:框架部分仅仅不到 800 行,代码整洁并辅以充足注释。

运行高效:batch 多线程准备,针对任务优化的评测方式,90% 以上的 GPU 使用率。

可扩展性:针对不同的数据格式和训练流程,可以重写帮助类并指定给相应模型。


GitHub 链接:https://github.com/THUIR/ReChorus


下面简单介绍一下 ReChorus 的架构设计以及如何实现新算法。



02

架构设计

ReChorus 将此类算法的构建过程分为三个部分:


Reader:数据读入

Runner:模型训练和评测

Model:准备 batch 输入、得到 ranking score


其中数据读入与模型训练和评测是不同算法间共性的部分,而准备 batch 得到 ranking score 则是算法间的差异所在。因此 Reader 和 Runner 可以看做 Model 的帮助类,在不同模型间共享。框架主要完成的事情即定义了 BaseReader、BaseRunner 这两个帮助类,以及基本的模型类 BaseModel。


一方面使用者只需要继承 BaseModel 重写部分关键函数即可实现新的模型,另一方面框架也允许重写帮助类并赋予对应的模型以实现个性化的数据读入和训练评测。框架的整体结构如下:




03

实现新算法

ReChorus 将算法间差异的部分(准备 batch、计算 ranking score)集中到了一个文件中,通常来说只需要继承 BaseModel 类并重写以下几个关键函数。



_define_params 定义了算法所需训练的参数,forward 则控制如何通过输入得到预测分数。对于数据准备,我们用其中的一个内部类 Dataset(继承自 PyTorch 的 Dataset 类)定义每个 batch 的具体内容。

 

这样算法差异化相关的内容就都集中到一个文件中了,在确定数据集和实验设定的前提下,实现新算法时只需要关注这一个文件,大大提升了实现效率,降低了 debug 难度。

 

如果新算法的 batch 准备和经典算法相同,可以通过继承经典模型类来使用一致的模型输入。而如果算法涉及比较复杂的数据输入、loss 等,则可以参考 BaseModel 中的相应函数并进行重写。

 

除此之外,ReChorus 还通过各种细节保障了数值稳定性和计算效率,并提供了用于自动重复实验记录结果的工具 exp.py

 


欢迎大家使用本框架实现自己的算法,您可以提交一个 issue,经过验证后我们将更新仓库和排行榜。我们今后也将持续更新此仓库,添加更多经典和 state-of-the-art 的算法,希望能和广大研究者一同努力,构建并完善此类推荐场景下的一个公平的评测框架。

 

如果您在使用工具包的过程中遇到任何问题或困难,可以通过邮件(THUwangcy@gmail.com)或提交 issue 的方式联系我们,我们会在 24 小时内进行答复。

责任编辑:杨亮

点击阅读原文,进入项目页面!

来源:CIPS-SMP 社媒派SMP

原文链接:https://mp.weixin.qq.com/s?__biz=MzA5OTQ5MDE0Mw==&mid=2651121585&idx=1&sn=9b738b4fa7ef4f1a056ca52ca98c7eaf&chksm=8b71c781bc064e97a173792a623469b5dd4e9b5815a37d2bbfef172f9b08a9a556779ae1d332#rd

版权声明:除非特别注明,本站所载内容来源于互联网、微信公众号等公开渠道,不代表本站观点,仅供参考、交流、公益传播之目的。转载的稿件版权归原作者或机构所有,如有侵权,请联系删除。

电话:(010)86409582

邮箱:kejie@scimall.org.cn

算法 框架 推荐算法

推荐资讯