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)∣u∈U,i∈I}⎩⎪⎪⎪⎨⎪⎪⎪⎧U user setI item setyui{ 1 u和i有交互0 u和i无交互
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∈ε,r∈R}
Item-entity alignments set:
- $ A={(i,e)|i∈I,e∈\varepsilon}$
- item i对应于entity eitem\ i 对应于 entity\ eitem i对应于entity 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∈ε′,r∈R′}
- ε′=ε∪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:协作知识图G(包括G1和G2)
Output:y^ui:user u是否会交互item iOutput:\widehat{y}_{ui}:user\ u是否会交互item\ iOutput:y ui:user u是否会交互item 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∈ε′ ,r∈R′)
(el−1,rl,el)是第l个三元组,L是序列的长度(e_{l-1},r_l,e_l)是第l个三元组,L是序列的长度(el−1,rl,el)是第l个三元组,L是序列的长度
CF方法是建立在用户行为的相似性的基础上,即相似的用户在项目上表现出更相似的偏好
u1r1>i1−r1>u2r1>i2u_1\frac{r_1}{}>i_1\frac{-r_1}{}>u_2\frac{r_1}{}>i_2u1r1>i1−r1>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>e1−r2>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>e1−r3

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

被折叠的 条评论
为什么被折叠?



