MixGCF: An Improved Training Method for Graph Neural Network-based Recommender Systems
https://keg.cs.tsinghua.edu.cn/jietang/publications/KDD21-Huang-et-al-MixGCF.pdf

1. 背景

GNN在协同过滤相关方法中达到了最优的效果,从隐式反馈中负采样是协同过滤中需要面临的一大难题。当前在基于图的协同过滤方法中,负采样方法探索的还比较少。本文提出了即插即用的MixGCF负采样方法。

  • 本文不是直接从原始样本中进行负采样,而是通过生成难负样本(hard negative samples)来进行负采样。

  • 该方法主要由两部分组成,分别为positive mixing和hop mixing

2. 方法

如图所示为MixGCF的总体概览,对positive mixing和hop mixing的流程进行可视化,具体流程我们后面介绍。

  • positive mixing通过插值的方法向负样本中添加正样本的信息,从而得到难负样本

  • hop mixing通过池化的方式将已得到的难负样本进行结合,从而生成虚假但是信息丰富的负样本。

2.1 Positive Mixing

难样本挖掘其实在图像等领域早就有了,这里的难负样本就是通过挖掘和正样本相近似的负样本用于训练,从而使得正负样本之间的边界更加分明。本文的positive mixing就是通过在负样本中加入正样本的信息,从而使得生成的新的负样本更靠近正样本,成为难负样本。生成难负样本的方式作者借鉴了mixup方法,公式如下,其中表示第跳的正样本embedding,这里的“跳(hop)”可以理解为GNN的第层。表示负样本的embedding,表示embedding的融合系数,从均匀分布中采样得到。

2.2 Hop Mixing

通过positive mixing可以得到候选集合,即对每一层GNN得到的embedding,都可以生成一个难负样本的候选embedding。而hop mixing的作用就是聚合。通过图中的池化操作对不同层的候选embedding进行聚合,公式如下,其中表示最终生成的难负样本的embedding,可以发现pooling中的embedding来自不同的层,通过采样得到每一层的一个候选embedding,这些embedding可以来自同一个样本,也可以不是。然后对其进行池化。其中具体可以采用sum-based pool,concat-based pool等。

2.2.1 采样方式

本文采用上式进行采样,采样后得到每一层的embedding,然后进行上述的池化。其中函数计算第层的embedding和user的embedding的相似度,返回和user最相似的item的embedding。然后将该embedding和当前层中所有embedding 做内积,选取得分最高的embedding作为当前层的embedding。

2.3 损失函数

本文采用BPR损失来衡量正负样本对之间的关系,其中分别表示用户embedding,生成的难负样本embedding和正样本的embedding。

3. 实验结果

在开头也说了,本文所提的是一种即插即用的采样方法,因此实验中和不同的采样方法进行了对比,并且将采样方法和不同的基于图的模型进行结合,然后实验。可以发现结果都有明显的提升。

4. 总结

本文所采用的的思想,一方面采用mixup,用插值的方式得到难负样本,这类方法其实在图像相关的方法中很常见,不过将其应用于图相关的协同过滤方法可能还是第一次。另一方面,利用池化将不同层的embedding进行结合,然后得到新的embedding。应用上的创新,将其他领域的知识迁移到了推荐领域。

END -

一文看懂!百度对话系统PLATO家族

2021-11-08

自然语言处理「迷惑行为大赏」

2021-11-07

最新综述!NLP中的Transformer预训练模型

2021-11-06

SOTA太难了?试试Dropout

2021-11-05

