知识图谱论文阅读(十六)【WWW2019】Knowledge Graph Convolutional Networks for Recommender

在这里插入图片描述
题目: KGCN
论文链接:
代码链接:https://github.com/hwwang55/KGCN

想法

  • 高阶的意思就是multi-hop的意思
  • 注意是从外向里聚合的,第h-1跳是外侧,第h跳是里侧! 所以才有聚合邻居和本身之说

创新

摘要

为了充分利用KG中的信息,我们会扩展某个实体的感受野到multi-hop来捕获KG的高阶结构信息和语义信息。

数据集: 电影、书籍和音乐推荐

Introduction

常用的KGE方法侧重于建模严格的语义相关性(如TransE[1]和TransR[12]假设头+关系=尾),更适合KG补全和链接预测等图内应用,而不是推荐。 一种常见的方法是设计一种图算法来利用图结构! 也就是在图上传播信息,原始的基于图的在于手工建立meta-path/meta-graph,之后是建立某种规则来建立meta-path/meta-graph; RippleNet虽然可以有效在KG中传播user preference,探索它们的层次兴趣,但是由于关系矩阵 RRR没有得到很好的训练,关系的重要性被弱化了! 同时,随着KG的增大,ripple set的multi-hop的大小变得不可预测,这将导致大量的计算和存储开销。

KGCN的核心思想是在计算给定实体在KG中的表示时,对带有偏差的邻域信息进行聚合和合并,这样的设计有两个优点:(1)通过邻域聚合,local proximity structure(局部邻近结构)被成功捕获并存在每个实体里。(2)邻居的权重取决于连接关系和特定用户的得分,体现了KG的语义信息和用户的个性化兴趣; 同时由于邻居的大小是变化的,因此我们会选择固定大小领域作为接收域!

2 RELATED WORK

GCN可分为光谱方法和非光谱方法。谱方法在谱空间中表示图并进行卷积。相比之下,非谱方法直接对原始图进行操作,并为节点组定义卷积。

我们的方法也连接到PinSage[21]和GAT[15]。但请注意,PinSage和GAT都是为齐次图设计的。我们的主要贡献就是在异构图的推荐系统上提供新视角。

3 KNOWLEDGE GRAPH CONVOLUTIONAL NETWORKS

常规的定义:
用户:
在这里插入图片描述
item:
在这里插入图片描述在这里插入图片描述
交互矩阵:
在这里插入图片描述
三元组:
在这里插入图片描述
目标:
在这里插入图片描述

3.2 KGCN Layer

下面我们考虑单个KGCN层:
先用r和u来计算出该r对u的重要性; 同时r连接了v, 那么v对u的特征汇聚就好求了。 该关系也就表明了u对v的兴趣!

我们考虑user u和item v的候选对,我们使用N(v)\mathcal{N}(v)N(v)表明了直接和vvv相连的实体的集合,rei,rejr_{e_i},r_{e_j}reirej表明了两个实体之间的关系。

  1. 首先:我们也会使用一个函数Rd×Rd−>R\mathbb{R}^d \times \mathbb{R}^d -> \mathbb{R}Rd×Rd>R(比如内积)来计算一个user和一个relation之间的分数:
    在这里插入图片描述
    在这里插入图片描述
    关系的意思就是说一个人喜欢看该电影是因为明星,但是另一个人看该电影却是为了导演

  2. 同理, 为了描述item v的拓扑邻近结构,我们计算v的邻居的线性组合
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    其中e\mathrm{e}e表示了实体eee的表示

