“推荐系统”加上“图神经网络”

2020 年 3 月 23 日 机器学习与推荐算法


来自 | 知乎

地址 | https://zhuanlan.zhihu.com/p/114798371

作者 | Plato


SIGIR'19的一篇论文 Neural Graph Collaborative Filtering(NGCF)介绍了用图神经网络(GNN)来增强协同过滤推荐系统的方法。今天我们来聊一聊下面几个话题:
  • 什么是协同过滤?如何用协同过滤做推荐?

  • NGCF是如何构图的?NGCF在基础的GNN上有哪些改动?如何用NGCF做推荐?

协同过滤

协同过滤(CF)是一种常用的推荐系统做法。协同,指收集广大用户的口味;过滤,指过滤出『我』可能喜欢的物品。这个方法通过收集用户的兴趣和口味,给用户推荐口味相近的人喜欢的物品。

在构建推荐系统的过程中,我们收集了很多用户与物品的交互历史,比如豆瓣电影中用户对电影的打分;淘宝中用户对物品的浏览、购买等。这些交互历史能够表示成一个用户  、物品  的交互矩阵  。

协同过滤模型需要 1. 用向量表示用户的口味  、物品的特性  ;2. 通过用户的口味、物品的特性去近似交互历史  ;3. 给用户  推荐交互得分最高的物品  。

矩阵分解(MF)是一种基础的协同过滤模型。

MF视频[1]截图,有编辑

MF大致过程如下(另可参考视频[1]):

  1. 将用户看成矩阵  ,物品看做矩阵  ,  为embedding长度

  2. 使用矩阵的乘积  去近似交互矩阵  ,使用梯度下降法最小化  ,求解 

MF的输入单一,不能使用用户与物品的特征作为输入;同时MF对稀疏的交互矩阵效果较差。NGCF作者认为使用GNN能同时解决这两个问题。

  1. GNN使用节点特征作为初始embedding,可以在这里加入用户特征、物品特征;

  2. GNN能够引入『高阶交互历史信息』。

例如『你浏览的这个电影,喜欢它的用户也喜欢以下电影』这种『用户-物品-用户-物品』三阶信息,就是一种『高阶交互历史信息』。这种信息在推荐系统中无疑是非常重要的。

那么作者在论文中如何将GNN加入协同过滤系统的呢?首先,要将历史交互构图;然后,在这个交互图上,使用GNN来嵌入『高阶交互历史信息』,获得节点(用户、物品)的embedding;最后,通过embedding来近似历史交互矩阵  。过程如下:

  1. 使用交互历史构图;

  2. 在图上,使用GNN学习embedding  ;

  3. 和MF类似,使用矩阵的乘积  去近似交互矩阵

NGCF如何构图?

作者希望使用GNN对高阶交互历史进行建模,就首先要对交互历史进行构图。左图是由用户、物品的交互历史构成的二部图;右图是将左图围绕  展开,获得该点的『高阶历史信息』。

GNN如何获得节点embedding?

在GNN中,节点的embedding初始化成节点的特征,然后通过聚合邻居及自己上一层的 ,获得新一层的  。

在NGCF中,第k-1层的节点信息是这样聚合到第k层的:

GNCF的整体网络架构

  • 将每个用户  所有layer的embedding连接起来作为用户最终embedding 

  • 将每个物品  所有layer的embedding连接起来作为物品最终embedding 

  • 将点积 作为最后的模型预测值

  • 使用了推荐系统常用的pairwise BPR loss,能对正样本和负样本加上不同的权重,使正样本能特别体现用户的口味,负样本能少量体现用户的口味

学到的embedding效果如何?

在用t-SNE降维后,下图是对NGCF与MF的embedding可视化。星星是一个用户,圆圈是一个物品。可以看到NGCF的clusters彼此之间更加分离,即同一个用户交互过的物品,它们的embeddings更加相似。


