【论文笔记】AKGE:基于注意力知识图谱嵌入的个性化推荐系统

Sha, X. , Sun, Z. , & Zhang, J. . (2019). Attentive knowledge graph embedding for personalized recommendation.


原文:https://arxiv.org/pdf/1910.08288.pdf




1 introduction

知识图谱(KG)已经被广泛用于推荐系统中,但是主要思路仍集中于以下两个方向:

  • 基于路径提取的思路(path-based methods):有的是要求人手动设计 meta-path / meta-graph,有的集中于寻找 user 和 item 之间的线性的路径联系。缺点在于只是利用异构信息网路将 side information 引入了推荐系统,但是本质上 linear path 的信息十分有限,特别是和本文提出的包含高阶关系的子图相比,其不能够较好地挖掘整个 KG 的语义信息和拓扑结构信息。
  • 基于传播的思路(propagation-based methods):在整个 KG 上通过传播的方式(propagate)传递用户的偏好,再得到用户的表示 embedding。较为经典的就是 RippleNet(RippleNet 论文笔记)和 KGAT(KGAT 论文笔记),KGCN 类似(KGCN论文笔记)。虽然一定程度上可以捕捉到语义信息和拓扑结构信息,传播的时候往往出现重合的问题,也就是若将过多跳的信息加入当前 item 的模型计算,反而容易向模型中引入噪音,故其在类似于 yelp 的较为 dense 的数据集上表现不佳(详见 RippleNet 原文作者的解释)。

而原文所提出的 基于注意力知识图谱嵌入的推荐系统(AKGE) 可以同时关注知识图谱对应的语义信息和拓扑信息:作为端到端训练的神经网络,首先提取包含语义信息的,连接 item 和 user 的高阶关系的子图,再利用注意力机制,基于子图学习用户偏好。

利用高阶子图的好处主要有:

  • 涉及了高阶关系的子图本质上可以看作是非线性路径(nonlinear path )的一个组合(combination),也就是说相较于普通的路径提取,此时可以更好地挖掘整个 KG 的语义信息与拓扑结构信息
  • 本身一个特定高阶子图对应一个(用户 - 物品 pair),也就是说此时可以一定程度上避免直接在整个 KG 上进行传播的算法造成的引入噪音的问题,不同的 use-item interaction 对应的是不同的高阶子图。

但是这里同样为整个模型提出了挑战:如何去提取挖掘这样的高阶子图,特别是在 KG 本身的 entity 较多,本身就给整个模型计算带来巨大计算开销的情况下。本文提出 距离感知抽样策略(distance-aware sampling strategy) 来帮助构造 item 和 user 之间关系的高阶子图。

另一个问题就是如何利用提取出的高阶子图来进行 encode,这里采用 图神经网络( graph neural networks / GNNs) 来对子图进行 embedding。子图的非欧几里德结构适合应用 GNN。但是注意到,在 GNN 中所有的邻居都会被平等对待,为了强调不同的权重,在这里同时加入 注意力机制 。(这里的思路类似 KGAT (KGAT 论文笔记),在 KGAT 中,考察某一个结点的邻域表示时,利用注意力机制赋予不同的邻居不同的权重。)主要包括两个部分:关系感知的传播(relation-aware propagation)注意力聚合(attentive aggregation)




2 模型解释


整体模型结构如下:
【论文笔记】AKGE:基于注意力知识图谱嵌入的个性化推荐系统_第1张图片

注意此时本质上是输入一个 user 和一个 item( 比如这里就是给定了 mike 和 k记),首先提取它俩之间的一个子图(不是单纯的 线性path,而是一个子图),再通过这个子图计算 mike 和 k记 的 embedding,再通过正常的 MLP 预测 mike 点击 k 记的概率。



2.1 构建子图

这里不再使用传统的 BFS / DFS 在整个 KG 上进行搜索,采用效率更高的 距离感知抽样策略(distance-aware sampling strategy)

对于传统的基于 meta-path 和 meta-graph 的方法,此时需要人工设计路径来使用,本身不全面且有效性有待商榷。

首先得到 KG 中所有实体的一个 embedding (像预训练一样,这里可以用 Trans 系列的方法,原论文用的是 TransR,并且在实验部分证明了 TransR 预训练的效果比较好),则此时可以通过欧几里得距离来衡量两个 entity 之间的距离。同理,对于任意两个 entity 之间的任意一条的 path,可以将 path 上每一步的两个 entity 的距离算出来,再求和作为这个 path 的距离。

对于给定的两个 entity ,仅保留最后的 K 条最短的路径构成二者之间的子图(subgraph)。注意这里和 DFS / BFS 之间的区别在于本身通过距离进行了筛选,而不是单纯地保留了所有的邻居。


