复现KGAT: Knowledge Graph Attention Network for Recommendation(二)

复现KGAT: Knowledge Graph Attention Network for Recommendation(二)

事情真是多啊。上篇博客8号写的,隔了3天才写第二篇。读篇文章也真是不容易啊,虽然读这篇文章已经算是我重要且紧急的任务了,但是还有很多事情不得不做,只能是抓紧时间再抓紧时间了。

2.TASK FORMULATION

文章首先介绍了CKG(collaborative knowledge graph,就是figure 1介绍的结构),还强调了节点时间的high-order关系以及组成关系。

User-Item bipartite Graph(用户-物品二部图):推荐场景下,我们常常有历史用户-物品的交互信息(比如说,购买记录,点击记录)。我们将这种交互数据用用户-物品二部图表示出来,二部图G1定义为:
在这里插入图片描述
其中U是用户集,I是项目集,yui为1表示用户u和物品i有交互,yui=0表示用户u和i无交互。

Knowlegde Graph(知识图谱):除了交互信息,我们还有物品的side information,比如物品属性和外部知识。通常,这种辅助数据由真实世界实体和他们之间的关系去表示一个物品。比如,一部电影可以由他的导演、演员和类型来描述。我们用知识图谱G2来表示side information,这个知识图谱是由subject-property(属性)-object三元组构成的有向图。在形式上,三元组可以表示为:
在这里插入图片描述
每个三元组描述了从头实体h到尾实体t的关系r。比如说从休杰克曼到电影Logan有出演的关系,从Logan到休杰克曼有被出演的关系,这两种关系是相反的。Moreover,我们建立了一个物品实体集:
在这里插入图片描述
其中i、e都是物品,且在这个实体集中的i、e表示可以在KG中相互对齐。

Collaborative Knowledge Graph(协同知识图谱):CKG是将用户的行为和物品的信息编码成一个整体的关系图。首先将用户行为表示为一个三元组:
在这里插入图片描述
其中yui=1表示用户u和物品i之间额外的交互关系。然后基于item-entity alignment set,用户-物品图可以被集成为如下的图:
在这里插入图片描述
Task Description:这篇文章中需要被解决的推荐任务为:
1.输入:CKG G包括了用户-物品的二分图G1和知识图谱G2。
2.输出:预测函数,可以预测用户u会采用物品i的可能性yui^。
High-Order Connectivity:探索high-order connectivity对于高质量的推荐有很大的重要性。形式上将两个节点间的L-order 连接定义为一个多跳路径:
在这里插入图片描述

其中,在这里插入图片描述
(el-1,rl,el)是第l个三元组,L是序列的长度。为了推断用户偏好,CF建立在用户之间行为相似性之上,具体地说就是,相似的用户会对物品表现出类似的偏好。这种直觉可以表示为基于行为的关联,比如:
在这里插入图片描述
这个关系表示了u1会在i2上表示偏好,因为与他相似的用户u2之前采用了i2。和CF方法不同的是,SL模型,比如说FM和NFM专注于基于属性的关系,假设了用户采用的物品都是相似的属性。比如说,在这里插入图片描述
用户u1会采用i2,因为i2对于e1和i1有相同的方向。然而,FM和NFM对待实体使用的是在特征域中的价值,没在不同域和不同实例之间建立关联关系。比如说,对上面那张图,这种方法就不能建立出这个关系模型,尽管e1在导演和演员领域之间建立了桥梁。因此我们得到这种方法不能充分探索high-order 的关联关系,也不能影响组合中的高阶关系。

3.METHODOLOGY

我们以端到端的方式利用了高阶关系(high-order relations)提出了KGAT模型。
复现KGAT: Knowledge Graph Attention Network for Recommendation(二)_第1张图片
figure2展示了模型框架,包括了三个主要部分:
1)嵌入层 embedding layer,通过保留CKG的结构将每个节点参数化一个向量。
2)专注的嵌入传播层attentive embedding propagation layers,从一个节点的邻居递归的传播embedding来更新他的表示,并且部署了konwledge-aware attention机制去学习传播过程中每个邻居的权重。
3)预测层prediction layer,从传播层聚集了用户user和item的表示,输出为预测的匹配分数。

3.1 Embedding Layer