User-relation scores充当了个性化的过滤器在计算v的邻居的线性组合时。

  1. 设计邻居大小
    因为在真实世界中,一个实体的邻居在不同的实体之间是大不相同的!为了保证每批计算模式固定和更有效,我们只取固定大小的邻居,而不是全部。 具体的,我们取实体vvv的邻居表示为vS(v)uv_{S_{(v)}}^uvS(v)u,其中S(v)≜{e∣e∼N(v)}\mathcal{S}(v) \triangleq\{e \mid e \sim \mathcal{N}(v)\}S(v){eeN(v)},并且∣S(v)∣=K\left | \mathcal{S}(v) \right | = KS(v)=K是固定的,因此呢S(v)S(v)S(v)也被称为是实体vvv的接受野!!! 下图左侧就是一个layer-2的实例,其中K设置为2,中心实体是蓝色的,被选中的邻居是绿色的!注意是从外侧向里的聚合的!

在这里插入图片描述

  1. 聚合实体表示和其邻居表示为单一向量Rd×Rd−>Rd\mathbb{R}^d \times \mathbb{R}^d -> \mathbb{R}^dRd×Rd>Rd
  • Sum aggregator 取两个表示向量的和,然后进行非线性变换:
    在这里插入图片描述

  • Concat aggregator在进行非线性变换之前,先将两个表示向量连接起来:
    在这里插入图片描述

  • Neighbor aggregator 直接取实体的邻域表示作为输出表示:
    在这里插入图片描述
    我们将在实验中评估三种聚合器!

3.3 学习算法

high-order: 就是多层邻居,或者说multi-layer; 而一个high-oder表示是它自身和它的邻居的初始表示的混合!

HHH表明了感受野的最大的深度(或者说是迭代的次数),后缀[h]表示是hhh-order。对于一个user-item对(u,v)(u,v)(uv),我们首先以逐层迭代的方式计算vvv的感受野MMM,这里M[i]M[i]M[i]就表示了vvv第i阶的所有实体!!可以想象成字典,每个key值下有多个点 (line 3, 13-19),然后聚合重复HHH次 (line 5),在迭代h中,我们计算每个实体的邻域表示e∈M[h],也就是求每个邻居实体的嵌入e \in M[h],也就是求每个邻居实体的嵌入eM[h](line 7),然后用它自己的表示eu[h−1]\mathrm{e}^u[h-1]eu[h1]来聚合得到下一次迭代中使用的值,因为我们每个实体表示都是由本身和其邻居的聚合表示的(line 8),最后的h阶实体表示表示为vu\mathrm{v}^uvu(line 9),最终放到一个得分函数中:
在这里插入图片描述
为了提高计算效率,我们在训练过程中使用了负采样策略。完全损失函数为:

4 EXPERIMENTS

Experiment Setup

Results

在这里插入图片描述

会发现如下结论:

  • KGCN更适应于稀疏矩阵
  • KG-free基线SVD、LibFM比KG-aware基线PER和CKE效果更好,表明了PER和CKE没有充分利用手工设计的metapath和TransR-
    like regularization
  • LibFM + TransE是比LibFM更好,说明KGE的重要性
  • PER最差,因为在现实中很难定义最优元路径
  • RippleNet表现更好,因为也用了邻居!

而且发现KGCN-sum是综合最好的

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

总结和未来的方向

我们指出了未来工作的三个途径。
(1)在这项工作中,我们一致地从一个实体的邻居中取样,以构建其接受域。探索非均匀采样器(如重要采样)是今后工作的一个重要方向。
(2)本文(以及所有文献)关注于item-end KGs的建模,未来工作的一个有趣方向是研究利用user-end KGs是否有助于提高推荐性能。
(3)设计一种能很好地组合两端KGs的算法也是一个很有前途的方向。

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

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

相关文章

LeetCode 925. 长按键入(双指针)

