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关系建模中的挑战:
- 递归嵌入传播recursive embedding propagation:基于某个节点的邻居embedding,更新该节点的embedding;递归地执行这个传播来捕捉high-order connectivities in a linear time complexity
- 基于注意力的聚合 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 e0⟶r1e1⟶r2...⟶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) (el−1,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 u1⟶r1i1⟶−r1u2⟶r1i2,这表明了 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 u1⟶r1i1⟶r2e1⟶−r2i2,表明 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个组件:
- embedding layer:通过保留CKG的结构,将每个节点参数化为一个向量
- attentive embedding propagation layers:以递归的方式传递一个节点的邻居的embedding,以更新该节点自身的表示;并且采用注意力机制,在传播过程中学习每个邻居的权重
- 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+er≈etr来学习嵌入每个实体、关系。这里的 e h 和 e t e_h和e_t eh和et是h、t的embedding, e h r 和 e t r e_h^r和e_t^r ehr和etr是 e h 和 e t e_h和e_t eh和et在关系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+er−Wret∣∣22,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 e1⟶r2i2⟶−r1u2
e 2 ⟶ r 3 i 2 ⟶ − r 1 u 2 e_2 \stackrel{r_3}{\longrightarrow} i_2 \stackrel{-r_1}{\longrightarrow} u_2 e2⟶r3i2⟶−r1u2
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():
-
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是可训练的权重矩阵,用于提炼有用的传播信息
-
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(eh∣∣eNh))
其中||是拼接操作
-
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})) fBi−Interaction=LeakyReLU(W1(eh+eNh))+LeakyReLU(W2(eh⊙eNh))
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(l−1),eNh(l−1))
其中,实体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(l−1))=∑π(h,r,t)et(l−1)
e t ( l − 1 ) e_t^{(l-1)} et(l−1)是从先前information propagation步骤中生成的实体 t t t的表示,记忆了它的 ( l − 1 ) (l-1) (l−1)跳邻居的信息;在初始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} u2⟶r1i2⟶−r2e1⟶i1r2⟶−r1u1的高阶连接性。此外,来自 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)=eu∗⊤ei∗