知识图谱论文阅读(二十一)【SIGIR2019】NGCF: Neural Graph Collaborative Filtering

在这里插入图片描述
题目:Neural Graph Collaborative Filtering
代码: https://github.com/xiangwang1223/neural_graph_collaborative_filtering

本文参考了博文

想法

(1)其实是很有缺点,在消息传播中,只是使用了邻居与目标的点击加一个矩阵,并没有考虑权重的问题!
(2)但是在传播中的衰减函数还是值的借鉴的!

创新

Propagation Rule in Matrix Form

摘要

难点
原有的基于推荐系统的方法(早期是矩阵分解,现在是深度学习)都是根据ID和属性等存在的特征来获得一个用户或者是item的表示,我们认为现在方法的缺点就是没有考虑collaborative signal,这是潜伏在用户-物品交互中,没有编码的嵌入过程。

我们
提出了一个新的推荐框架Neural Graph Collaborative Filtering (NGCF) ,它可以在图结构中学习嵌入表示,让模型可以表达高维特征,显示地将协同过滤信号放入到嵌入过程中

Introduction

难点详解:
虽然直观上把用户-物品交互整合到嵌入功能中很有用,但做好这一点并非易事。特别是,在实际应用中,交互的规模很容易达到数百万甚至更大,这使得提取所需的协作信号变得困难。

Running Example.

上面的目的是给用户u1u_1u1推荐商品。 左图是将user-item的interacttion标记为双圆。 右边则是将交互图改为了tree结构! high-order连通性表示从路径长度大于1的任何节点到达u1u_1u1的路径(是从下往上的)。这种高阶连接包含了携带协作信号的丰富语义。 比如:u1←i2←u2u_1\leftarrow i_2 \leftarrow u_2u1i2u2 表明了用户2和用户1的相似性; u1←i2←u2←i4u_1\leftarrow i_2 \leftarrow u_2 \leftarrow i_4u1i2u2i4 表明了用户1可能会喜欢item 4,因为两者相似。

Present Work.
不是将交互图作为难以实现的图,而是设计一种在图上递归的传播嵌入的网络,这可以被看做在嵌入空间中创建信息流。 具体而言,我们设计了一种embedding propagation 层,该层可以通过aggregating其交互的items来增强用户或者item的嵌入。 u1←i2←u2u_1\leftarrow i_2 \leftarrow u_2u1i2u2需要两个层, u1←i2←u2←i4u_1\leftarrow i_2 \leftarrow u_2 \leftarrow i_4u1i2u2i4需要三个层,并且信息流的长度决定了i5i_5i5i4i_4i4的推荐优先度。

最近,HOP-rec也加入了高阶连通性,但是它只是用来丰富训练数据集,而且它本质上还是MF,只是优化了损失函数,这个损失是用高阶连接增强的。

而我们则是将高阶连通性集成到预训练模型中。

  • 我们强调在基于模型的CF方法的嵌入函数中明确利用协作信号的关键重要性。
  • 我们提出了一种新的基于图神经网络的推荐框架NGCF,该框架通过嵌入传播将协作信号以高阶连通性的形式显式编码。

2 METHODOLOGY

在这里插入图片描述

三个部分: (1)嵌入层(2)多层嵌入传播层(3)预测层

2.1 Embedding Layer

我们描述一个user u或者是 item i用一个嵌入向量eu∈Rde_u \in \mathbb{R}^deuRdei∈Rde_i \in \mathbb{R}^deiRd),这可以看做是建立一个参数矩阵作为嵌入查找表:
在这里插入图片描述
传统的推荐模块比如MF和神经协同过滤中,这些ID嵌入被直接喂入了交互层来实现预测分数。 相反,我们的NGCF架构中,我们会refine这个Embedding通过将他们在user-item 交互图上传播。

2.2 Embedding Propagation Layers

我们首先说明单层传播的设计,然后将其推广到多个连续层。

2.2.1First-order Propagation

Message Construction

user-item pair(u, i),我们定义从i到u的信息为:
在这里插入图片描述
其中mu←im_{u\leftarrow i}mui是信息嵌入(要传播的信息),f(⋅)f(·)f()是信息嵌入函数,它使用一个协同因素puip_{ui}pui来控制在每个边(u,i)(u,i)(u,i)上传播的衰减因子。

