近年来,各种各样的推荐算法层出不穷,特别是深度学习的发展,极大地推动了推荐系统的研究. 然而,各个推荐算法在实现细节、评价方式、数据集处理等方面存在众多差异,越来越多的研究者开始对推荐领域的可复现性产生担忧. 为了帮助缓解上述问题,我们基于PyTorch实现了一个综合、高效、易扩展的轻量级推荐算法框架ReChorus,意为构建一个推荐算法的“合唱团”.
ReChorus框架中实现了多种不同类型的推荐算法,类别涵盖常规推荐、序列推荐、引入知识图谱的推荐、引入时间动态性的推荐等,同时对于一些常见的数据集也提供统一的预处理范式. 相比其他推荐系统库,ReChorus在保证综合高效的基础上尽可能做到了轻量实用,同时具有较高的可扩展性,尤其以方便学术研究为导向,非常容易上手实现新的模型. 不同的推荐算法在ReChorus框架中能够在相同的实验设定下进行训练和评测,从而实现推荐算法间的有效对比.
代码:https://github.com/THUwangcy/ReChorus
论文:https://www.jos.org.cn/jos/article/abstract/6473
相比已有的推荐系统库, ReChorus 有如下几个特点:
(1) 综合高效. ReChorus 框架目前已实现了 13 个不同的推荐算法,涵盖推荐领域的经典模型以及近年来提出的基于深度学习的方法.各种不同类别的模型都被整合到一个统一的框架中(如基于ID、基于序列、引入知识图谱、引入时间信息等) .ReChorus 通过三个核心模块,即 Reader、 Runner、 Model, 将不同模型之间共通的数据读取、训练测评等部分整合在一起,把每个模型独特的部分单独提取出来进行实现.此外,通过针对 Top-K 排序任务的特定优化,模型的训练和测试得以高效进行.
(2) 轻量实用. ReChorus 框架力求简洁,核心代码在 1000 行左右,非常易于理解与上手.框架整体基于PyTorch 实现,契合如今研究社群中深度学习框架使用的整体趋势.此外,为了方便研究者迭代更新模型,ReChorus 将模型独特的部分集中在一个文件中,使得开发与测试过程更加高效.我们还针对研究者引入了许多实用的功能,比如中间变量检查、重复实验记录、并行参数搜索等.
(3) 扩展性强. ReChorus 不同模块之间具有“轻耦合,重组合”的特点,方便使用者在开发新模型时针对个性化的需求进行扩展,同时不影响其他已有的模型.例如数据读入与训练评测相关的功能以帮助类的形式分配给每个模型,同时提供了许多接口,使用者可以通过继承新的帮助类,来满足模型对数据读入和训练评测的特殊需求.
该仓库的整体框架图,主要包括数据预处理、数据读入、模型构建以及训练与测试模块。
该框架还在主流的推荐算法上进行了实验,主要结果如下。