作者 | 对白

出品 | 公众号:对白的算法屋

大家好,我是对白。

今天我们来聊一聊推荐系统中不得不学的Contrastive Learning方法,近年来Contrastive Learning在CV和NLP领域的应用越来越广泛,在推荐系统中当然也不例外。我想大家将对比学习与推荐系统结合主要有以下四个原因:

一、是因为数据的稀疏性。众所周知,在推荐系统中有点击的数据是非常少的,可能系统推荐了十篇文章,用户只点击了一篇文章,因此我们可以通过自监督学习对点击数据进行增强;

二、是因为item的长尾分布。主流商品往往代表了绝大多数用户的需求,而长尾商品往往代表了一小部分用户的个性化需求,若要对用户行为很少的长尾商品进行推荐,也可以通过自监督进行增强;

三、是因为在跨域推荐中若有多个不同的view,可以通过自监督学习融合多个view的信息,而非动态的线性加权,增强网络的表达能力;

四、是因为增加模型的鲁棒性或对抗噪音,可以通过一些例如Mask和Droupout的方法。

那我们今天就一起讨论一下Contrastive Learning在推荐系统中的主流做法和前沿应用。

1.DHCN

论文标题:Self-Supervised Hypergraph Convolutional Networks for Session-based Recommendation

论文方向:会话推荐

论文来源:AAAI2021

论文链接:https://arxiv.org/abs/2012.06852

论文代码:https://github.com/xiaxin1998/DHCN

Session-based recommendation (SBR) 也就是会话推荐主要的任务就是基于目前已有的多个用户物品交互序列,完成 next-item 预测。在这种情况下,用户配置文件不可用,因此从多个用户物品交互序列中提取用户意图嵌入就格外重要。

基于此本文将会话数据建模为超图,提出了一种双通道超图卷积网络DHCN。同时本文为了增强超图建模,创新性地将自监督学习融入到网络训练中,最大化通过 DHCN 中两个通道学习的会话表示之间的互信息,作为改进推荐任务的辅助任务。

超图定义

超图的定义:一条超边 可以连接多个不同的顶点,且对应一个权值 。定义一个包含 个节点和 条超边的超图为 ,可以理解为某个节点涉及哪几条超边,由此可以定义节点的度对角矩阵 (每个节点涉及的超边数)和超边的度对角矩阵 (每条超边连接的节点数)分别为

线图定义

将超图中的每个边(即每个用户的session)看作是一个节点,而任意两个节点之间的边权重看作是这两个用户session的相似度,计算为

构建超图

因为超图定义为超边可以包含多个节点,因此这些节点可以被看作是通过共同的边而互相连接,因此每个用户的session或者超边将构成一个完全子图,且该子图中的边权重都相等(因为共享同一条超边)。而对应的线图则是一个完全图,任意两个节点(session)的边权重说明了这两个用户session的相似程度。

超图卷积

包含多个超图卷积层,用于items-embedding的传播和更新,描述为:涉及同一条超边的两个节点进行消息传递,因此在构建好的超图上就是相邻的两个节点进行传播(因为它们涉及共同的超边,或者共同出现在某个用户的session中):

矩阵表达形式为:

注意上述操作没有涉及序列特征,为此作者引入一个可训练的位置编码矩阵

来体现用户session中items的序列性,将其与item-embedding进行拼接和一个Dense层操作后得到带有序列特征的item-embedding:

其中 为session-embedding,即对每个item-embedding求平均,相当于从用户的浏览记录中获取平均兴趣, 为session中的第 个item的embedding,前半部分是根据平均session和每个item来计算相应item的重要性,进行加权求和后得到能体现出用户兴趣的session-embedding 。相比于直接求平均,加权后得到的能够起到一定程度上的降噪。

预测部分就是常规的训练,计算session-embedding 与每个候选item的相似度,利用 转化为概率,利用交叉熵损失函数进行预测:

自监督学习增强DHCN

超图建模使模型能够实现良好性能。作者认为会话数据的稀疏性可能会阻碍超图建模,这将导致次优推荐性能。受自监督学习在简单图上的成功实践的启发,作者将自监督学习集成到网络中以增强超图建模。利用自监督信号进行学习被视为有利于推荐任务的辅助任务,它分为两个步骤:

创建自监督信号

在DHCN中,通过这两个通道学习两组特定于通道的会话Embedding。由于每个通道编码一个超图,该图只描述由会话诱导的超图的物品级(插入)或会话级(会话间)结构信息,所以两组Embedding对象彼此了解很少,但可以互补。在训练中,两组会话Embedding之间有一个客观映射。简单地说,这两组映射可以成为彼此的基础用于自监督学习,这种一对一的映射被视为标签的增广。如果两个会话Embedding在两个视图中都表示同一个会话,就将这一对标记为 ground-truth,否则将其标记为 negative。