作者还在Gowalla、Yelp2018、Amazon-Book三个数据集上对比了推荐效果,NGCF均为state of the art。


其他:NGCF作者的论文[2]与实现[3]

参考

  1. ^How does Netflix recommend movies? Matrix Factorization https://www.youtube.com/watch?v=ZspR5PZemcs

  2. ^https://arxiv.org/abs/1905.08108

  3. ^https://github.com/xiangwang1223/neural_graph_collaborative_filtering


推荐阅读
[0].   图神经网络(GNN)综述

[1]. 推荐系统之矩阵分解家族

[2]. 最新推荐系统论文速递

[3]. 智能推荐算法在直播场景中的应用


登录查看更多
12

相关内容

协同过滤(英语:Collaborative Filtering),简单来说是利用某兴趣相投、拥有共同经验之群体的喜好来推荐用户感兴趣的信息,个人透过合作的机制给予信息相当程度的回应(如评分)并记录下来以达到过滤的目的进而帮助别人筛选信息,回应不一定局限于特别感兴趣的,特别不感兴趣信息的纪录也相当重要。协同过滤又可分为评比(rating)或者群体过滤(social filtering)。其后成为电子商务当中很重要的一环,即根据某顾客以往的购买行为以及从具有相似购买行为的顾客群的购买行为去推荐这个顾客其“可能喜欢的品项”,也就是借由社群的喜好提供个人化的信息、商品等的推荐服务。除了推荐之外,近年来也发展出数学运算让系统自动计算喜好的强弱进而去芜存菁使得过滤的内容更有依据,也许不是百分之百完全准确,但由于加入了强弱的评比让这个概念的应用更为广泛,除了电子商务之外尚有信息检索领域、网络个人影音柜、个人书架等的应用等。
近期必读的6篇顶会WWW2020【推荐系统】相关论文-Part3
专知会员服务
57+阅读 · 2020年4月14日
近期必读的5篇顶会WWW2020【推荐系统】相关论文-Part2
专知会员服务
68+阅读 · 2020年4月7日
【图神经网络(GNN)结构化数据分析】
专知会员服务
114+阅读 · 2020年3月22日
近期必读的6篇AI顶会WWW2020【推荐系统】相关论文
专知会员服务
56+阅读 · 2020年2月25日
六篇 CIKM 2019 必读的【图神经网络(GNN)】长文论文
专知会员服务
37+阅读 · 2019年11月3日
推荐系统之矩阵分解家族
图与推荐
13+阅读 · 2020年3月28日
知识图注意力网络 KGAT
图与推荐
51+阅读 · 2020年3月16日
推荐系统(一):推荐系统基础
菜鸟的机器学习
25+阅读 · 2019年9月2日
推荐系统中的矩阵分解技术
AINLP
9+阅读 · 2018年12月24日
推荐系统概述
Python开发者
11+阅读 · 2018年9月27日
2018年推荐系统入门指南
论智
15+阅读 · 2018年7月14日
【推荐系统】详解基于内容的推荐算法
产业智能官
23+阅读 · 2018年1月11日
Arxiv
19+阅读 · 2019年11月23日
Arxiv
8+阅读 · 2019年5月20日
Arxiv
3+阅读 · 2019年3月1日
VIP会员
相关资讯
推荐系统之矩阵分解家族
图与推荐
13+阅读 · 2020年3月28日
知识图注意力网络 KGAT
图与推荐
51+阅读 · 2020年3月16日
推荐系统(一):推荐系统基础
菜鸟的机器学习
25+阅读 · 2019年9月2日
推荐系统中的矩阵分解技术
AINLP
9+阅读 · 2018年12月24日
推荐系统概述
Python开发者
11+阅读 · 2018年9月27日
2018年推荐系统入门指南
论智
15+阅读 · 2018年7月14日
【推荐系统】详解基于内容的推荐算法
产业智能官
23+阅读 · 2018年1月11日
Top
微信扫码咨询专知VIP会员