知识图谱的嵌入层能够有效的将实体和关系参数化为向量表示,同时保持图结构。这里我们使用TransR(一个在CKG中广泛使用的方法)。具体点说,如果一个三元组(h,r,t)存在图,它通过优化翻译原理(translation principle)来学习嵌入每一个实体和关系。如下图所示:
在这里插入图片描述
在这里,eh,et属于Rd,er属于Rk分别是h、t、r的嵌入,并且ehr、eht是eh、et在关系空间r中的投影表示。因此,对于给定的三元组(h,r,t)他的合理性得分plausibility score(或是能量分数energy score)有如下表示:
在这里插入图片描述
其中在这里插入图片描述
是关系r的传播矩阵,将实体从d维空间投射到k维空间。一个低的plausibility score表示该三元组更容易是真的,vice versa。
TransR的训练考虑了有效三元组和无效三元组之间的相关关系,并且使用了pairwise ranking loss加以惩罚。
损失函数可以表示为:
在这里插入图片描述
其中,在这里插入图片描述
(h,r,t‘)是由将有效三元组替代一个实体随机构造出来的。
在这里插入图片描述
是sigmoid 函数。
这一层(Embedding layer)根据三元组的力度对实体和关系进行了建模。该层作为一个正则化器工作,并将直接连接注入到表示中,因此增加了模型的表现能力。

3.2 Attentive Embedding Propagation Layers

专注嵌入传播层。
接下来我们基于图卷积网络递归地在高阶连接中传播嵌入。更多的,通过探索graph attention network的想法, 我们生成了级联传播的注意权重揭示了这样连接的重要性。这里我们从描述单一层开始,其中包含了三个内容:
information propagation、knowledge-aware attention和information aggregation。然后讨论如何将他们推广到多层传播中去。

Information Propagation:一个实体可以被包括在多个三元组中,充当两个三元组和传播信息的桥梁。考虑以下两个关系:
在这里插入图片描述
在这里插入图片描述
物品i2以属性e1和e2作为输入来丰富它自己的特性,然后对用户u2的偏好做出了贡献,这个过程可以被从e1到u2传播信息来模拟。基于这个直觉我们可以在实体和他的邻居之间表现信息传播。
我们使用集合Nh来表示h作为头实体的三元组的集合。Nh被称为ego-network,Nh的表示如下:
在这里插入图片描述
描述实体h的一阶连通性结构,我们计算了h的ego-network的线性组合:
在这里插入图片描述
其中,pai(h,r,t)控制了边(h,r,t)在每一次传播上的衰减因子,衰减因子表示了在关系是r的条件下从h到t有多少信息被传播了。
Knowledge-aware Attention:我们通过关系的注意机制实施了pai(h,r,t),可以被写为如下形式:
在这里插入图片描述
其中选用了tanh作为了非线性的激活函数,这使得注意分数(attention score)依赖于在关系r的空间中eh和et的距离。比如说,更近的实体之间可以传播更多的信息。值得注意的是,为了简化计算,我们只在这些表示上使用了内积,并且将更多的关于注意力的模型的探索看作是未来的工作。
今后,我们使用softmax函数来表示和h有关的所有三元组的系数。softmax函数如下:
在这里插入图片描述
最后的attention score可以表示哪一个节点需要被给予更多的关注以捕获协同信号。当执行正向传播时,attention flow表明了哪一部分的数据需要被关注,那一部分的需要被当作推荐后的解释。

和GCN、GraphSage中使用折扣因素(见下图)来进行信息传播不同的是,我们的模型中不仅利用了图的接近性结构,同时还特地区分了邻居的重要性。更多的,和graph attention network只把节点表示作为输入不同的是,我们将eh和et之间的关系er也进行了建模,将更多的信息在传播中进行了编码。我们使用实验证明了attention机制的有效性,并且在4.4.3和4.5部分分别可视化了attention flow。

Information Aggregation(信息聚集):最后一个阶段是对实体表示形式eh和他的ego-network表示enh的集合,作为实体h的一个新的表示。更正式的表示是,eh=f(eh,enh)我们用以下三个聚集函数的类型来表示f()。
1)GCN Aggregator:将eh,enh加起来,然后应用一个非线性转换。
在这里插入图片描述
使用LeakyReLU作为激活函数,W是d’*d维度的权重矩阵,d‘是传递大小。
2)GraphSage Aggregator:连接eh和enh,然后使用非线性激活函数。
在这里插入图片描述
||是连接符号。
3)Bi-Interaction Aggregator:考虑了eh和enh之间两种操作的函数,如下:
在这里插入图片描述
其中W1和W2都是d’*d维度的训练矩阵,⭕表示的是元素对元素的内积。和GCN、GraphSage aggregators不同的是,我们额外对eh和enh之间的特征交互进行了编码。这种方式使被传播的信息对eh和enh之间的关联关系很敏感。比如说,从相似的实体之间传递更多的信息。