对比学习

通过创建自监督信号,利用互信息最大化原则对两个图得到的表示进行对比,以及对线图卷积得到的embedding使用row-wise and column-wise shuffling后得到负样本,即增大两个角度session-embedding之间的一致性:

最后的损失函数为两部分之和:

总结文本的创新点如下:

  1. 为 SBR 任务提出了一种双通道超图卷积网络 DHCN,通过超图建模,可以捕获项目之间的超配对关系和交叉会话信息。

  2. 首次将自监督学习学习的概念放入到推荐任务的网络训练中,自监督学习可以加强模型的表达能力和推荐任务的完成效果。

2.MHCN

论文标题:Self-Supervised Multi-Channel Hypergraph Convolutional Network for Social Recommendation

论文方向:社交推荐

论文来源:WWW2021

论文链接:https://arxiv.org/abs/2101.06448

论文代码:https://github.com/Coder-Yu/QRec

在推荐系统中,当用户-物品交互数据比较稀疏时,通常使用社交关系来提高推荐质量。大多数现有的社交推荐模型利用成对关系来挖掘潜在的用户偏好。然而,现实生活中用户之间的互动非常复杂,用户关系可能是高阶的。超图提供了一种自然的方法来建模复杂的高阶关系,而它在改善社交推荐方面的潜力还有待开发。

在本文中,作者提出了一个多通道超图卷积网络(MHCN),利用高阶用户关系来增强社交推荐。从技术上讲,网络中的每个通道都通过超图卷积来编码一个超图,该超图描绘了一个常见的高阶用户关系模式。通过聚合多个通道学习到的Embedding,可以得到全面的用户表示,从而生成推荐结果。

然而,聚合操作也可能掩盖不同类型的高阶连接信息的固有特征。为了弥补聚合损失,作者将自监督学习融入超图卷积网络的训练中,以获得层次互信息最大化的连通性信息。

现有的自监督学习(SSL)方法主要用于训练来自人工平衡数据集(如ImageNet)的表示模型。目前还不清楚它们在实际情况下的表现如何,在实际情况下,数据集经常是不平衡的。基于这个问题,作者在训练实例分布从均匀分布到长尾分布的多个数据集上,对自监督对比学习和监督学习方法的性能进行了一系列的研究。作者发现与具有较大性能下降的监督学习方法不同的是,自监督对比学习方法即使在数据集严重不平衡的情况下也能保持稳定的学习性能。

社交推荐系统中常见的高阶用户关系类型(引自MHCN论文)

构建超图

超图,它推广了边的概念,使其连接到两个以上的节点,为建模用户之间复杂的高阶关系提供了一种自然的方法。作者通过统一形成特定三角形关系的节点来构造超图,这些三角关系是一组精心设计的具有底层语义的三角主题的实例,如下图所示:

从左到右为图M1 ~ M10,我们根据其隐含的语义将其分为三组。M1~M7概括了显性社交网络中所有可能的三角关系,并描述了高阶社交连接,比如“有一个共同的朋友”,我们称之为“Social Motifs”。M8~M9表示联合关系,即“朋友购买同一件物品”。这种类型的关系可以看作是加强联系的信号,我们将M8 ~ M9命名为“Joint Motifs”。最后,我们还应该考虑那些没有显性社交关系的用户。因此,M10是非封闭的,它定义了没有社交关系但购买了相同物品的用户之间的隐性高阶社会关系。我们将M10命名为“Purchase Motif”。在这三种模态的约束下,我们可以构造出包含不同高阶用户关系模式的三个超图。


MHCN框架图(引自MHCN论文)

多通道超图卷积

在本文中,作者使用了三种通道设置,包括“社交通道(s)”、“联合通道(j)”和“购买通道§”,以应对三种类型的三角形主题,但通道的数量可以调整,以适应更复杂的情况。每个通道负责编码一种高阶用户关系模式。因为不同的模式可能会对最终的推荐性能表现出不同的重要性,所以直接将整个基本的用户嵌入Embedding提供给所有通道是不明智的。为了控制从基本的用户Embedding到每个通道的信息流,作者设计了一个具有自门控单元(SGU)的预过滤器,其定义为:

超图卷积定义为:

超图卷积可以看作是对超图结构进行“节点-超边-节点”特征变换的两阶段精化。乘法运算 定义从节点传递到超边的消息,然后再乘 是从超边到节点聚合信息。然而,尽管超图卷积有很多好处,但仍存在大量由图诱导的超边(例如,在使用的数据集LastFM中有19,385个社交三角形),这会导致构建矩阵 的高成本。但是,由于作者只利用三角形的主题,作者表明,这个问题可以通过利用矩阵乘法的结合性质以一种灵活和有效的方式解决。

