嘿,记得给“机器学习与推荐算法”添加星标
TLDR: 本文针对协同过滤技术固有的数据稀疏问题,提出了两种监督对比损失函数,将锚定节点的近邻信息视为最终目标损失函数内的正样本。通过对所提出的损失函数进行梯度分析,可以发现锚点节点表征的更新将同时受到多个正样本和增强负样本的共同影响。最后通过大量的实验验证了所提出方法的有效性。
推荐模型已广泛应用于许多在线平台,如 Yelp、Gowalla 和亚马逊。推荐模型的主要思想是,具有相似消费历史的用户可能具有相似的偏好,这也是协同过滤(CF)方法的主要思想。CF方法有两种,memory-based的和基于模型的方法。根据近年来的研究趋势,基于模型的CF 方法因其高效的性能而备受关注。然而,CF 模型主要存在数据稀疏性问题。如何通过提高用户和项目表征的有效性来提升 CF 模型的性能是主要的研究方向,因此许多模型被提出来挖掘更多信息以增强用户和项目的表征。例如,有人提出了 SVD++ 模型,利用 ItemKNN 方法获得的物品最近邻来增强基于模型的方法。而 LightGCN 可以利用高阶协作信号来增强用户和物品的表示。
最近,对比学习在计算机视觉领域取得了巨大成功。由于对比学习可以提供额外的自监督信号,一些研究人员尝试将其引入推荐任务,以缓解数据稀疏问题。对比法的主要思想是将表示空间中的任何节点与其他节点区分开来。在本研究工作中,我们从输入的用户和项目集合中随机选择一个节点作为锚节点。通过对模型推导出的锚节点表示法进行分析,以突出当前对比学习法的不足之处。通过使用锚节点的关键特征约束,我们旨在提高推荐模型的性能。一般来说,任何用户和项目都可以被视为锚节点。为清楚起见,并具体说明我们的方法,我们在本文的主要示例中使用项目作为锚节点。在推荐任务中,用户和项目的表征是基于他们的历史交互而学习的。通过扰动锚节点的历史交互记录来生成增强数据是一个自然的想法。在模型训练阶段,锚节点的表示及其增强表示是每个锚节点的正样本。
然后,其他节点的表示被视为负样本。然而,对比学习在推荐任务中显示出有效性,但也带来了新的挑战,可能会使锚定节点与它们的近邻信息产生距离。因此,在对比损失中一些潜在的与用户兴趣相关的邻居可能被视为假负样本,从而削弱了推荐模型的优化。例如,在图1中,对于锚定节点项目i,项目k和用户a分别是其最近和交互邻居。锚定节点及其最近邻居和交互邻居的表示应该彼此接近于超球体内。最近和交互邻居是锚定节点的近邻信息。如果对比损失优化推荐模型,则会导致锚点i远离近邻信息,如图1左侧所示部分。据我们所知,并没有多少研究致力于解决这个问题。在SGL论文(见表II)中, 研究人员直接利用基于排名的损失函数将锚点及其互动邻域拉近。而NCL 的作者研究了如何基于聚类方法找到锚点正样本。
图1. 我们随机选择一个项目i作为锚节点。 节点k是i的最近邻居,通过ItemKNN算法找到,并且节点a是与项目i互动过的用户。
尽管提出了许多策略来解决将监督信号与对比损失相结合这一具有挑战性任务, 但仍然是一个复杂问题. 我们提出一个潜在解决方案: 将锚定节点的协作邻域视为目标损失函数中正样本. 这种方法旨在优化所有节点学习表示空间内各个位置, 使得锚点和正样本节点接近,同时最大程度地增加 与负样本节点的距离。受SupCon 工作启发, 我们设计了两种新颖的监督对比损失函数来解决推荐任务。这些 函数经过精心设计,更加有效地引基座模型的优化。
在实验部分,我们展示了使用我们提出的损失函数训练的选定基座模型 LightGCN 的卓越性能。我们在三个真实世界数据集Yelp2018、Gowalla 和 Amazon-Book上进行了评估。模型在NDCG@20指标上分别比SGL方法优越10.09%、7.09%和35.36%,表现远超过当前最先进的对比学习方法。我们提出模型的贡献可以总结如下:
图2. 提出的邻域增强监督对比损失(NESCL)的整体框架
该框架有四个部分,A) 用于基于用户-物品交互矩阵
计算用户-用户相似度矩阵和物品-物品相似度矩阵。B) 它表示如何获得所有用户和项目的两个表示矩阵
和增强表示
。
和
分别表示两个增强图。C) 对于任何锚节点(以产品i举例),需要根据物品-物品相似度矩阵收集其最近邻居
以及根据用户-物品交互矩阵收集其交互邻居。D) 在计算监督协作对比损失函数
或
之前,还应从表示矩阵中索引所有用户和项目的表示。由于在这幅图中最近邻居和交互邻居非常清晰,我们在此图中突出显示了锚节点的对比视角正样本。
本文旨在修改传统的对比学习技术,以在推荐任务中纳入不同类型的正样本。我们认为,在构建锚节点i的对比损失时,不仅应将其两个视图的表示视为其正样本,还应将其近邻信息的表示也视为其正样本。我们要解决的挑战是如何建模锚节点的多个正样本。受SupCon启发,该方法也专注于设计监督对比损失函数来建模正样本。我们提出了两种独特的监督对比损失函数:邻域增强监督对比损失(NESCL),分别有“内”版本和“外”版本。这两种损失函数可以参考式(5)和(6)。关于我们提出的两种独特损失函数如何工作的整体框架可参考图2。我们将LightGCN作为基座模型,并采用与SGL相同的数据增强策略。
接下来一节首先介绍计算NESCL 的准备工作。然后,我们将介绍前向计算过程。最后,我们将介绍设计好的NESCL 的详细信息,并分析它如何从理论角度动态权衡不同类型正样本重要性。最后,讨论了我们提出模型及相关模型 SGL 的复杂性问题。
本节将介绍如何找到锚节点i的最近邻。我们的工作中使用了两种memory-based的方法,即基于用户和基于物品。在本节中,我们将以基于物品的方法ItemKNN为例,介绍如何计算任意两个物品i和j之间的相似度
:
其中
表示物品i和j共同交互用户数。
分别表示物品i和j的度。由于项目集V非常庞大,在生成推荐时会耗费大量时间,因此对于每个项目i,我们将具有最大
值的前K个项目视为i的最近邻,并使用
来表示节点i的最近邻集合。
在模型的前向过程中,我们将介绍如何实现锚定节点及其正样本的表示。然后,这些获得的表示将用于计算监督协同对比损失函数(
和
)。给定dropout输入图
,它会被增强两次以获得两个增强图
和
,其中一种数据增强策略是Node Dropout、Edge 和丢失率设定为ρ的随机游走。然后基于相同的基座模型 LightGCN,我们可以得到两个表示矩阵,
和
。然后,对于任何锚节点i,我们索引其最近邻居
和交互邻居
的表示用于后续计算。接下来,我们将介绍基于索引表示的设计损失函数
和
)。
我们提出的损失函数的主要思想是,通过优化监督对比损失函数,学习到的锚点表示不仅应该远离其他负节点,而且还应接近其近邻信息,即最近邻和交互邻居。对于任何锚点i,给定其两个视图的表示
和
,最近邻的表示
,
以及交互邻居的表示
,
,则可以得到以下两种监督损失函数
和
。它们旨在优化基座推荐模型,并将独立工作。我们设计这两种损失函数的动机是探讨不同类型多项式融合方法在基于InfoNCE损失函数下对模型优化的影响。
它们的方程如下:
符号
表示节点a和i之间的相似度,具体数值由memory-based方法得到。
的数量是预先定义为K。我们将在实验部分给出更多关于K以及近邻对模型表现带来的影响。
的分析:为了更好地研究所提出的对比损失函数,首先,我们使用
到以下方程式:
然后,我们从
到锚节点i的表示
计算梯度。我们可以得到以下方程式:
根据SGL的分析,我们突出了我们提出的损失函数与SGL中损失函数之间的差异。从上述公式可以看出,在邻域增强项的帮助下,锚节点的嵌入
由正样本
,
, 和
共同决定。这是我们提出的损失函数能更好地引导基座模型优化的原因之一。
其次,不同正样本的影响力
,
和
由锚节点表示
和多个负样本
共同影响决定。这使得不同正样本影响力的计算更加准确。例如,
数值可通过以下方式计算:
的分析:与上一小节中的分析类似,我们采用相同方法来分析损失函数
。通过计算
对节点i的辅助视图
的梯度,我们可以得到:
根据上述公式,我们可以得出与
相同的结论。这两种损失函数之间的区别在于不同正样本的计算影响能力。与“in”版本损失函数相比,“out”版本的计算会更复杂。由于
、
和
的公式非常复杂,我们在此不展开它们。有关更多细节,请访问arxiv链接并参考附录A.1和A.2部分。我们以
为例。通过将
除以
,我们可以得到:
从该公式中,我们有两个观察结果。首先是,
的值应该小于
。其次,与
相比,
的值不仅受到其对应正样本
之间距离的影响,还受到其他正样本
和
的影响。我们将在实验部分评估这两种损失函数的性能。
尽管我们提出的监督协作对比损失可以利用训练阶段不同种类正样本的信息,但在进行实验时,我们发现公式(3)中的损失函数
也非常有用。我们认为这两种损失函数可以为将锚节点和正样本拉近到表示空间中提供不同类型能力。因此,我们提出模型的整体损失函数如下:
其中
是一个超参数,用于平衡两种类型损失函数的重要性。较大的
意味着相应损失在训练阶段发挥更重要的作用。
表IV所有模型在三个真实数据集上的表现
所有模型的整体表现可参考上表. 从实验结果中,我们得到以下三点观察:
最后想说的一句话是:虽然memory-based方法已经拥有二十多年的历史了,但是还是非常有效。建议大家可以多留意这个信息。祝各位科研顺利。