总结一下,嵌入传播层的优势在于显示地利用一阶连接信息将用户、物品和知识实体表示连接起来。我们在4.4.2部分对三个聚合器进行了经验比较。

**High-order Propagation:**我们可以堆叠更多的传播层以获得高阶连接信息,聚集从多跳邻居处传播过来的信息。更正式的,在第l步,我们递归地将实体表示形式写为:
在这里插入图片描述
其中,实体h在l-ego网络中信息传播定义如下:
在这里插入图片描述
et(l-1)表示从前面信息传播步骤得到的实体t的表示,记录了从他的l-1跳邻居处的信息。eh(0)表示的是初始迭代步骤的信息。他为实体h在l层的表现提供信息。作为结果(如下图),高阶连接可以在嵌入传播过程中被捕捉到。此外,u2的信息已经被显式编码在了eu1(3)中。显然,高阶嵌入传播无缝的将基于属性的协作信号无缝的注入到表示学习过程中。
在这里插入图片描述

3.3 Model Prediction

在执行了L层后,我们获得了多个用户节点u的表示:
在这里插入图片描述
类似的,物品节点i表示为:
在这里插入图片描述
l层的输出是树结构的信息聚集,这个树的深度为l层,以u为根,如图1所示。不同层的输出强调了不同级的关联信息。我们因此采取了层聚集机制(layer-aggregation mechanism)将每一步的表示连接成一个单独的向量,如下所示:
在这里插入图片描述
其中||是连接操作。这样做,我们通过执行嵌入传播操作丰富了初始嵌入,同时通过调整L可以控制传播长度。

最后,我们对用户和物品的表示执行内积操作,也就是预测他们的匹配分数:
在这里插入图片描述

3.4 Optimization

为了优化推荐模型,我们选用BPR损失。特别的,BPR假定了观察到了交互分数要高于未交互的分数,因为交互可以带来更多的信息。损失表示如下:
在这里插入图片描述
其中O表示的集合为:
在这里插入图片描述
该集合提供了训练集,R+表示观测到的数据,R-是从为观测到的数据中采样,使用sigmoid()作为激活函数。

最后,目标函数如下:
在这里插入图片描述
其中theta是参数集合。
在这里插入图片描述
值得指出的是,根据模型的大小,模型参数主要来自实体嵌入(eg. 在Amazon数据集上是650万),几乎与FM的大小相等了。传播层的权重较少(在三层塔形结构上有5400,也就是在Amazon数据集上为64-32-16-8)。

3.4.1 Training:使用mini-batch Adam来分别优化嵌入层和预测层的LKG和LCF损失。Adam是很常用的优化器,能够适应性的控制学习率,关于梯度的绝对值。特别的,对于一个随机采样的(h,r,t,t‘)的batch,我们更新所有节点的embedding;因此我们随机采样了(u,i,j)的batch,在L步传播后恢复了他们的表现,并且通过使用预测loss的梯度更新模型参数。
3.4.2 Time Complexity Analysis:当我们采用替代的优化策略时,时间成本主要来自两个部分。对于知识图谱的嵌入(等式2,如下第一张图),传播准则有计算复杂度O(|G2|d^2)(如下第二张图)
在这里插入图片描述
在这里插入图片描述
对于关注度嵌入传播部分,在第l层矩阵乘法有计算复杂度如下:
在这里插入图片描述
其中dl和dl-1是现在和过去的传播大小。对于最终的预测层,只有内积被计算了,对于整个训练迭代的时间花费为:

最后,KGAT总的训练复杂度为:

在这里插入图片描述
由于在线服务通常需要实时推荐,因此推荐过程中的计算成本比训练阶段更重要。根据经验分析,FM、NFM、CFKG、CKE、GCMC、KGAT、MCRec和RippleNet在Amazon-Book数据集上对于测试样例大约需要花费700s,780s,800s,420s,500s,560s,20hours和2hours。正如我们看到的,KGAT达到了和SL模型(FM和NFM)和基于正则化的方法(CFKG和CKE)差不多的计算复杂度,比基于路径的方法(MCRec和RippleNet)更有效率。

总结

提示:这里对文章进行总结:
例如:以上就是今天要讲的内容,本文仅仅简单介绍了pandas的使用,而pandas提供了大量能使我们快速便捷地处理数据的函数和方法。

你可能感兴趣的:(复现KGAT: Knowledge Graph Attention Network for Recommendation(二))