f(⋅)f(·)f()被定义为:
在这里插入图片描述

其中W1,W2∈Rd′×dW_1,W_2 \in \mathbb{R} ^{d'\times d}W1,W2Rd×d是可以训练的权重矩阵;其中d′d'd是维度;
NuN_uNuNiN_iNi是用户u和item i的一阶邻居节点。
1/(∣Nu∣∣Ni∣)1/\sqrt{(|N_u||N_i|)}1/(NuNi)就是系数是拉普拉斯标准化,反映了历史项目对用户偏好的贡献程度。从消息传递的角度来看,可以解释为折扣因子,因为所传播的消息应该随着路径长度而衰减。就是衰减因子puip_{ui}pui

与传统的图卷积不同只考虑eie_iei的贡献,我们额外的encode了eie_ieieue_ueu的交互消息。 通过ei⊙eue_i \odot e_ueieu实现。 例如,从相似的项传递更多的消息。

Message Aggregation
在此阶段,我们整合从 u 的邻域传播的消息,以改进 u 的表示:
在这里插入图片描述
其中eu(1)e_u^{(1)}eu(1)是用户u在一阶嵌入传播层获得的表示。
除了从邻居NuN_uNu传播的消息外,还考虑了u的自连接:mu←u=W1eum_{u \leftarrow u} = W_1e_umuu=W1eu ,保留了原始特征的信息.
类似地,我们可以通过从其连接的用户传播信息来获得项目 i 的表示形式 ei(1)e^{(1)}_iei(1)

2.2.2 high-order propagetion

第二层用到的还是与该用户有交集的物品的集合,但是第二层用到的物品的表示(item embedding)和第一层用到的已经不一样了,注意图示中表示的上标 l

通过堆叠lll嵌入传播层,用户(和item)能够接收从其 lll-hop 邻居传播的消息。在第 lll 步中,用户 u 的表示递归式为:

在这里插入图片描述
Propagation Rule in Matrix Form :
为了提供嵌入传播的整体视图,方便批量实现,提供了分层传播规则的矩阵形式:
在这里插入图片描述

E(l)∈R(N+M)×dl\mathbf{E}^{(l)} \in \mathbb{R}^{(N+M) \times d_{l}}E(l)R(N+M)×dl是user和item经过lll步嵌入传播后得到的表示;
I表示了一个单位矩阵;
L是user-item图的拉普拉斯矩阵。

在这里插入图片描述
R∈RN+M\mathrm{R} \in R^{N+M}RRN+M是user-item交互矩阵,
并且000是all-zero 矩阵;
A是邻接矩阵,D为对角次数矩阵,其中Dtt=∣Nt∣D_{tt} = \left | \mathcal{N}_t \right |Dtt=Nt
因此,非零的非对角项Lui=1/∣Nu∥Ni∣\mathcal{L}_{u i}=1 / \sqrt{\left|\mathcal{N}_{u} \| \mathcal{N}_{i}\right|}Lui=1/NuNi,这和公式(3)中的puip_{ui}pui是相等的。

2.3 Model Prediction

由于在不同层中获得的表示强调通过不同连接传递的消息,所以它们在反映用户偏好方面有不同的贡献。
因此,将它们串联起来,构成用户的最终嵌入;对 item 也做同样的操作。
在这里插入图片描述
其中||为串联操作。除了连接,其他聚合器也可以应用,如加权平均、最大池、LSTM。使用串联在于它的简单性,不需要学习额外的参数,而且已经被非常有效地证明了。
最后,我们进行内积来估计用户对目标物品的偏好:
在这里插入图片描述

2.4 Optimization

optimize the pairwise BPR loss
它考虑观察到的和未观察到的用户-项目交互之间的相对顺序。具体地说,BPR 假设用户引用的已观察到的交互作用应该比未观察到的交互作用具有更高的预测值。目标函数如下:
在这里插入图片描述

2.4.1Model Size

它只引入了很少的参数大小,两个dl×dl−1d_l \times d_{l-1}dl×dl1大小的权重矩阵。
比起MF(最简洁的基于推荐模型的嵌入),我们的NGCF仅仅用了多了2Ldldl−12Ld_ld_{l-1}2Ldldl1的参数。这种模型参数的额外成本几乎可以忽略不计。LLL是一个小于5的数,dld_ldl是嵌入大小。

2.4.2 Message and Node Dropout

为了防止过拟合,我们采用了两种方法: Message Dropout和Node Dropout。
其中 Message Dropout表示以一定概率的删除式子(6)中传播的信息
我们还执行node dropout,随机阻塞某个特定节点,丢弃其所有传出消息

注意,dropout只在训练中使用,必须在测试中禁用。Message Dropout是面对的users和items的交互的丢弃; 而Node Dropout则是致力于减少特殊的items和users。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/476101.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

[推荐]VMware Workstation 6.5虚拟机(汉化补丁+注册机+原版安装文件)

VMware虚拟机6.5 新版虚拟机过了近一年的开发,VMware Workstation 6.5终于正式发布了。 这个增强版的Vmware Workstation 6.5不仅将3D加速带到了虚拟机平台,而且新增的Unity模式更是改变了虚拟机应用的模式。 VMware Workstation 6.5新特性有&#xff1a…

bootstrap获取弹框数据_Bootstrap模态弹出框的实例教程

前面的话在 Bootstrap 框架中把模态弹出框统一称为 Modal。这种弹出框效果在大多数 Web 网站的交互中都可见。比如点击一个按钮弹出一个框,弹出的框可能是一段文件描述,也可能带有按钮操作,也有可能弹出的是一张图片。本文将详细介绍Bootstra…

知识图谱论文阅读(二十三)【SIGIR2020】Multi-behavior Recommendation with Graph Convolutional Networks

题目: Multi-behavior Recommendation with Graph Convolutional Networks 论文地址: 论文代码: 想法 将相同行为的交互方式进行了聚合来计算user Embedding和item Embedding 创新 模型要做的事情就是user-item传播层学习行为影响力度&am…

LeetCode 1200. 最小绝对差

1. 题目 给你个整数数组 arr,其中每个元素都 不相同。 请你找到所有具有最小绝对差的元素对,并且按升序的顺序返回。 示例 1: 输入:arr [4,2,1,3] 输出:[[1,2],[2,3],[3,4]]示例 2: 输入:ar…

在mojoportal项目中发邮件使用的是dotnetopenmail

[翻译]开源发送邮件组件dotnetopenmail使用介绍 在mojoportal项目中发邮件使用的是dotnetopenmail介绍发邮件是非常简单的,不管用System.web.mail [ASP.NET 1.1]或System.Net.mail [ASP.NET 2.0],但是还是有其他第三方组件可以被使用,比如DotNetOpenMail.他可以使你用最少的代码…

怎么看表_干货 | 剪力墙、柱、板配筋率到底怎么算?

干货 | 剪力墙、柱、板配筋率到底怎么算?正在努力的阿源 北京峰源结构设计 剪力墙(纯剪力墙)1.一般部位墙厚高规7.2.1条及抗规6.4.1条,对于一般部位,一、二级不应小于160mm且不宜小于层高或无支长度的1/20,…

(二十四)【2021 ACL】OntoED: Low-resource Event Detection with Ontology Embedding

题目: OntoED: Low-resource Event Detection with Ontology Embedding 论文链接: https://arxiv.org/abs/2105.10922 论文代码:https://github.com/231sm/Reasoning_In_EE 论文 什么原型? Prototypical networks for few-shot …

哈尔滨理工C语言程序设计精髓_【注意啦】哈尔滨工业大学2020考研计算机专业课调整,难度提升!...

前言:最近各高校在密集调整计算机相关专业的专业课,从热门985高校、211高校到普通本科,许多学校的专业课都进行了调整。各高校通常会发布专业课调整通知或者直接发布2020研究生招生专业目录,请各位同学多多关注相关信息。哈尔滨工…

数据恢复软件(绝对真实可用)

本软件已经本人测试,这个数据恢复软件是我用过的感觉最好用的一个了。声明:我是在我电脑没有重装系统的前提下进行测试的。小小的这么一个绿色软件,还真的可以找回大部分删除了N久的文件。感觉很爽。现给大家展示几张我测试时的截图&#xff…

LeetCode 1221. 分割平衡字符串

1. 题目 在一个「平衡字符串」中,‘L’ 和 ‘R’ 字符的数量是相同的。 给出一个平衡字符串 s,请你将它分割成尽可能多的平衡字符串。 返回可以通过分割得到的平衡字符串的最大数量。 示例 1: 输入:s "RLRRLLRLRL"…

安装pp框架

第一步: 创建环境 conda create --name pp37 python3.7 第二步: 激活环境 conda activate pp37 第三步: 官方安装 conda install paddlepaddle-gpu2.1.3 cudatoolkit10.2 --channel https://mirrors.tuna.tsinghua.edu.cn/anaconda/clou…

基础算法学习(二)_二叉树及应用赫夫曼编码

这次学习的重点在于二叉树的性质、链式存储结构(也就是C语言的struct)和赫夫曼编码,学习的教材是清华大学出版社出版的C语言版数据结构。 首先是二叉树: 二叉树(Binary Tree)是另一种树形结构&#xff…

LeetCode 1222. 可以攻击国王的皇后(set)

1. 题目 在一个 8x8 的棋盘上,放置着若干「黑皇后」和一个「白国王」。 「黑皇后」在棋盘上的位置分布用整数坐标数组 queens 表示,「白国王」的坐标用数组 king 表示。 「黑皇后」的行棋规定是:横、直、斜都可以走,步数不受限…

win10开始菜单添加磁贴_Windows 10开始菜单磁贴美化教程

前言我们都知道,Windows 10在美化上可没有下足功夫,尤其是开始菜单的磁贴上。几年前,我们还觉得这种磁贴设计在大众面前焕然一新,可是近几年来,也没见磁贴有什么起色,除了不能自定义背景颜色外,…

【Text_Classification】学习到的语法知识

1. 任务 1.1 字典中每个种类的准确率 分母: 首先计算每个种类的总数! for value in label:# get(value, num)函数的作用是获取字典中value对应的键值, num0指示初始值大小。label_cout[value] label_cout.get(value, 0) 1label_acc[value] label_a…

%求余数 rand随机数

//getSeconds() 0-59number new Date().getSeconds() % 3 1; //随机数,从1到3//0-9之间 Math.random()*10var num1 Math.round(Math.random()*10) % 3 随机数,从0到2 任何数%3 得到 0 1 2 任何数%4 得到 0 1 2 3转载于:https://www.cnblogs.com/reo…

LeetCode 1217. 玩筹码(脑筋急转弯)

1. 题目 数轴上放置了一些筹码,每个筹码的位置存在数组 chips 当中。 你可以对 任何筹码 执行下面两种操作之一(不限操作次数,0 次也可以): 将第 i 个筹码向左或者右移动 2 个单位,代价为 0。将第 i 个筹…

windows脚本命令闪退_NCL2Python|windows系统安装Pyngl和Pynio

自从NCL停更之后,python的知名度都不断提高了,我也开始了python学习之旅,但是还没开始,就被如何安装Pyngl和Pynio给困住了。网上和官网给的教程都是Linux系统或者OS系统,有老板服务器的同学压根不用担心这个问题&#…

【Text_classification】 PaddlePaddle框架下出错调整到运行的实验和记录

使用的是Paddle框架2.0版本 网页: https://github.com/PaddlePaddle/PaddleHub/tree/release/v2.1/demo/text_classification 也可以在其平台上利用公开数据集跑一跑: 网页:https://aistudio.baidu.com/aistudio/projectdetail/2390146?cont…

WCF分布式开发步步为赢系列

众所周知,系统间的低耦合一直是大型企业应用系统集成追寻的目标,SOA面向服务架构的 出现为我们的如何利用现有企业系统资源进行企业ERP系统设计和实现提供了重要的参考原则。SOA如此炙手可热,各大厂商都推出了自己的中间件产品,比…