KGAT:Knowledge Graph Attention Network for Recommendation

emm…图片复制过来显示不了(因为我太懒了0.0),要看图的话可以去我的博客瞅瞅,嘿嘿嘿
对了,有些英文短句假如翻译成中文,阅读的时候就太搞脑子了,所以我干脆就不翻译了

我的博客地址:https://hikg.net/archives/123/

Introduction

作者认为: high-order relations(which connect two items with one or multiple linked attributes) are an essential factor for successful recommendation.

传统基于CF的推荐,将每个interaction建模为一个独立的数据实例,并没有考虑到他们的关系。

下图是推荐的一个实例,u1是需要提供推荐的一个目标user。黄、灰圈代表的是由high-order关系发现的关键users、items,但是它们被传统方法忽视了:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-UcfcAiFD-1619524788028)(https://516000.xyz/images/2021/03/20/2021-03-20-09.10.32.png)]

CF方法:注重于相似user的历史记录(比如也观看了i1的用户u4、u5)

SL方法(supervised learning):强调拥有相同属性e1的相似items,例如i2

Path-based Methods

Path-based方法抽取出蕴含高阶信息的path,然后将他们送入预测模型。为了解决2个节点间的path过多的问题,采用路径选择算法、或是定义meta-path的模式来限制path。

第一种方法(路径选择)对最终的性能有较大影响,但是它并没有针对推荐目标进行优化。

定义meta-path需要领域知识,这是劳动密集型的工作

Regularization-based Methods

设计了能够捕捉KG结构的额外损失项,来规范推荐模型的学习。

这些方法没有直接将high-order的关系插入到为推荐优化的的模型中,而仅仅是以一种隐式的方式对他们进行编码

KGAT

本篇论文提出的KGAT模型:递归地传播来自一个节点邻居(可以是user、item、attribute)的embedding,来细化该节点的embedding;并采用注意力机制来区分这些邻居的重要性。

KGAT采用2种设计来相应地解决high-order关系建模中的挑战:

  1. 递归嵌入传播recursive embedding propagation:基于某个节点的邻居embedding,更新该节点的embedding;递归地执行这个传播来捕捉high-order connectivities in a linear time complexity
  2. 基于注意力的聚合 attention-based aggregation:采用注意力机制去学习传播过程中每个邻居的权重;这样,传播过程中的注意力权重可以表示一个高阶连接的重要性

Task Formulation

Concept of CKG

CKG将user behaviors、item knowledge作为一个联合的关系图进行编码

  • User-Item Bipartite Graph:是user-item的历史交互;定义为 ( u , y u i , i ) (u,y_{ui},i) (u,yui,i)记作 G 1 G_1 G1,其中 u u u属于用户集 U U U i i i属于item集 I I I y u i = 1 y_{ui}=1 yui=1表示u、i之间有过交互行为。
  • Knowledge Graph:是item的side information;表示为 ( h , r , t ) (h,r,t) (h,r,t)记作 G 2 G_2 G2
  • a set of item-entity alignments: A = ( i , e ) A=(i,e) A=(i,e) i i i属于 I I I e e e属于G2中的实体集; ( i , e ) (i,e) (i,e)表示item i i i可以被对齐到KG中的实体 e e e
  • Collaborative Knowledge Graph:
    • 将每个user的行为表示为三元组 ( u , I n t e r a c t , i ) (u,Interact,i) (u,Interact,i),之前的 y u i = 1 y_{ui}=1 yui=1在这里表示为u和i之间的一种关系interact
    • 然后基于item-entity alignment set,将user-item graph整合到KG G 2 G_2 G2中,得到一个联合图 G = ( h , r , t ) G=(h,r,t) G=(h,r,t),这里的h、t属于联合后的实体E集,r属于联合后的R集

Task Description

输入:CKG G G G,包括user-item graph G 1 G_1 G1,知识图谱 G 2 G_2 G2

输出:一个预测函数,预测了u与i发生交互的概率 y ^ u i \hat{y}_{ui} y^ui

High-Order Connectivity

将节点之间的L阶的连通性定义为一个多跳的关系路径: e 0 ⟶ r 1 e 1 ⟶ r 2 . . . ⟶ r L e L e_0 \stackrel{r_1}{\longrightarrow} e_1 \stackrel{r_2}{\longrightarrow} ... \stackrel{r_L}{\longrightarrow} e_L e0r1e1r2...rLeL e l e_l el r l r_l rl分别属于融合后的 G G G ( e l − 1 , r l , e l ) (e_{l-1}, r_l, e_l) (el1,rl,el)是第 l l l个三元组, L L L是序列的长度)

