【论文解读】“推荐系统”加上“图神经网络”
点击上方,选择星标或置顶,每天给你送干货!
阅读大概需要5分钟
跟随小博主,每天进步一丢丢
作者:Plato
来源:知乎(https://zhuanlan.zhihu.com/p/114798371)
本文仅供交流,如有侵权,请联系删除。
SIGIR'19的一篇论文Neural Graph Collaborative Filtering(NGCF)介绍了用图神经网络(GNN)来增强协同过滤推荐系统的方法。今天我们来聊一聊下面几个话题:
什么是协同过滤?如何用协同过滤做推荐?
NGCF是如何构图的?NGCF在基础的GNN上有哪些改动?如何用NGCF做推荐?
协同过滤
协同过滤(CF)是一种常用的推荐系统做法。协同,指收集广大用户的口味;过滤,指过滤出『我』可能喜欢的物品。这个方法通过收集用户的兴趣和口味,给用户推荐口味相近的人喜欢的物品。
在构建推荐系统的过程中,我们收集了很多用户与物品的交互历史,比如豆瓣电影中用户对电影的打分;淘宝中用户对物品的浏览、购买等。这些交互历史能够表示成一个用户 、物品 的交互矩阵 。
协同过滤模型需要 1. 用向量表示用户的口味 、物品的特性 ;2. 通过用户的口味、物品的特性去近似交互历史 ;3. 给用户 推荐交互得分最高的物品 。
矩阵分解(MF)是一种基础的协同过滤模型。
MF视频[1]截图,有编辑
MF大致过程如下(另可参考视频[1]):
将用户看成矩阵 ,物品看做矩阵 , 为embedding长度
使用矩阵的乘积 去近似交互矩阵 ,使用梯度下降法最小化 ,求解
MF的输入单一,不能使用用户与物品的特征作为输入;同时MF对稀疏的交互矩阵效果较差。NGCF作者认为使用GNN能同时解决这两个问题。1. GNN使用节点特征作为初始embedding,可以在这里加入用户特征、物品特征;2. GNN能够引入『高阶交互历史信息』。
例如『你浏览的这个电影,喜欢它的用户也喜欢以下电影』这种『用户-物品-用户-物品』三阶信息,就是一种『高阶交互历史信息』。这种信息在推荐系统中无疑是非常重要的。
那么作者在论文中如何将GNN加入协同过滤系统的呢?首先,要将历史交互构图;然后,在这个交互图上,使用GNN来嵌入『高阶交互历史信息』,获得节点(用户、物品)的embedding;最后,通过embedding来近似历史交互矩阵 。过程如下:
使用交互历史构图;
在图上,使用GNN学习embedding ;
和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
交流学习,进群备注:昵称-学校(公司)-方向,进入DL&NLP交流群。
方向有很多:机器学习、深度学习,python,情感分析、意见挖掘、句法分析、机器翻译、人机对话、知识图谱、语音识别等。
【论文解读】“推荐系统”加上“图神经网络”相关推荐
- 为什么正则化可以起到对模型容量进行控制_论文解读 | 基于正则化图神经网络的脑电情绪识别...
©PaperWeekly 原创 · 作者|张玮玮 学校|东北大学硕士生 研究方向|情绪识别 引言论文动机 现有的基于脑电图的情绪识别方法大多不能很好地解决以下三个方面的问题:1. 脑电图信号的拓扑结构 ...
- 论文解读 | 基于正则化图神经网络的脑电情绪识别
©PaperWeekly 原创 · 作者|张玮玮 学校|东北大学硕士生 研究方向|情绪识别 引言 论文动机 现有的基于脑电图的情绪识别方法大多不能很好地解决以下三个方面的问题: 1. 脑电图信号的拓 ...
- 顶会CIKM‘21论文解读:基于图神经网络的人类行为轨迹恢复模型
摘要:本文是由华为云数据库创新Lab联合电子科技大学数据与智能实验室发表在顶会CIKM'21的文章,该文章提出首个克服人类移动轨迹数据中普遍存在的多层次周期性.周期偏移现象以及数据稀疏问题的轨迹恢复模 ...
- 【论文解读】KDD20 | 图神经网络在生物医药领域的应用
论文解读者:北邮 GAMMA Lab 硕士生 楚贯一 1 引言 最近,越来越多的研究开始将深度学习方法应用到图数据领域.图神经网络在数据具有明确关系的结构场景,如物理系统,分子结构和知识图谱中有着广 ...
- NeurIPS 2021论文接收结果统计:Oral级论文不足3%,图神经网络火到进前三
丰色 发自 凹非寺 量子位 报道 | 公众号 QbitAI NeurIPS 2021已放榜. 今年大会共收到了9122篇有效投稿,最终2344篇论文被接收,接收率为26%,达到了近几年来最高水平. 这 ...
- ICLR 2020 开源论文 | 隐空间的图神经网络:Geom-GCN
作者丨纪厚业 学校丨北京邮电大学博士生 研究方向丨异质图神经网络及其应用 引言 图神经网络(Graph Neural Network)已经成为深度学习领域最热⻔的方向之一.作为经典的 Message- ...
- ###haohaohao######专访 DLP-KDD 最佳论文作者,探讨图神经网络的特点、发展与应用
InfoQ 的读者大家好,我是 KDD Workshop DLP-KDD 2020 的联合主席王喆,在 DLP-KDD 2020 征稿之际,我们专访了上一届 Workshop Best Paper A ...
- 【论文解读】基于图卷积的价格感知推荐
Paper:Price-aware Recommendation with Graph Convolutional Networks Link:https://arxiv.org/pdf/2003.0 ...
- 【论文分享】通过图神经网络明确捕捉实体提及的关系,用于特定领域的命名实体识别
[ACL 2021] Explicitly Capturing Relations between Entity Mentions via Graph Neural Networks for Doma ...
- 论文阅读:基于图神经网络的分类法自动更新模型
Evolving Taxonomy Based on Graph Neural Networks 摘要 分类法是人类对领域知识的理解和组织.在这个知识爆炸的世界中,如何自动进化分类法变得至关重要.在本 ...
最新文章
- 新鲜新奇事物_对各样新奇事物都有兴趣去了解的星座
- Oracle-分析函数之排序后顺序号row_number()
- JAVA-单例模式的几种实现方式
- ARKit从入门到精通(2)-ARKit工作原理及流程介绍
- 【Android】SlidingTabs
- Java向前引用容易出错的地方
- 6.1-6.4 压缩打包介绍,压缩工具gzip,bzip2, xz
- 操作系统linux配置php,操作系统--Linux的详细介绍
- 北京黄记煌餐饮管理有限责任公司签约Ebistrategy亦策软件
- pl/sql中添加 shortcuts插件
- item不可见 recycleview_你不知道的 TypeScript 高级技巧
- axure实现复选框全选_表格设置一键全选按钮,这样的打√方式,只需要三步搞定...
- Ubuntu下对executable (application/x-executable)文件创建快捷方式
- Matlab2016及以上版本设置VS编译器
- 【3dmax千千问】初学3dmax插件神器第16课|VRAY学习教程|疯狂模渲大师怎么使用VRAY渲染器?食住玩3dmax入门到精通进阶教程
- 内网/外网介绍以及两者比较
- Illegal character in opaque part at index
- 过拟合与欠拟合的生动理解
- Splendor宝石游戏的策略分析
- Python3.7+Robot Framework 打开ride.py无界面
热门文章
- Linux命令之shutdown
- JavaWeb——Servlet开发1
- java的几种对象(PO,VO,DAO,BO,POJO)解释(转)
- 伟大的程序员是怎样炼成的?
- OCS UCCA 开发笔记(Unified Communications Client API)
- 每日一课(12/75)操作数的寻址方式
- 跟着 Microsoft 跑!
- java day35【Bootstrap】
- vue主动刷新页面及列表数据删除后的刷新方法
- spring boot RESTFul API拦截 以及Filter和interceptor 、Aspect区别