KDD'21 | FaceBook :基于图的负采样方法相关推荐

  1. SIGIR‘21|SGL基于图自监督学习的推荐系统

    本篇文章主要介绍王翔.何向南老师团队在SIGIR2021上发表的文章SGL,Self-supervised Graph Learning for Recommendation[1].这篇文章提出了一种 ...

  2. 上百篇论文概览『负采样方法』的前世今生

    Efficient and Effective: 百篇论文概览负采样方法的前世今生 © 作者|徐澜玲 研究方向|推荐系统 引言:负采样方法最初是被用于加速 Skip-Gram 模型的训练,后来被广泛应 ...

  3. 负样本为王,百篇论文概览负采样方法的前世今生

    文|徐澜玲 源|RUC AI Box 目录 1. 研究背景 1.1 什么是负采样? 1.2 为什么需要负采样? 1.3 为什么需要高质量的负采样? 2. 负采样方法分类梳理 2.1 静态负采样 2.2 ...

  4. KDD'21 | 揭秘Facebook升级版语义搜索技术

    上一篇分享了KDD'21 | 淘宝搜索中语义向量检索技术Que2Search: Fast and Accurate Query and Document Understanding for Searc ...

  5. (21) 出行需求预测新视角---基于图卷积神经网络GCN的出租车OD需求预测

    交通预见未来(21): 出行需求预测新视角---基于图卷积神经网络GCN的出租车OD需求预测 1.文章信息 <Origin-Destination Matrix Prediction via G ...

  6. 顶会CIKM‘21论文解读:基于图神经网络的人类行为轨迹恢复模型

    摘要:本文是由华为云数据库创新Lab联合电子科技大学数据与智能实验室发表在顶会CIKM'21的文章,该文章提出首个克服人类移动轨迹数据中普遍存在的多层次周期性.周期偏移现象以及数据稀疏问题的轨迹恢复模 ...

  7. 基于图嵌入的兵棋联合作战态势实体知识表示学习方法

    基于图嵌入的兵棋联合作战态势实体知识表示学习方法 人工智能技术与咨询 来源:<指挥控制与仿真>,作者王保魁等 摘 要:为将基于离散符号的兵棋联合作战态势实体知识表示为机器更加容易学习.处理 ...

  8. 阿尔伯塔大学博士毕业论文:基于图结构的自然语言处理

    本文经机器之心(微信公众号:almosthuman2014)授权转载,禁止二次转载 机器之心整理 自然语言处理(Natural Language Processing)是人工智能的核心问题之一,旨在让 ...

  9. MILA研究院唐建:基于图神经网络的关系推理(附视频)

    2020 北京智源大会 本文属于2020北京智源大会嘉宾演讲的整理报道系列.北京智源大会是北京智源人工智能研究院主办的年度国际性人工智能高端学术交流活动,以国际性.权威性.专业性和前瞻性的" ...

最新文章

  1. 盘点丨机器学习做不到14件事,你知道吗?
  2. Py之matplotlibseaborn :matplotlibseaborn绘图的高级进阶之高级图可视化(基础图(直方图等),箱线图、密度图、小提琴图等)简介、案例应用之详细攻略
  3. 网上书店例子(JSP和JavaBean)
  4. linux部署项目文档,Linux上部署综合项目专业资料.doc
  5. 9 个使用前必须再三小心的 Linux 命令
  6. 5.1.2全景声音箱摆位_全景声音响系统音箱应该如何摆位(5.1.2、5.1.4篇)
  7. VS2008 vs2010中JQUERY智能提醒
  8. [转]Java5泛型的用法,T.class的获取和为擦拭法站台
  9. python原理_强化学习:原理与Python实现
  10. HCIE Security 防火墙多出口选路 备考笔记(幕布)
  11. 大量字段表单在PHP便捷处理分享
  12. 截取一段字符串中,两个指定字符串中间的字符串
  13. Spring boot 配置方法
  14. GoF、J2EE 设计模式
  15. 2020千月最新影视源码 对接苹果影视app小白零基础搭建视频教学可赚钱影视APP
  16. 利用Python中的requests+wget批量下载微信页面上的音频
  17. openerp mysql_OpenERP雇员(员工)表与用户表关联字段解析
  18. webpack自定义loader
  19. linkerd mysql_《Linkerd官方文档》在本地运行Linkerd
  20. 原来手机还能当做扫描仪?安卓苹果都可以,纸质稿轻松电子化

热门文章

  1. SAP License:BWBCS学习笔记
  2. 赛锐信息:SAP设计ERP主路线
  3. Building a Console Application on Windows Mobile
  4. 用SQL语句实现:当A列大于B列时选择A列否则选择B列,当B列大于C列时选择B列否则选择C列。...
  5. 中国象棋口诀及要领精髓
  6. Graham Scan凸包算法
  7. 记录自己的gitlab搭建之旅
  8. poj1091:跳蚤【容斥原理】
  9. [OI学习笔记]最小生成树之Prim算法
  10. Python基础第二十天:线程