大家好,我是对话。今天我们就来说说推荐系统中不得不学习的ContrastiveLearning方法。近年来,对比学习在CV和NLP领域得到广泛应用,在推荐系统中当然也不例外。我觉得大家把比较学习和推荐系统结合起来主要有四个原因:第一,是因为数据的稀疏性。众所周知,推荐系统中的点击数据非常少。可能系统推荐了十篇文章,而用户只点击了一篇文章,那么我们可以通过自监督学习来提升点击数据;其次,由于项目长尾分布。主流产品往往代表了绝大多数用户的需求,而长尾产品往往代表了一小部分用户的个性化需求。如果想推荐用户行为少的长尾产品,也可以通过自监督来增强;三、因为跨域推荐中如果有多个不同的view,可以通过自监督学习融合多个view的信息,而不是动态线性加权,增强网络的表达能力;四、是因为增加了模型的鲁棒性,可以通过Mask、Dropout等方法实现Stickiness或者抗噪。那么今天我们就来探讨一下对比学习在推荐系统中的主流实践和前沿应用。1.DHCN论文题目:Self-SupervisedHypergraphConvolutionalNetworksforSession-basedRecommendation论文方向:SessionRecommendation论文来源:AAAI2021论文链接:https://arxiv.org/abs/2012.06852论文代码:https://github.com/xiaxin1998/DHCNSession-basedrecommendation(SBR),即session推荐的主要任务是根据已有的多个user-item交互序列完成下一项预测。在这种情况下,用户配置文件不可用,因此从多个用户-项目交互序列中提取用户意图嵌入尤为重要。基于此,本文将会话数据建模为超图,提出了双通道超图卷积网络DHCN。同时,为了增强超图建模,本文创新性地将自监督学习融入网络训练中,最大化DHCN中通过两个通道学习的会话表示之间的互信息,作为改进推荐任务的辅助任务。超图定义线图定义将超图中的每条边(即每个用户的session)视为一个节点,任意两个节点之间的边权重被视为两个用户session的相似度。计算是构造一个超图,因为超图被定义为可以包含多个节点的超边,所以这些节点可以看作是通过一条公共边相互连接,因此每个用户的会话或超边将构成一个完整的子图,并且该子图中的边权重都相等(因为它们共享相同的超边)。对应的折线图是一个完全图,任意两个节点(session)的边权值说明了两个用户session的相似度。Hypergraphconvolution包含多个hypergraphconvolutionlayer用于items-embedding的传播和更新,描述为:涉及相同hyperedge的两个节点进行消息传递,所以在构造的hypergraph上是相邻的(因为他们涉及共同的hyperedge,或者一起出现在auser'ssession):矩阵表达式为:注意上面的操作不涉及序列特征,所以作者引入了一个可训练的位置码Matrix来反映usersession中item的顺序,用item-embedding和一个Dense拼接layeroperationtoobtainitem-embeddingwithsequencefeatures:self-supervisedlearningenhancedDHCPNhypergraphmodeling使模型获得良好的性能。作者认为,会话数据的稀疏性可能会阻碍超图建模,这将导致推荐性能欠佳。受简单图上自我监督学习成功实践的启发,作者将自我监督学习集成到网络中以增强超图建模。Learningwithself-supervisedsignals被认为是有利于推荐任务的辅助任务,分为两个步骤:创建self-supervisedsignals在DHCN中,通过这两个通道学习两组通道特定的会话嵌入。由于每个通道编码的超图仅描述会话诱导的超图的项目级(插入)或会话级(会话间)结构信息,因此两组嵌入对象彼此知之甚少但可以相互补充其他。在训练期间,两组会话嵌入之间存在客观映射。简单地说,这两组映射可以相互作为自监督学习的基础,这种一对一的映射被视为标签增强。如果两个会话嵌入表示两个视图中的同一个会话,则该对被标记为基本事实,否则被标记为负的。Contrastivelearning通过创建自监督信号比较两个图得到的表示,利用互信息最大化原理,对线图卷积得到的embedding使用row-wise和column-wiseshuffling得到negativesamples,即增加两个角度session-embedding之间的一致性:最终损失函数为两部分之和:总结文的创新点如下:提出了双通道超图卷积网络DHCN对于SBR任务,它由hypergraph建模,可以捕获项目之间的超对关系和跨会话信息。首次将自监督学习的概念引入到推荐任务的网络训练中。自监督学习可以加强模型的表达能力和推荐任务的完成效果。2.MHCN论文题目:Self-SupervisedMulti-ChannelHypergraphConvolutionalNetworkforSocialRecommendation论文方向:SocialRecommendation论文来源:WWW2021论文链接:https://arxiv.org/abs/2101.06448论文代码:https://github。com/Coder-Yu/QRec在推荐系统中,当用户-项目交互数据稀疏时,通常会使用社会关系来提高推荐质量。大多数现有的社交推荐模型利用成对关系来挖掘潜在的用户偏好。然而,现实生活中用户之间的交互是非常复杂的,用户关系可能是高阶的。超图提供了一种自然的方式来模拟复杂的高阶关系,而它们改善社交推荐的潜力尚未开发。在本文中,作者提出了一种多通道超图卷积网络(MHCN),以利用高阶用户关系来增强社交推荐。从技术上讲,网络中的每个通道都通过超图进行卷积,以对描述常见高阶用户关系模式的超图进行编码。通过聚合多个渠道学习的嵌入,可以获得全面的用户表示以生成推荐结果。然而,聚合操作也可能掩盖不同类型的高阶连接信息的固有特征。为了补偿聚合损失,作者将自监督学习纳入超图卷积网络的训练中,以获得最大化分层互信息的连接信息。现有的自监督学习(SSL)方法主要用于从人工平衡的数据集(如ImageNet)训练表示模型。目前尚不清楚它们在现实世界中的表现如何,因为在现实世界中,数据集通常是不平衡的。基于这个问题,作者对自监督对比学习和监督学习方法在训练实例分布从均匀分布到长尾分布的多个数据集上的性能进行了一系列研究。作者发现,与性能下降较大的监督学习方法不同,自监督对比学习方法即使在数据集严重不平衡的情况下也能保持稳定的学习性能。社交推荐系统中常见的高阶用户关系类型(引自MHCN论文)构建超图hypergraphs,将边的概念概括为连接到两个以上的节点,为建模用户之间复杂的高阶关系提供了一种自然的方法。作者通过统一形成特定三角关系的节点来构建超图,这些节点是一组精心设计的具有底层语义的三角主题的实例,如下图所示:从左到右是图M1~M10,根据我们根据隐式语义将它们分为三组。M1~M7概括了显式社交网络中所有可能的三角关系,描述了高阶社交关系,比如“有一个共同的朋友”,我们称之为“SocialMotifs”。M8~M9代表联名关系,即“好友购买相同商品”。这种关系可以看作是加强连接的信号,我们将M8~M9命名为“JointMotifs”。最后,我们还应该考虑没有明确社交关系的用户。因此,M10是非封闭的,它定义了没有社会关系但购买了相同商品的用户之间隐含的高阶社会关系。我们将M10命名为“PurchaseMotif”。在这三种模态的约束下,我们可以构建三个包含不同高阶用户关系模式的超图。MHCN框架图(引用自MHCN论文)multi-channelhypergraphconvolution在这篇论文中,作者使用三个通道设置,包括“socialchannel(s)”、“jointchannel(j)”和“purchasechannel§”,来处理三类三角对象,但可以调整通道数量以适应更复杂的情况。每个通道负责编码高阶用户关系模式。因为不同的模式可能对最终的推荐性能表现出不同的重要性,所以直接将整个基本用户嵌入提供给所有渠道是不明智的。为了控制从基本用户嵌入到每个通道的信息流,作者设计了一个带有自门控单元(SGU)的预过滤器,其定义为:超图卷积定义为:在通过𝐿在层传播用户嵌入后,我们将每一层获得的嵌入进行平均,以形成最终的特定于通道的用户表示:为了避免过度平滑问题,然后我们使用注意机制进行选择性聚合以形成综合用户嵌入。对于每个用户𝑢,我们学习一个三元组(𝛼𝑠、𝛼𝑗、𝛼𝑝)来衡量三个特定通道嵌入的不同贡献到最终的推荐性能。注意力函数定义为:综合用户表示定义为:自监督学习增强型MHCN由于利用了高阶关系,MHCN表现出了良好的性能,然而,MHCN的一个缺点是聚合操作可能导致高阶信息的损失Lost,因为不同的通道会在不同的超图上学习不同分布的Embedding。为了解决这个问题并充分继承超图中的丰富信息,我们将自监督学习纳入MHCN的训练中。创建自监督信号对于MHCN的每个通道,我们构建一个邻接矩阵𝑨𝑐捕获高阶连接信息。𝑨𝑐中的每一行表示以行索引表示的用户为中心的相应超图的子图,然后我们可以得出一个层次结构:“用户节点←以用户为中心的子超图←超图”,并从这个结构中创建一个自监督信号。作者的目标引入自监督任务的重点是:综合用户表示应该反映不同超图中用户节点的局部和全局高阶连接模式,可以通过分层、以用户为中心的子超图和超图之间的互信息来最大化用户表示ineachchannelsisusedtoachievethisgoal.ContrastiveLearningDeepGraphInfomax(DGI)是一种通用且流行的方法,用于以自我监督的方式学习图结构数据中的节点表示。我们遵循DGI并使用InfoNCE作为我们的学习目标最大化分层互信息。但我们发现成对排名损失(这也被证明在相互i信息估计)比二元交叉熵损失更适合推荐任务。自监督任务的目标函数定义如下:最后,我们将推荐任务(主要)的目标和最大化分层互信息(辅助)的任务统一起来进行联合学习。总体目标函数定义为:本文的主要贡献总结如下:我们通过在多渠道设置中利用多个高阶用户关系,研究超图??建模和图神经网络在社交推荐中的融合。将自我监督学习纳入超图卷积网络的训练表明,自我监督的辅助任务可以显着改善社交推荐任务。3.SGL论文题目:Self-supervisedGraphLearningforRecommendation论文来源:SIGIR2021论文链接:https://arxiv.org/abs/2010.10783论文代码:https://github.com/wujcan/SGL本文提出了AGraph应用于用户项目二分图推荐系统的自监督学习框架。核心思想是对输入的二分图进行数据增强,作为节点和边的dropout,增强后的图可以看作是原图的子视图;在子视图上使用任何图卷积神经网络,如LightGCN来提取节点的表示,对于同一个节点,多个视图可以形成多种表示;然后利用对比学习的思想构造一个自监督学习任务,即:最大化同一节点不同视图表示之间的差异相似度,从而最小化不同节点表示之间的相似度;最后,将对比学习自监督任务和推荐系统的监督学习任务相结合,形成多任务学习范式。文章的方法很简洁。这种思路与陈丹琪的工作SimCSE类似,都是基于句子表示的比较学习,在实际的图表示学习中值得借鉴。解决当前基于用户-项目二分图表示学习的推荐系统面临的两个核心问题:长尾问题。度数高的节点在表示学习中起主导作用,使得学习度数低的节点,即长尾项变得困难。鲁棒性问题。交互数据包含大量噪音。基于邻域节点聚合的范式会扩大“噪声观察边”的影响,导致最终学习到的表示受到噪声交互数据的极大影响。因此,作者提出了一种图自监督学习方法SGL,以提高基于二分图的推荐的准确性和鲁棒性。SGL的整体系统框架(引用自SGL论文)DataAugmentationonGraphStructure由于以下具体特点,在基于图的推荐中直接在CV和NLP任务中采用数据增强是不可行的。用户和物品的特征是离散的,比如one-hotID这样的分类变量。因此,对图像的增强操作,如随机裁剪、旋转或模糊,是不适用的。更重要的是,与将每个数据实例视为独立的CV和NLP任务不同,交互图中的用户和项目在本质上是相互联系和依赖的。因此,我们需要为基于图的推荐定制新的增强算子。二分图建立在观察到的用户-项目交互的基础上,因此包含了协同过滤信号。具体来说,第一跳邻居节点直接描述了自我用户和项目节点,即用户的历史项目(或项目的交互用户)可以被视为用户(或项目)的预先存在的特征。用户(或物品)的第二跳邻居节点代表相似的用户(或相似的物品)。此外,从用户到物品的高阶路径反映了用户对物品的潜在兴趣。毫无疑问,挖掘图结构中的固有模式有助于表示学习。因此,作者在图结构上设计了三种算子:nodedropout、edgedropout和randomwalk来创建不同的节点视图。该算子可以一致地表示为:其中随机选择s1和s2在图G中独立进行,从而构造两个相关视图Z1(l)和Z2(l)。三个增强运算符详细说明如下:节点丢弃(ND):以概率ρ从图中丢弃每个节点及其连接的边。其中M`,M``∈{0,1}|V|是两个掩码向量,它们应用于节点集V以生成两个子图。因此,这种增强可以从不同的增强视图中识别有影响力的节点,从而使表示学习对结构变化不那么敏感。EdgeDropout(ED):以概率ρ从图中删除边。其中M1,M2∈{0,1}|E|是边集E上的两个掩码向量。只有邻域内的一些连接有助于节点表示。因此,耦合这两个子图的目的是捕获节点局部结构的有用模式,并进一步赋予表示对噪声交互更强的鲁棒性。RandomWalk:以上两个算子生成一个子图,该子图在所有图卷积层之间共享。为了探索更高的性能,作者考虑将不同的子图分配给不同的层。这可以看作是使用随机游走为每个节点构造单独的子图。假设在每一层都选择了边缘丢失(具有不同的比率或随机种子),可以利用边缘掩蔽向量来制定对层敏感的RW(如下图所示):为了简单起见,作者在每个epoch图结构将这些增强应用于,即在新的训练时期开始时,为每个节点生成两个不同的视图(对于RW,为每个层生成两个不同的视图)。请注意,两个独立进程(即s1和s2)的丢失率和掩蔽率相同。我们将不同比例的调整留给未来的工作。值得一提的是,只涉及dropout和masking操作,没有添加模型参数。对比学习将来自同一节点的增强视图视为正例,将来自不同节点的增强视图视为负例。正向辅助监督促进了同一节点不同视图之间预测的一致性,而负向监督加强了不同节点之间的分歧。形式上,仿照SimCLR,采用contrastivelossInfoNCE最大化正例的一致性,最小化负例的一致性:items上的loss构造同上。最终的自监督任务损失如下:学习任务:本文的主要贡献总结如下:探索自监督学习解决方案监督学习范式下基于图的推荐的局限性的潜力;提出了一种与模型无关的框架SGL,以通过用户-项目图的自我监督学习来补充监督推荐任务;从图结构的角度,设计了三个不同方面的数据Extended来构建辅助比较任务。这里给大家提一个讨论题,希望大家积极发表意见,让大家在讨论中受益:除了DHCN、MHCN和SGL,你还知道哪些模型结合了对比学习和推荐系统?监督应用在推荐任务中的损失函数是什么?