为了推断user preference,CF方法基于users之间的行为相似度(具体来说,就是:相似的users对items具有相同的偏好);这种可以被表示为基于行为的连通性,如: u 1 ⟶ r 1 i 1 ⟶ − r 1 u 2 ⟶ r 1 i 2 u_1 \stackrel{r_1}{\longrightarrow} i_1 \stackrel{-r_1}{\longrightarrow} u_2 \stackrel{r_1}{\longrightarrow} i_2 u1r1i1r1u2r1i2,这表明了 u 1 u_1 u1 i 2 i_2 i2有兴趣(因为她相似的user u 2 u_2 u2之前与 i 2 i_2 i2发生过交互)

SL模型关注基于属性的连通性,即:users倾向于与拥有相似属性的items发生交互。例如: u 1 ⟶ r 1 i 1 ⟶ r 2 e 1 ⟶ − r 2 i 2 u_1 \stackrel{r_1}{\longrightarrow} i_1 \stackrel{r_2}{\longrightarrow} e_1 \stackrel{-r_2}{\longrightarrow} i_2 u1r1i1r2e1r2i2,表明 u 1 u_1 u1将会与 i 2 i_2 i2发生交互(因为 i 2 i_2 i2 u 1 u_1 u1之前喜欢的 i 1 i_1 i1拥有相同的导演 e 1 e_1 e1

。。。。。。

Methodology

KGAT 模型包含3个组件:

  1. embedding layer:通过保留CKG的结构,将每个节点参数化为一个向量
  2. attentive embedding propagation layers:以递归的方式传递一个节点的邻居的embedding,以更新该节点自身的表示;并且采用注意力机制,在传播过程中学习每个邻居的权重
  3. prediction layer:汇总了所有传播层中的a user、an item的表示,并输出预测分数

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-vpEYUP64-1619524788030)(https://516000.xyz/images/2021/03/25/2021-03-25-18.53.24.png)]

1. Embedding Layer

模型采用了TransR:若三元组(h,r,t)存在于G中,TransR会通过优化翻译原理 e h r + e r ≈ e t r e_h^r + e_r \approx e_t^r ehr+eretr来学习嵌入每个实体、关系。这里的 e h 和 e t e_h和e_t ehet是h、t的embedding, e h r 和 e t r e_h^r和e_t^r ehretr e h 和 e t e_h和e_t ehet在关系r的空间上的投影。

对于给定三元组(h,r,t),其plausibility score(energy score)定义为: g ( h , r , t ) = ∣ ∣ W r e h + e r − W r e t ∣ ∣ 2 2 g(h,r,t) = ||W_re_h + e_r - W_re_t||_2^2 g(h,r,t)=Wreh+erWret22,Wr是关系r的变换矩阵(将实体从d维的实体空间投影到k维的关系空间) g ( h , r , t ) g(h,r,t) g(h,r,t)越低,表示三元组的置信度越高。

TransR的训练使用的损失函数为: L K G = ∑ − l n σ ( g ( h , r , t " ) − g ( h , r , t ) ) L_{KG} = \sum{-ln \sigma(g(h,r,t^") - g(h,r,t))} LKG=lnσ(g(h,r,t")g(h,r,t)),其中(h,r,t撇)为负采样得到的。

2. Attentive Embedding Propagation Layers

接着,基于GCN的结构,沿着高阶连通性,递归地传播embeddings;此外,通过利用GAT,生成了级联传播的注意力权重,揭示了这种连通性的重要性。

从单层开始描述,每层包括了3个组件:information propagation e N h e_{N_h} eNh、knowledge-aware attention π ( h , r , t ) \pi(h,r,t) π(h,r,t)、information aggregation

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-KkzlCv7g-1619524788030)(https://516000.xyz/images/2021/03/23/2021-03-23-10.27.51.png)]

Information Propagation

1个实体可以被包含在多个三元组中,这个实体充当了连接2个三元组和传播信息的桥梁。

举例:

e 1 ⟶ r 2 i 2 ⟶ − r 1 u 2 e_1 \stackrel{r_2}{\longrightarrow} i_2 \stackrel{-r_1}{\longrightarrow} u_2 e1r2i2r1u2

e 2 ⟶ r 3 i 2 ⟶ − r 1 u 2 e_2 \stackrel{r_3}{\longrightarrow} i_2 \stackrel{-r_1}{\longrightarrow} u_2 e2r3i2r1u2

i 2 i_2 i2使用属性 e 1 e_1 e1 e 2 e_2 e2作为输入来丰富其自身的特征,然后对 u 2 u_2 u2的偏好作出贡献。这可以通过从 e 1 e_1 e1传播消息到 u 2 u_2 u2来模拟。基于此,在实体、其邻居之间执行消息传播。

考虑一个实体 h h h,使用 N h = ( h , r , t ) N_h=(h,r,t) Nh=(h,r,t)来表示三元组的集合,这里的 h h h是头实体,称作ego-network

通过计算h的ego-network的线性组合,可以表征实体 h h h的first-order connectivity structure:

e N h = ∑ ( h , r , t ) ∈ N h π ( h , r , t ) e t e_{N_h} = \sum\limits_{(h,r,t)\in N_h}{\pi(h,r,t)e_t} eNh=(h,r,t)Nhπ(h,r,t)et

其中 π ( h , r , t ) \pi(h,r,t) π(h,r,t)控制了边 ( h , r , t ) (h,r,t) (h,r,t)上每次传播的衰减因子(表明:在关系r的条件下,从 t 传播到 h 的信息量的多少)

Knowledge-aware Attention

通过relational attention mechanism来实现 π ( h , r , t ) \pi(h,r,t) π(h,r,t)

π ( h , r , t ) = ( W r e t ) ⊤ t a n h ( W r e h + e r ) \pi(h,r,t) = (W_re_t)^\top tanh(W_re_h + e_r) π(h,r,t)=(Wret)tanh(Wreh+er)

选择 t a n h tanh tanh作为非线性激活函数,这使得(基于the distance between e h e_h eh and e t e_t et in the relation r r r’s space)attention score可以为较近的实体传播更多的信息

注意:为简单起见,仅采用内积来计算这些表示,将来进一步探索attention module

随后,通过采用softmax函数,对所有连接到 h h h的三元组的系数进行归一化:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-KMwS0nux-1619524788031)(https://516000.xyz/images/2021/03/23/2021-03-23-19.06.04.png)]

最终的attention score π \pi π 能够区分哪一个邻居节点应该被给予更多的注意力,以此来捕捉collaborative signals。当执行前向传播的时候,attention flow建议关注部分数据,这可以被视作推荐的解释

KGAT模型与GCN、GraphSage的信息传播不同。KGAT不仅能够利用图的临近结构,还能够指出各个邻居的重要性

GAT仅仅将节点的表示作为输入,而KGAT对 e h e_h eh e t e_t et之间的关系 e r e_r er进行建模,在传播的过程中编码了更多信息

Information Aggregation

最后阶段是聚合实体的表示 e h e_h eh、它的ego-network表示 e N h e_{N_h} eNh,作为实体h的新的表示,记作: e h ( 1 ) = f ( e h , e N h ) e_h^{(1)} = f(e_h , e_{N_h}) eh(1)=f(eh,eNh)

使用3种aggregator来实现f():

  1. GCN Aggregator:

    将2个表示进行累加,再应用1个非线性变换

    f G C N = L e a k y R e L U ( W ( e h + e N h ) ) f_{GCN} = LeakyReLU(W(e_h + e_{N_h})) fGCN=LeakyReLU(W(eh+eNh))

    其中W是可训练的权重矩阵,用于提炼有用的传播信息

  2. GraphSage Aggregator:

    将2个表示进行拼接

    f G r a p h S a g e = L e a k y R e L U ( W ( e h ∣ ∣ e N h ) ) f_{GraphSage} = LeakyReLU(W(e_h || e_{N_h})) fGraphSage=LeakyReLU(W(eheNh))

    其中||是拼接操作

  3. Bi-Interaction Aggregator:

    考虑了 e h e_h eh e N h e_{N_h} eNh之间的2种特征交互

    f B i − I n t e r a c t i o n = L e a k y R e L U ( W 1 ( e h + e N h ) ) + L e a k y R e L U ( W 2 ( e h ⊙ e N h ) ) f_{Bi-Interaction} = LeakyReLU(W_1(e_h + e_{N_h})) + LeakyReLU(W_2(e_h ⊙ e_{N_h})) fBiInteraction=LeakyReLU(W1(eh+eNh))+LeakyReLU(W2(eheNh))

    W是可训练的权重矩阵,⊙表示element-wise product

    与GCN、GraphSage不同,Bi-Interaction还对 e h e_h eh e N h e_{N_h} eNh之间的特征交互进行 编码。(这使得要传播的信息对 e h e_h eh e N h e_{N_h} eNh之间的affinity敏感,可以从相似实体传递更多的消息)

总结:

embedding propagation layer的优点在于,可以探索相关user、item、实体表示的 first-order connectivity information。

High-order Propagation

堆叠更多的propagation layers,以探索high-order connectivity information,收集从更高跳的邻居传播的信息。

递归地定义第 l l l步中的1个实体的表示:

e h ( l ) = f ( e h ( l − 1 ) , e N h ( l − 1 ) ) e_h^{(l)} = f(e_h^{(l-1)} , e_{N_h}^{(l-1)}) eh(l)=f(eh(l1),eNh(l1))

其中,实体h的information propagated within l-ego network定义如下:

e N h ( l − 1 ) ) = ∑ π ( h , r , t ) e t ( l − 1 ) e_{N_h}^{(l-1)}) = \sum \pi(h,r,t) e_t^{(l-1)} eNh(l1))=π(h,r,t)et(l1)