得到 K 条最短的 path 后,需要进行 路径装配(Path Assembling)
【论文笔记】AKGE:基于注意力知识图谱嵌入的个性化推荐系统_第2张图片
也就是将得到的 K 条路径装配起来,得到一个子图。同理可以得到其对应的邻接矩阵(adjacency matrix),注意这里得到的子图是一个无向图,也就是说不再确定 relationship 所指向的方向。



2.2 结合注意力机制的图神经网络 AGNN

这里的 AGNN 本质上是对 GGNN 的一个改进(gated graph neural network),AGNN 可以用于异构图上,而 GGNN 需要各个结点的类型相同(也就是同质图)

AGNN 分为以下四个步骤:

  • 实体映射(entity projection):将实体的 embedding 和实体类型的 embedding 进行结合,得到融合了类型信息的实体的 embedding,即 h l 0 h_l^0 hl0
  • 关系感知传播(relation-aware propagation):对于第 t 轮迭代,通过实体 l 和它的邻居 e 之间的关系 r,计算 l 的邻居实体 e 的临时隐藏状态 h ^ k t \hat{h}_k^t h^kt
  • 注意力聚合(attentive aggregation):通过注意力机制分配权重,将实体 l 邻居 e 的临时隐藏状态 h ^ k t \hat{h}_k^t h^kt 通过某种方式进行聚合。
  • 门控更新(gated update):用注意力聚合的结果,经过门控机制来更新实体 l 的 embedding 表示。

2.2.1 实体映射(entity projection)

此时输入的是构造好的子图 G \mathcal{G} G 和对应的邻接矩阵 A A A,将图中的各个实体和其对应的类型进行拼接。

这里的 embedding 预训练由 TransR 完成。记实体 entity 的 embedding 是 e l e_l el,记实体类型 entity type 的 embedding 为 e l ′ e'_l el,则此时直接进行拼接: h l 0 = e ^ l = f ( e l   ⊕   e l ′ ) ;    f ( x ) = σ ( W x + b ) h_l^0 = \hat{e}_l = f(e_l \text{ }\oplus\text{ }e_l'); \text{ }\text{ } f(x) = \sigma(Wx+b) hl0=e^l=f(el  el);  f(x)=σ(Wx+b) 注意这里的 entity 和 entity type 的 embedding 可以是不同维度的(总之只是作拼接操作),最后得到的 h l 0 = e ^ l h_l^0 = \hat{e}_l hl0=e^l 也就是融合了类型信息的实体的 embedding,这也是和 GNN 不同的地方。
【论文笔记】AKGE:基于注意力知识图谱嵌入的个性化推荐系统_第3张图片


2.2.2 关系感知传播(relation-aware propagation)

类似传播的思路,此时利用邻域的信息和原本信息的聚合(aggregation)来不断更新实体 e 的 embedding

对于当前的实体 l,考虑它的邻居 k,令 r l , k r_{l,k} rl,k 表示二者之间的关系,此时通过前面的实体映射已经得到了 t=0 时的实体 ek 的隐藏状态 h k 0 h_k^0 hk0

对于一个特定的 t,此时通过 h k t h_k^t hkt 来计算 h ^ k t \hat{h}_k^t h^kt h ^ k t = g ( h k t   ⊕   r l , k ) ,   e k ∈ N l ,   g ( x ) = σ ( W x + b ) \hat{h}_k^t = g(h_k^t \text{ }\oplus\text{ }r_{l,k}), \text{ } e_k\in N_l, \text{ }g(x) = \sigma(Wx + b) h^kt=g(hkt  rl,k), ekNl, g(x)=σ(Wx+b)这里的 N ( l ) N(l) N(l) 也就是 l l l 的所有的邻居实体的集合。


2.2.3 注意力聚合(attentive aggregation)

此时用注意力机制分配权重,将实体 l 的所有邻居实体 e 的 embedding 进行聚合。得到结合了注意力机制的实体 l 的隐藏状态,记作 a l t a_l^t alt a l t = ( A s l ⊙ Q l t ) [ h ^ 1 t − 1 , . . . , h ^ ∣ E s ∣ t − 1 ] T + b a_l^t = (A_{sl} \odot Q_l^t) [\hat{h}_1^{t-1}, ..., \hat{h}_{|\mathcal{E}_s|}^{t-1}]^T + b alt=(AslQlt)[h^1t1,...,h^Est1]T+b这里的 A 是输入的子图对应的邻接矩阵(0-1),A_sl 表示 A 中对应实体 l 的那一行向量,Ql 是注意力权重矩阵(后续会说怎么算), E s \mathcal{E}_s Es 是子图中所有结点的集合, ⊙ \odot 表示哈达玛积。

如果此时实体 e 和当前实体 l 并没有联系,则 Q 注意力权重和邻接矩阵 A 的对应位置都是 0。

