代码地址: https://github.com/xiangwang1223/knowledge_graph_attention_network.
介绍
CF方法具有有效性和通用性,但它无法对诸如项目属性、用户配置文件和上下文等辅助信息进行建模,因此在用户和项目很少交互的稀疏情况下,CF方法的性能很差。为了整合这些信息, ** 一种常见的方法是将它们与用户ID和项目ID一起转换成一个通用的特征向量,并将它们输入到一个监督学习(SL)模型中来预测分数。** 这样的SL推荐范式已经在业界得到了广泛的应用。有代表性的模型有因式分解机(FM)、NFM(neural FM)、Wide&Deep和xDeepFM等。
尽管这些方法提供了强大的性能,但不足之处在于它们将每个交互作为独立的数据实例进行建模,而没有考虑它们之间的关系。这使得它们不足以从用户的集体行为中提取基于属性的协作信号。如图1所示
如图1所示,user u1和movie i1之间有一个交互,由person e1指导。CF方法关注同样观看i1的相似用户的历史,即u4和u5;而SL方法则强调属性为i1的相似项目,即i2。显然,这两类信息不仅对推荐是互补的,同时也形成了目标用户和物品之间的高阶关系。然而,现有的SL方法并没有将二者统一起来,不能考虑高阶连通性,如黄圈内的用户观看同一人导演的其他电影,或灰色圈中的项目与e1有着其他共同关系。
为了解决基于特征的SL模型的局限性,一种解决方案是采用项目侧信息图(aka)。考虑知识图1,构建预测模型。将知识图和用户项图的混合结构称为协同知识图(CKG)。如图1所示,成功推荐的关键是充分利用CKG中的高阶关系,例如,远程连接性:
发现问题
目前,利用协同知识图谱(CKG, collaborative knowledge graph)进行推荐的工作可以分为两大类:
Path-based methods
在KG中提取携带高阶信息(high-order relation)的路径,并将其输入预测模型。为了解决两个节点间存在大量路径的问题,有两种方法:
①应用路径选择算法来选择突出的路径。
缺点:没有针对推荐问题进行路径选择算法的优化
②自定义元路径模式来约束路径
缺点:需领域知识来定义元路径,工作量很大
Regularization-based methods
设计附加的损失项来捕获KG结构,使推荐模型学习规范化。
缺点:由于这些方法是通过隐式编码的方式将高阶信息引入推荐模型中,缺乏明确的建模,导致难以捕获high-order relation,且缺乏一定的解释性。
针对目前存在的问题,该研究提出了KGAT模型。其主要有两个特点:
①递归的Embedding传播机制(GraphSAGE)
通过邻居节点来更新当前节点的表示,并且该算法能够在线性的时间复杂度上进行递归来捕获高阶连接性(high-order connectivities)。
②基于注意的聚合
利用注意力机制来学习传播过程中每个邻居的权重,使得这种权重可以揭示不同高阶连通的重要程度。
优越性:
避免了Path-based中提取路径工作量大的问题
避免了高阶相关性无法捕获的问题:显式地将高阶关系纳入预测模型,对所有相关参数进行定制以优化推荐目标。
问题定义
CKG可以视为 知识图谱(物品间的连接)和 用户-物品二部图(主要是用户和物品的交互)的统一。
高阶连通性
利用高阶连通性是实现高质量推荐的重要手段。形式上,我们将节点间的L阶连通性定义为一条多跳关系路径:
现有的CF和监督学习方法不能挖掘出这种高阶连接。
如下图所示,当用户
u
1
u_1
u1和电影
i
1
i_1
i1之间有交互时,协同过滤的方法关注也观看过该电影
i
1
i_1
i1
的相似用户,即
u
4
u_4
u4 和
u
5
u_5
u5 ;
而监督学习方法(如FM、NFM等)则强调具有属性
e
1
e_1
e1
的相似物品,即
i
2
i_2
i2 。
方法
KGAT模型如下图所示,主要包含三个部分:
Embedding Layer:通过保留CKG的结构将每个节点参数化为一个向量。
方法:TransR,优化:
e
h
e_h
eh和
e
t
e_t
et分别为头实体和尾实体在关系空间r上的投影表示。所以得分为:
W自然就是转移矩阵,大小为d×k。得分越低,意味着三元组越真实。反之亦然。通过有效三元组和无效三元组进行区分的思想,训练成对损失函数如下。该层相当于知识表示的regularizar,提升了模型的表示能力。
Attentive Embedding Propogation Layer
递归地传播节点邻居的Embedding信息以更新其表示,并利用知识感知的注意力机制在传播过程中学习每个邻居的权值
Information Propagation
对于实体h(head entity),通过 N
h
_h
h={(h,r,t)∣(h,r,t)∈G} 表示三元组集合,称为ego-network。通过如下公式,这种线性组合的思想刻画了实体h的一阶连接结构。
其中π(h,r,t)控制在关系(h, r, t)中实体间传播的衰减系数,其作用是:显示出通过关系r有多少信息能够从t传播到h。
Prediction Layer:集成来自所有传播层的用户和物品的表示,并输出相应的预测评分
通过注意力机制对π(h,r,t)公式化如下。在relation上距离更近的实体间会传递更多的信息。
通过softmax函数对所有与h相连的三元组的系数进行归一化
因此,最终的注意力得分能够提示哪些邻居节点应该被更多的关注来捕捉协作信号。
Information Aggregation
该模块的作用:将前两层的结果(实体表示e
h
_h
h和 ego-network表示 e
N
_N
N
h
_h
h)进行集成,作为实体h新的表示形式:
- GCN Aggregator:
- GraphSage Aggregator
||为串联操作(变为长向量) - Bi-Interaction Aggregator
多层传播
在第l步中,我们递归地将实体的表示形式表示为:
e l ^l l − ^- − 1 ^1 1是实体h在 l l l−1层中的表示:通过上一步的信息传播,在 l l l−1层中获取到的邻居信息得到的实体表示。
e l ^l l − ^- − 1 ^1 1 N _N N h _h h表示:对于实体h,在l层的ego-network上传播的信息:
Model Prediction
其中,用户和物品表示是通过layer-aggregation机制,将不同层的输出所强调的连接信息进行集成:
Optimization
通过BPR损失函数对推荐模型进行优化。优化的intuition是:观察到的交互表示出用户的偏好,那么相应就应该有更高的预测评分。
结合KG的损失,得到最终目标函数:
训练
Adam:
于一批随机抽样的(h,r,t,t′),我们更新所有节点的嵌入;此后,我们随机抽样一批(u,i,j),经过L步传播后检索它们的表示,然后利用预测损失的梯度来更新模型参数。
实验
- RQ1:与最先进的知识感知推荐方法相比,KGAT的表现如何?
- RQ2:不同组件(即知识图嵌入、注意力机制和聚合器选择)如何影响KGAT?
- RQ3:KGAT能否就用户对物品的偏好提供合理解释?
数据集
http://jmcauley.ucsd.edu/data/amazon/
https://grouplens.org/datasets/hetrec-2011/
对于每个数据集,我们随机选取每个用户80%的交互历史作为训练集,剩余的作为测试集。从训练集中,我们随机选取10%的交互作用作为验证集来调整超参数。对于每个观察到的用户-项目交互,我们将其视为一个正实例,然后执行负采样策略,将其与一个用户之前没有消费的负项目配对。
KG建立:Wayne Xin Zhao, Gaole He, Hong-Jian Dou, Jin Huang, Siqi Ouyang, and Ji-Rong
Wen. 2018. KB4Rec: A Dataset for Linking Knowledge Bases with Recommender
Systems. CoRR abs/1807.11141 (2018)
w/o表示禁用