KGAT_基于知识图谱+图注意力网络的推荐系统(KG+GAT)

本文介绍了用于推荐的知识图谱注意力网络KGAT。传统推荐方法存在不足,KGAT将知识图谱与用户 - 项目图结合成协同知识图。它包含嵌入层、注意力嵌入传播层和预测层,通过递归传播邻域节点嵌入更新自身节点嵌入,并使用注意力机制区分邻域节点重要性,还给出了实验和代码解析。

Xiang Wang, Xiangnan He, Yixin Cao, Meng Liu and Tat-Seng Chua (2019). KGAT: Knowledge Graph Attention Network for Recommendation. Paper in ACM DL or Paper in arXiv. In KDD’19, Anchorage, Alaska, USA, August 4-8, 2019.
本文作者源码:https://github.com/xiangwang1223/knowledge_graph_attention_network

本人对KGCN的一些代码注释,有兴趣的道友可以看看
https://github.com/Archerxzs/KGAT-notes
文章最后附上本人对代码的解析

Abstract

为了更好的推荐,不仅要对user-item交互进行建模,还要将关系信息考虑进来

传统方法因子分解机将每个交互都当作一个独立的实例,但是忽略了item之间的关系(eg:一部电影的导演也是另一部电影的演员)

高阶关系:用一个/多个链接属性连接两个item

KG+user-item graph+high order relations—>KGAT

递归传播邻域节点(可能是users、items、attributes)的嵌入来更新自身节点的嵌入,并使用注意力机制来区分邻域节点的重要性

introduction

尽管CF方法具有有效性和普遍性,但它无法对辅助信息进行建模,例如项目属性、用户简档和上下文,因此在用户和项目很少交互的稀疏情况下表现不佳

解决方法:将这些辅助信息转换成一个通用的特征向量,和userID和itemID输入到监督学习模型(SL)进行预测得分(常见模型:FM,NFM,Wide&Depp,xDeepFm)

仍然存在的问题:这些模型将每个交互都建模为一个独立的数据实例,不考虑它们之间的关系,使得它们不能从用户的集体行为中提取协作信号

在这里插入图片描述

u1-[r1(Interact)]-i1-[r2(DirectedBy)]-e1

CF方法关注和i1有交互的相似user(u4,u5)

SL方法关注和e1有相同属性的相似item(i2)

期望:综上以上两种方法不仅可以对推荐进行互补,还使得user和item之间形成了高阶联系

但现有的SL方法不能将它们统一起来,并且无法考虑到高阶联系

(eg:黄圈中的u2,u3看的i2都是e1指导拍摄的,灰圈中的i3,i4和e1都有共同的关系,这两圈就被传统方法忽略了)

在这里插入图片描述

解决方法:

采用图中item的边信息(即knowledge graph)

knowledge graph+user-item graph–>collaborative knowledge graph协同知识图(CKG)

挑战:

1、节点会随着阶数的增加而急剧增加,会使得模型计算过载(选择多少邻居)

2、高阶关系对于预测的贡献不确定,需要模型来加权选择它们(邻居的重要性)

一些方法:

基于路径:提取携带高阶信息的路径,并将它们输入到预测模型中

路径选择算法:选择更重要的路径

定义元路径:需要大量领域知识

这两种路径选择方法没有对推荐目标进行优化

基于规则的:设计一个额外的损失项来捕获KG的结构来优化推荐模型的学习

目前存在的方法不是直接将高阶关系插入到优化推荐模型中,而是以隐式方法对它们进行编码,缺乏明确的建模,既不能保证捕捉到长期联系,也不能解释高阶建模的结果

GNN->KGAT

挑战:

1、递归嵌入传播,用领域节点嵌入来更新当前节点嵌入

2、使用注意力机制,来学习传播期间每个邻居的权重

优点:

1、与基于路径的方法相比,避免了人工标定路径

2、与基于规则的方法相比,将高阶关系直接融入预测模型

Task Formulation

User-Item Bipartite Graph:

  • G1 ={ (u,yui,i)∣u∈U,i∈I}{ U   user setI   item setyui{ 1 u和i有交互0 u和i无交互G_1\ =\{(u,y_{ui},i)|u∈U,i∈I\}\begin{cases} U \ \ \ user\ set \\ I \ \ \ item\ set \\ y_{ui}\begin{cases} 1 \ u和i有交互 \\ 0 \ u和i无交互\end{cases} \end{cases}G1 ={ (u,yui,i)uUiI}U   user setI   item setyui{ 1 ui0 ui

Knowledge Graph:item的信息(属性、外部知识)

例如一部电影可以用他的导演、演员、体裁等信息描述

(Hugh Jackman,ActorOf,Logan)

  • G2 ={ (h,r,t)∣h,t∈ε,r∈R}G_2\ =\{(h,r,t)|h,t∈\varepsilon,r∈R\}G2 ={ (h,r,t)h,tε,rR}

Item-entity alignments set:

  • $ A={(i,e)|i∈I,e∈\varepsilon}$
    • item i对应于entity eitem\ i 对应于 entity\ eitem ientity e

**Collaborative Knowledge Graph:**将用户行为和项目知识编码为一个统一的关系图

  • G={ (h,r,t)∣h,r∈ε′,r∈R′}G=\{(h,r,t)|h,r∈\varepsilon',r∈R'\}G={ (h,r,t)h,rε,rR}
    • ε′=ε∪U\varepsilon'=\varepsilon∪Uε=εU
    • R′=R∪{ Interact}    { Interact}为额外的关系R'=R∪\{Interact\}\ \ \ \ \{Interact\}为额外的关系R=R{ Interact}    { Interact}

Input:协作知识图G(包括G1和G2)Input:协作知识图G(包括G_1和G_2)Input:GG1G2

Output:y^ui:user u是否会交互item iOutput:\widehat{y}_{ui}:user\ u是否会交互item\ iOutput:y ui:user uitem i

High-Order Connectivity:

定义 L阶连通 :多跳关系的路径

e0r1>e1r2...rL>eLe_0\frac{r_1}{}>e_1\frac{r_2}{}...\frac{r_L}{}>e_Le0r1>e1r2...rL>eL (eL∈ε′ ,r∈R′)(e_L∈\varepsilon'\ ,r∈R')(eLε ,rR)

(el−1,rl,el)是第l个三元组,L是序列的长度(e_{l-1},r_l,e_l)是第l个三元组,L是序列的长度(el1,rl,el)lL

CF方法是建立在用户行为的相似性的基础上,即相似的用户在项目上表现出更相似的偏好

u1r1>i1−r1>u2r1>i2u_1\frac{r_1}{}>i_1\frac{-r_1}{}>u_2\frac{r_1}{}>i_2u1r1>i1r1>u2r1>i2

如上的连通路径会表现为u1可能对i2有偏好,因为u1的相似用户u2曾经对i2有过交互

SL方法更关注与相似属性的item

u1r1>i1r2>e1−r2>i2u_1\frac{r_1}{}>i_1\frac{r_2}{}>e_1\frac{-r_2}{}>i_2u1r1>i1r2>e1r2>i2

如上的连通路径会表现为u1可能对i2有偏好,因为i2和之前喜欢的i1有相同的导演e1

但是很难对u1r1>i1r2>e1−r3>i2u_1\frac{r_1}{}>i_1\frac{r_2}{}>e_1\frac{-r_3}{}>i_2u1r1>i1r2>e1r3

评论 34
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值