Graph4Rec是由百度同学研发的基于PaddlePaddle实现的推荐系统GNN应用工具包。
论文链接:
Graph4Rec: A Universal Toolkit with Graph Neural Networks for Recommender Systems
笔者认为,Graph4Rec存在以下三个方面值得借鉴和思考:
- 统一GNN训练范式
- 提供多种GNN实现策略和技巧
- 提供真实场景中的评测方法和评测数据集
统一GNN训练范式
Graph4Rec将GNN的训练过程拆分成以下五个步骤
- Graph Inputs:输入图数据,包含节点、节点类型、边、边类型、(特征,即side information)
- Random Walk Generation:通过设置元路径(异构图可选)、游走长度、游走轮数生成游走序列
- Ego Graphs Generation:采样子图
- Pairs Generation:设置窗口长度和负采样数,生成节点对作为训练输入
- GNNs Selection:选择GNN Encoder,设置参数训练GNN模型
提供多种GNN实现策略和技巧
在真实的推荐场景中落地GNN主要面临大规模训练和高效训练两方面问题。
针对大规模训练问题,Graph4Rec采用参数服务器来解决。
针对高效训练问题,Graph4Rec采用以下几个策略:
- 使用Walk, Sample, Pair的顺序
对比Walk, Pair, Sample顺序
优点:减少重复采样相同节点子图的时间
缺点:减少训练样本的多样性
实验对比:速度翻倍,性能小幅下降
- In-batch Negative Sampling:在同一个batch内采样负例
实验对比全局负采样:速度翻四倍,性能上无明显差异
- Pre-training and Parameters Warm Start
首先训练random walk based图模型,基于训出来的模型参数,再用GNN-based 模型来加快收敛和提高性能。
实验只对比了纯random walk based图模型和纯GNN-based 模型的收敛性和性能,没有看到Warm up方式对效率和效果带来的影响。(如果我有看漏的,欢迎指出更正)
提供真实场景中的评测方法和评测数据集
在推荐系统中应用GNN的论文存在模型不好比、demo与落地存在GAP两个主要问题。
(1)模型不好比:没有统一的数据集和评测方式,无法直接评判模型的好坏
(2)demo与落地存在GAP:大多数论文只提供了一个小数据集上的demo,无法代表真实业务场景数据集的应用效果
Graph4Rec针对上述两个问题,首先选择了三种常用召回策略(UCF、ICF、U2I)定义了了topK的recall指标,接着选择了真实场景中的数据集最终完成实验。
ICF@topK:为user的每个交互item召回最相似的前N个item,返回出现最频繁K个item
UCF@topK:为user召回最相似的前N个user,返回这些user交互的最频繁K个item
U2I@topK:用user embedding检索最相似的前K个item