Graph-less Collaborative Filtering
论文链接:https://arxiv.org/abs/2303.08537
背景/动机
对于基于用户-物品交互图协同过滤(CF)任务,图神经网络(GNN)展现出了强大的图结构建模能力。然而,由于其在邻居节点之间的迭代信息传递机制和过平滑以及低通拉普拉斯平滑算子的噪声效应,现有的基于GNN的CF方法可能会生成无法区分且不准确的用户(物品)嵌入表示。另一方面,在实际应用中,在完整图结构上的的迭代信息传播可以会导致较差的可扩展性。
一般地,基于GNN的CF模型的核心操作是利用邻域聚合范式和迭代信息传递来编码用户和物品的嵌入表示。这些方法虽然取得了显著的性能提升,但仍然存在一些问题:
(1)GNN的设计会导致过平滑问题。随着嵌入传播层堆叠地更多,基于邻域信息聚合的推荐模型将会不可避免地生成无法区分的用户和物品表示,这使得基于GNN的推荐方法很难捕获用户偏好的多样性。这一现象使得广泛存在于推荐系统的误点击(misclick)和流行度偏差(popularity bias)等问题会被进一步放大。
(2)迭代扩展的扩展性限制。尽管基于GNN的推荐模型可以通过堆叠多个GCN层来捕获高阶连通性,但迭代地邻域信息聚合会导致高额的计算负担。因此,具有更深GCN层的CF模型表现出较差的可扩展性,尤其是对于大规模推荐场景。
应对上述挑战虽然非常关键,但仍然存在一些问题:
(1)如何高效地建模用户-物品交互;
(2)如何对过平滑和噪声问题具有鲁棒性的嵌入表示进行编码,同时保持高阶交互关系。
前置知识
一般地,基于协同过滤(collaborative filtering,CF)的推荐任务的输入是用户的交互矩阵A(在多数论文中交互矩阵通常也以符号R表示,而A表示邻接矩阵,此处使用A表示交互矩阵以为原论文保持统一),而输出是一个预测函数,以预测每个用户对新物品的交互概率分数。基于此,CF模型可以以两个阶段进行抽象:
函数用于将用户和物品投影至d维的嵌入特征空间,该函数的输出是每个节点的嵌入表示,而用于通过计算两个嵌入来得到用户对物品的预测分数。
SimRec
为了解决在背景部分提及的挑战,作者提出了SimRec模型,其框架如下图所示:
对比知识蒸馏(Contrastive Knowledge Distillation)
对于模型设计,作者提出使用图神经网络(GNN)学习结构感知的节点嵌入,而高效的多层感知机(MLP)用于防止过平滑问题。两者之间通过知识蒸馏技术进行迁移。具体来说,该过程包括一个基于GNN的教师模型(teacher model)和一个基于MLP的学生模型(student model)。
教师模型是经典的LightGCN模型:
简单来说,教师模型通过堆叠L层LightGCN,以此得到不同传播距离的嵌入表示矩阵,并通过求和操作得到最终的节点嵌入矩阵H。
学生模型使用共享的MLP网络从用户和物品的初始嵌入中提取特征信息。给定用户,嵌入层形式上被定义为:
其中表示全连接层。每个全连接层包括特征转换矩阵W、LeakyReLU激活函数和残差连接设计。物品侧的嵌入层可以以类似的方式进行定义。
为了实现从教师模型到学生模型的知识迁移,SimRec遵循基于KL散度的知识蒸馏范式,尝试对齐(align)教师和学生模型之间的预测输出。基于BPR损失(参见经典图推荐系统论文LightGCN算法及代码简介_lightgcn代码_博一老狗的博客-CSDN博客中模型训练部分),在每个训练步骤中,随机抽样三元组,分别表示为用户、正样本和负样本(正负样本是对于用户i而言的,用户i交互过的样本为正样本,反之则为负样本)。SimRec通过内积方式计算三元组之间的偏好差异:
随后,面向预测的蒸馏可以通过最小化下述损失:
其中上标和分别表示从教师模型和学生模型计算得到的偏好差异z,sigm表示sigmoid激活函数,是温度系数。来自于充分训练的教师模型并且不会反向传播梯度。简单来说,蒸馏损失将教师模型得到的偏好差异作为学生模型的交叉熵损失的软标签(soft label),从而实现充分训练的教师模型指导更为轻量级的学生模型进行训练。关于知识蒸馏以及在推荐中的应用可以参见下文:
需要指出的是,本文提出的面向预测的知识蒸馏与传统范式有所不同。具体来说,传统的知识蒸馏通常用于多分类任务,而CF任务本身不属于该类任务,这因为物品太多(即类别太多),这使得教师模型得到的软标签很容易接近于0,于此本文提出基于BPR预测值的蒸馏过程,这与传统的方法具有很大差别。
尽管知识蒸馏很有效,但面向预测的知识蒸馏只监督模型的输出,而忽略学生与老师的嵌入分布的差异性。由于教师模型和学生模型都遵循在前置知识中提及的嵌入和预测范式,作者基于对比学习(contrastive learning,CL)构造面向嵌入的知识迁移。具体来说,在每个batch中抽样以观察到的用户和物品对,则对应的对比损失定义如下:
其中cos()表示余弦相似度函数,表示对比损失中的温度系数。上述损失包含用户侧的对比损失(第一行)和物品侧的对比损失(第二行)。为了让缺乏高阶关系的学生模型学习到更多信息,SimRec只使用了老师模型的高阶节点嵌入表示(l从2开始)。需要指出的是,教师的嵌入是充分训练的,并且在参数优化过程式固定的。通过上述对比损失,SimRec不仅可以进一步提高学生模型的性能,而且极大地加速了蒸馏过程,核心原因在于对比损失可以为模型训练提供大量梯度,这有助于帮助模型发现hard负样本。关于对比学习,可以参见SGL和SimGCL。
自适应对比正则化(Adaptive Contrastive Regularization)
为了防止过平滑信号从基于GNN的教师模型迁移至学生模型,作者提出通过最小化节点相似性来约束学生模型的嵌入学习过程。具体来说,SimRec通过将蒸馏任务的梯度与主任务的梯度进行比较,以此自适应地定位哪些节点更有可能被过度平滑:
总体来看,该损失由三部分组成,第一项最小化的嵌入和用户集中每个用户的嵌入的点积相似度(dot-product similarity),后两项则分别为用户和物品、物品与物品。而的计算过程如下:
如果蒸馏任务对应的梯度(可能过于平滑)与主任务产生的梯度(不过于平滑)相互矛盾时,具有更大值(),其中是一个超参数。表示和的复合梯度,表示推荐任务的梯度,它独立于基于GNN的教师模型,因此没有过平滑的风险。梯度之间的相似性使用点积来估计。当蒸馏任务和推荐任务之间的相似度大于两个蒸馏任务之间的相似度时,可以认为蒸馏和推荐之间的优化差异小到可以削弱正则化。换句话说,复合梯度与推荐梯度足够相似,可以认为过平滑没有从教师模型迁移至学生模型,因此损失的权重降低为。
SimRec的学习过程
遵循知识蒸馏的训练策略,SimRec首先训练基于GNN的教师模型并直到收敛为止。在每个迭代过程中,SimRec随机抽取一个batch的用户、正样本和负样本,本计算抽样样本的BPR损失:
最后一项是正则化项,以防止过拟合。
随后,SimRec进行联合训练,以优化基于MLP的学生模型。在此过程,结构感知的节点表示从基于GNN的教师模型蒸馏至抗过平滑的学生模型。完整的目标函数如下所示:
其中是优化项的权重系数,推荐损失只最小化正用户-物品对之间的相似性,表示基于MLP的学生模型的正则化项。完整的训练过程如下所示:
理论分析
通过KD实现自适应的高阶平滑
基于GNN的推荐方法的一个重要优势是能够使用高阶邻居平滑用户/物品嵌入。对于基于LightGCN的教师模型而言,给定任意两个节点和,对于BPR损失,可作如下推导:
表示BPR损失中拉近节点和的嵌入的项(省略上标(t)以简略),,由于表示拉近过程,所以BPR损失中负样本对应的部分在上述推导中被省略。表示节点和之间可能的一条路径(最大长度为2L),表示节点的度。是之前提到的正负样本之间的内积差异:
上式推导的第一部分可由以下公式推导:
上式推导的第二部分表示节点和 在各自的L层嵌入传播的过程中接受到所以可行的路径上的节点的嵌入信息,并收到归一化系数的影响。关于BPR损失的梯度推导和相关介绍可以参见:
上式揭示了GCN以带权梯度平滑高阶节点的嵌入。权重(括号内的部分)对节点通过多跳连接的节点的联系程度进行编码。
而对于本文提出的面向预测的知识蒸馏损失,则有:
其中:
sigmoid函数的计算过程为
对损失求偏导,则有:
上式表明基于MLP的学生模型在没有图信息传播的情况下也可以实现高阶嵌入平滑。