e t ( l − 1 ) e_t^{(l-1)} et(l1)是从先前information propagation步骤中生成的实体 t t t的表示,记忆了它的 ( l − 1 ) (l-1) (l1)跳邻居的信息;在初始information-propagation iteration, e h ( 0 ) e_h^{(0)} eh(0)被设置为 e h e_h eh。得到的结果继续为第 l l l层的实体 h h h表示做贡献。

最终,可以在embedding propagation process中,捕捉到形如 u 2 ⟶ r 1 i 2 ⟶ − r 2 e 1 ⟶ i 1 r 2 ⟶ − r 1 u 1 u_2 \stackrel{r_1}{\longrightarrow} i_2 \stackrel{-r_2}{\longrightarrow} e_1 \stackrel{r_2} {\longrightarrow i_1} {\stackrel{-r_1}{\longrightarrow} u_1} u2r1i2r2e1i1r2r1u1的高阶连接性。此外,来自 u 2 u_2 u2的信息被编码在 e u 1 ( 3 ) e_{u_1}^{(3)} eu1(3)当中。

3. Model Prediction

在执行L层之后,可以得到user节点 u u u的多重表示,记作 { e u ( 1 ) , . . . , e u ( L ) } \{e_u^{(1)}, ..., e_u^{(L)}\} {eu(1),...,eu(L)};类似的可以得到item节点 i i i的多重表示 { e i ( 1 ) , . . . , e i ( L ) } \{e_i^{(1)}, ..., e_i^{(L)}\} {ei(1),...,ei(L)}

因为** l l l层的输出**是 深度为 l l l的、以 u u u i i i为根的树形结构的消息聚合的结果(如图1

所示),所以不同层的输出强调了不同顺序的连接性信息。

所以采用layer-aggregation mechanism来将每一步的表示级联成单个向量:

e u ∗ = e u ( 0 ) ∣ ∣ . . . ∣ ∣ e u ( L ) e_u^* = e_u^{(0)}||...||e_u^{(L)} eu=eu(0)...eu(L) e i ∗ = e i ( 0 ) ∣ ∣ . . . ∣ ∣ e i ( L ) e_i^* = e_i^{(0)}||...||e_i^{(L)} ei=ei(0)...ei(L),其中 ∣ ∣ || 为级联操作

这样做,不仅能够通过执行embedding propagation操作,丰富初始embedding;还能够通过调整 L L L,控制传播的强度。

最终,对user、item的表示做内积,预测出它们的匹配分数:

y ^ ( u , i ) = e u ∗ ⊤ e i ∗ \hat{y}(u,i) = e_u^{*\top} e_i^* y^(u,i)=euei

你可能感兴趣的:(KG,RecSys,推荐系统,知识图谱)