1. 题目 你的朋友正在使用键盘输入他的名字 name。 偶尔,在键入字符 c 时,按键可能会被长按,而字符可能被输入 1 次或多次。 你将会检查键盘输入的字符 typed。 如果它对应的可能是你的朋友的名字(其中一些字符可能被长按&#…

java 拉取收件箱邮件源码_邮件提醒系统:新邮件识别

最近在做邮件提醒抄送企业微信消息系统,就目前而言,无论是pop3还是imap都没有一个好的方法只接收新邮件,基本只能依靠收件箱列表message自行判断,下面给出几种思路并作对比。//收件箱 folder store.getFolder("INBOX")…

Jquery 操作select总结

//遍历option和添加、移除optionfunction changeShipMethod(shipping){var len $("select[nameISHIPTYPE] option").lengthif(shipping.value ! "CA"){$("select[nameISHIPTYPE] option").each(function(){if($(this).val() 111){$(this).remo…

知识图谱论文阅读(十七)【WWW2021】DGCN: Diversified Recommendation with Graph Convolutional Networks

本论文是很明显是基于KGCN的! 如果不懂KGCN,可以看我上一篇博文 论文题目: DGCN: Diversified Recommendation with Graph Convolutional Networks 论文链接: 论文代码: https://github.com/tsinghua-fib-lab/DGCN 想…

PKU-3624

代码 //0-1背包问题 如果不使用循环数组&#xff0c;空间越界。#include <stdio.h>intmain(){ intn, v, i, j; intw[3403], p[3403]; intf[12881]; scanf("%d %d", &n, &v); for(i 1; i <n; i) scanf("%d %d", &a…

LeetCode 1309. 解码字母到整数映射

1. 题目 给你一个字符串 s&#xff0c;它由数字&#xff08;‘0’ - ‘9’&#xff09;和 ‘#’ 组成。 我们希望按下述规则将 s 映射为一些小写英文字符&#xff1a; 字符&#xff08;a - i&#xff09;分别用&#xff08;1 - 9&#xff09;表示。 字符&#xff08;j - z&am…

redis如何设置定时过期_redis补充6之Redis 设置过期时间

一般情况下&#xff0c;我们设置保存的缓存数据的时候都会设置一个过期时间。Redis 中有个设置时间过期的功能&#xff0c;即对存储在 Redis 数据库中的值可以设置一个过期时间。作为一个缓存数据库&#xff0c;这是非常实用的。如我们一般项目中的 token 或者一些登录信息&…

知识图谱论文阅读(十八)【KDD2019】AKUPM: Attention-Enhanced Knowledge-Aware User Preference Model for Recommend

论文题目&#xff1a; AKUPM: Attention-Enhanced Knowledge-Aware User Preference Model for Recommendation 论文代码&#xff1a; 论文链接&#xff1a; 想法 什么叫折射到关系空间&#xff1f; &#xff08;添加了一个关系矩阵&#xff0c;但是关系矩阵为啥要加&#xf…

LeetCode 1304. 和为零的N个唯一整数

1. 题目 给你一个整数 n&#xff0c;请你返回 任意 一个由 n 个 各不相同 的整数组成的数组&#xff0c;并且这 n 个数相加和为 0 。 示例 1&#xff1a; 输入&#xff1a;n 5 输出&#xff1a;[-7,-1,1,3,4] 解释&#xff1a;这些数组也是正确的 [-5,-1,1,2,3]&#xff0c;…

vue做混合式app_Vue+原生App混合开发手记#1

项目的大致需求就是做一个App&#xff0c;里面集成各种功能供用户使用&#xff0c;其中涉及到很多Vue的使用方法&#xff0c;单独总结太麻烦&#xff0c;所以通过这几篇笔记来梳理一下。原型图如下&#xff1a;路由配置主界面会用到一些原生App方法&#xff0c;比如验证用户身份…

Android入门第八篇之GridView(九宫图)

GridView跟ListView都是比较常用的多控件布局&#xff0c;而GridView更是实现九宫图的首选!本文就是介绍如何使用GridView实现九宫图。GridView的用法很多&#xff0c;网上介绍最多的方法就是自己实现一个ImageAdapter继承BaseAdapter&#xff0c;再供GridView使用&#xff0c;…

(十九)【AAAI2021】Knowledge-Enhanced Hierarchical Graph Transformer Network for Multi-Behavior Recommend

题目&#xff1a; Knowledge-Enhanced Hierarchical Graph Transformer Network for Multi-Behavior Recommendation 论文链接&#xff1a; 代码链接&#xff1a;https://github.com/akaxlh/KHGT 论文 时间戳放入到关系中&#xff0c;可以参考这篇《Heterogeneous graph trans…

LeetCode 1295. 统计位数为偶数的数字

1. 题目 给你一个整数数组 nums&#xff0c;请你返回其中位数为 偶数 的数字的个数。 示例 1&#xff1a; 输入&#xff1a;nums [12,345,2,6,7896] 输出&#xff1a;2 解释&#xff1a; 12 是 2 位数字&#xff08;位数为偶数&#xff09; 345 是 3 位数字&#xff08;位数…

pymysql保存数组_pymysql 读取大数据内存卡死的解决方案

背景&#xff1a;目前表中只有5G(后期持续增长)&#xff0c;但是其中一个字段(以下称为detail字段)存了2M(不一定2M&#xff0c;部分为0&#xff0c;平均下来就是2M)&#xff0c;字段中存的是一个数组&#xff0c;数组中存N个json数据。这个字段如下&#xff1a;[{"A"…

WPF学习笔记-第二周【基本笔刷】

书接上回&#xff0c;这一次&#xff0c;讲的是WPF中的基本笔刷&#xff0c;由于是菜鸟&#xff0c;就不多说了&#xff0c;继续帖示例代码&#xff1a;&#xff09; 第一部份 代码 第二章 基本笔刷 第一个 示例 VaryTheBackgroud P38 1 #regionVaryTheBackgroud P382 3 ///<…

知识图谱论文阅读(二十)【WWW2020】Heterogeneous Graph Transformer

题目&#xff1a; Heterogeneous Graph Transformer 论文链接&#xff1a; https://arxiv.org/abs/2003.01332 代码链接&#xff1a;https://github.com/acbull/pyHGT 论文 异构图研究之一&#xff1a; 使用元路径来建模异构结构 heterogeneous graphs 《Mining Heterogeneous…

LeetCode 1287. 有序数组中出现次数超过25%的元素

1. 题目 给你一个非递减的 有序 整数数组&#xff0c;已知这个数组中恰好有一个整数&#xff0c;它的出现次数超过数组元素总数的 25%。 请你找到并返回这个整数 示例&#xff1a; 输入&#xff1a;arr [1,2,2,6,6,6,6,7,10] 输出&#xff1a;6提示&#xff1a; 1 < arr…

你真的知道一个HTML及资源是如何load的吗(了解各个部分是何时下载和执行的)

你真的知道一个HTML及资源是如何load的吗(了解各个部分是何时下载和执行的)2009-12-03 01:09 by Tower Joo, 3741 visits, 网摘, 收藏, 编辑 你真的知道一个HTML及资源是如何load的吗(了解各个部分是何时下载和执行的) 本博客所有内容采用 Creative Commons Licenses 许可使用.…

vue开发手机页面闪烁_Vue页面加载闪烁问题的解决方法_婳祎_前端开发者

v-if 和 v-show 的区别v-if只会在满足条件时才会编译&#xff0c;而v-show不管是否满足条件始终会编译&#xff0c;v-show的显示与隐藏只是简单的切换也就是说&#xff0c;在使用v-if时&#xff0c;若值为false&#xff0c;那么页面将不会有这个使用场景一般来说&#xff0c;v-…

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

题目&#xff1a;Neural Graph Collaborative Filtering 代码&#xff1a; https://github.com/xiangwang1223/neural_graph_collaborative_filtering 本文参考了博文 想法 &#xff08;1&#xff09;其实是很有缺点&#xff0c;在消息传播中&#xff0c;只是使用了邻居与目…