通过降低计算代价(感兴趣的可以阅读原文获悉),我们将变换后的超图卷积定义为:

学习全面的用户表示

在通过

推荐系统中不得不学的对比学习(Contrastive Learning)方法相关推荐

  1. 从对比学习(Contrastive Learning)到对比聚类(Contrastive Clustering)

    从对比学习(Contrastive Learning)到对比聚类(Contrastive Clustering) 作者:凯鲁嘎吉 - 博客园 http://www.cnblogs.com/kailug ...

  2. 对比学习Contrastive Learning

    对比学习是一种常用的自监督学习方法. 核心思想:把正样本距离拉近,正样本与负样本距离拉远.(类似度量学习中的margin, 但是对比学习为正负样本分类,无margin概念) 方式:通过一个正样本,以及 ...

  3. 理解对比表示学习(Contrastive Learning)

    目录 一.前言 二.对比学习 三.主要论文(附代码分析) 1. AMDIM ([Bachman](https://arxiv.org/pdf/1906.00910.pdf) *et al.* 2019 ...

  4. ICCV2021 比MoCo更通用的对比学习范式,中科大MSRA提出对比学习新方法MaskCo

    关注公众号,发现CV技术之美 今日分享 ICCV2021论文『Self-Supervised Visual Representations Learning by Contrastive Mask P ...

  5. CIKM'21 | 谷歌:推荐中的自监督对比学习

    作者 | Chilia 哥伦比亚大学 nlp搜索推荐 整理 | NewBeeNLP 1.对比学习到底是啥 对于最近很火的"对比学习",许多人把它和我们之前经常用的向量化召回混为一谈 ...

  6. CVPR2022:计算机视觉中长尾数据平衡对比学习

    点击下方卡片,关注"自动驾驶之心"公众号 ADAS巨卷干货,即可获取 [前言] 现实中的数据通常存在长尾分布,其中一些类别占据数据集的大部分,而大多数稀有样本包含的数量有限,使用交 ...

  7. 随机生成元素升序向量_推荐系统中用户向量的表示学习

    随着深度学习在推荐系统中的应用,embedding成为绕不开的话题.无论是召回还是排序阶段,均应用到embedding技术.目前已经有很多文章在讨论item的embedding如何生成,本文希望讨论u ...

  8. 理解对比学习(contrasive learning)

    1.什么是对比学习? 对比学习,顾名思义就是在训练中和某些东西进行对比从而学习,在自编码器中,输出与自己进行对比,从而得到一个中间量latent code,我认为这也是一种对比学习. 2.对比学习框架 ...

  9. 机器学习中的端到端学习(End-to-End Learning)

    传统机器学习需要将一个任务的输入和输出之间人为地切割成很多子模块,或者多个阶段,每个子模块(阶段)分开学习.比如一个自然语言处理任务(NLP),一般需要分词.词性标注.句法分析.语义分析.语义推理等步 ...

最新文章

  1. 发布国内首个无服务器容器服务,运维效率从未如此高效
  2. 老域名优化出新招,三点技巧来相助
  3. 最近在学OpenGL和英语
  4. 一个封锁操作被对 wsacancelblockingcall 的调用中断_操作系统概论
  5. 在一测试环境下的RAC出错解决
  6. 从入门到入土:MySQL完整学习指南,包教包会!
  7. Samba服务器安装测试
  8. JPA getValidationMode()
  9. 王者-甄别同一板块强弱股的方法【真假美猴王】
  10. 图神经网络学习笔记(1)——图信号与图傅里叶变换
  11. 黑客帝国屏幕保护源码
  12. 给菜鸟看的Android应用开发全流程
  13. spoon在linux上运行,kettle在linux上运行
  14. python监控网页_【小白教程】Python3监控网页
  15. Lena,Pepper等图像,图像处理必备资料。
  16. 三种坐标系经纬度转化小工具
  17. cadence SPB17.4 - orcad - 层次原理图
  18. 嵌入式系统开发10——STM32串口通信
  19. 树莓派有些WIFI连接不上
  20. Floyd AcWing 854. Floyd求最短路

热门文章

  1. windows集成身份验证
  2. JAVA学习笔记—JAVA SE(四)JAVA核心库类(下)
  3. 向前努力,才能不堕落
  4. windows下搭建PHP+MSSQL环境
  5. 研发新员工(应届生)培训计划——初稿
  6. 示波器的校准及李萨如图形
  7. WEB前端有必要学会docker吗?0基础-45分钟带你学会(包含视频笔记案例源代码)
  8. 2015年IT业薪酬展望:开发、技术支持、项目经理……
  9. 前端 CSS:锚伪类选择器:hover,:active,:visited;等用法总结
  10. 历届国际足联世界足球先生