现在来看 Q 注意力权重矩阵怎么算,本身用于衡量实体 l 的不同邻居 e 对于实体 l 的重要程度。这里和注意力机制的原理相同,还是利用一个两层的全连接层进行计算,最后通过 softmax 进行归一化。 α l , k t = W 2 T ( W 1 [ h ^ k t − 1 ⊕ h l t − 1 ] + b 1 ) + b 2 \alpha_{l,k}^t = W_2^T(W_1[\hat{h}_k^{t-1}\oplus h_l^{t-1}]+b_1)+b_2 αl,kt=W2T(W1[h^kt1hlt1]+b1)+b2 q l , k t = e x p ( α l , k t ) ∑ e j ∈ N l e x p ( α l , k t ) q_{l,k}^t = \frac{exp(\alpha_{l,k}^t )}{\sum_{e_j\in N_l}{exp(\alpha_{l,k}^t )}} ql,kt=ejNlexp(αl,kt)exp(αl,kt)

注意这里衡量邻居 e 对实体 l 的重要程度,用的是经过了 关系感知传播 后的 k 的隐藏状态 h ^ k t − 1 \hat{h}_k^{t-1} h^kt1 和上一个完整步后得到的 h l t − 1 h_l^{t-1} hlt1

则此时可以得到注意力权重矩阵 Q


2.2.4 门控更新(gated update)

也就是利用上面得到的 α l t \alpha_l^t αlt 经过门控机制来更新实体 l 的embedding,最终得到 h l t + 1 h_l^{t+1} hlt+1

先看更新门 z 和重置门 r:
【论文笔记】AKGE:基于注意力知识图谱嵌入的个性化推荐系统_第4张图片
这里是同时用到注意力机制后得到的 alpha 和本身在上一步的 embedding h 的

具体更新:
【论文笔记】AKGE:基于注意力知识图谱嵌入的个性化推荐系统_第5张图片


summary 再整体看看 AGNN 部分的流程:

本质就是先从前一步提取中的子图中,利用 TransR 先得到的预训练 embedding 和实体类型的结合进行 实体映射,以得到初始的隐状态。

再通过 关系感知传播 来计算邻居实体的临时隐藏状态,进一步结合注意力机制分配权重的思想,通过 注意力聚合 将上一步得到的邻居实体的状态进行加权聚合,最后通过门控机制,以完成针对实体 l 的 embedding 的更新。

上述的更新部分(也就是后三个步骤)重复多次,最后得到各个实体的最终 embedding 表示。也就是预训练(实体映射)+ 共 T 次不断更新隐藏状态:
【论文笔记】AKGE:基于注意力知识图谱嵌入的个性化推荐系统_第6张图片
每一次隐藏状态更新的细节:
【论文笔记】AKGE:基于注意力知识图谱嵌入的个性化推荐系统_第7张图片



2.3 预测层

此时通过 MLP prediction 来预测用户是否会对物品进行点击。注意这里和大部分模型不同,没有利用点击预测,而是一个普通的多层感知机。

原论文的激活函数用的是 ReLU,最后输出层是 sigmoid(最后输出点击的概率)




3 模型学习

因为最后的预测也就是一个二分类问题,这里的目标函数是对数似然函数:
在这里插入图片描述
梯度下降学习就行

注意这里本身是端到端的模型,也就是说所有的参数更新都是依靠最后这一个对数似然函数的梯度进行的。

整体的模型训练过程:

【论文笔记】AKGE:基于注意力知识图谱嵌入的个性化推荐系统_第8张图片



4 数据集实验

具体参考原论文:

先来看看数据集情况:
【论文笔记】AKGE:基于注意力知识图谱嵌入的个性化推荐系统_第9张图片
可以看到这里同时使用了不是那么稀疏的数据集和比较稀疏的数据集

看看效果
【论文笔记】AKGE:基于注意力知识图谱嵌入的个性化推荐系统_第10张图片
可以看到此时的效果较 KGAT 都有明显的提升。

小声 bb:这里某种程度上可以看出它的优势点 / 改进点 → 特别是在第一个数据集上,优于 MI-1M 的数据集比较 dense,此时 KGAT 这种基于在整个 KG 上进行传播的模型容易引入噪声,可以看到 AKGE 在这方面有很大的改善(针对每一个 user-item 都构造了特定的子图来帮助 embedding,而不是在整个 KG 上传播)

看看 embedding 的预训练方法:
【论文笔记】AKGE:基于注意力知识图谱嵌入的个性化推荐系统_第11张图片
可以看到 TransR 是压倒性的好





阅读仓促,存在错误 / 不足欢迎指出!期待进一步讨论~
转载请注明出处。知识见解与想法理应自由共享交流,禁止任何商用行为!

你可能感兴趣的:(推荐系统:从入门到放弃到入门,推荐系统,知识图谱,深度学习)