题目: KGCN
论文链接:
代码链接:https://github.com/hwwang55/KGCN
想法
- 高阶的意思就是multi-hop的意思
- 注意是从外向里聚合的,第h-1跳是外侧,第h跳是里侧! 所以才有聚合邻居和本身之说
创新
摘要
为了充分利用KG中的信息,我们会扩展某个实体的感受野到multi-hop来捕获KG的高阶结构信息和语义信息。
数据集: 电影、书籍和音乐推荐
Introduction
常用的KGE方法侧重于建模严格的语义相关性(如TransE[1]和TransR[12]假设头+关系=尾),更适合KG补全和链接预测等图内应用,而不是推荐。 一种常见的方法是设计一种图算法来利用图结构! 也就是在图上传播信息,原始的基于图的在于手工建立meta-path/meta-graph,之后是建立某种规则来建立meta-path/meta-graph; RippleNet虽然可以有效在KG中传播user preference,探索它们的层次兴趣,但是由于关系矩阵 R R R没有得到很好的训练,关系的重要性被弱化了! 同时,随着KG的增大,ripple set的multi-hop的大小变得不可预测,这将导致大量的计算和存储开销。
KGCN的核心思想是在计算给定实体在KG中的表示时,对带有偏差的邻域信息进行聚合和合并,这样的设计有两个优点:(1)通过邻域聚合,local proximity structure(局部邻近结构)被成功捕获并存在每个实体里。(2)邻居的权重取决于连接关系和特定用户的得分,体现了KG的语义信息和用户的个性化兴趣; 同时由于邻居的大小是变化的,因此我们会选择固定大小领域作为接收域!
2 RELATED WORK
GCN可分为光谱方法和非光谱方法。谱方法在谱空间中表示图并进行卷积。相比之下,非谱方法直接对原始图进行操作,并为节点组定义卷积。
我们的方法也连接到PinSage[21]和GAT[15]。但请注意,PinSage和GAT都是为齐次图设计的。我们的主要贡献就是在异构图的推荐系统上提供新视角。
3 KNOWLEDGE GRAPH CONVOLUTIONAL NETWORKS
常规的定义:
用户:
item:
交互矩阵:
三元组:
目标:
3.2 KGCN Layer
下面我们考虑单个KGCN层:
先用r和u来计算出该r对u的重要性; 同时r连接了v, 那么v对u的特征汇聚就好求了。 该关系也就表明了u对v的兴趣!
我们考虑user u和item v的候选对,我们使用 N ( v ) \mathcal{N}(v) N(v)表明了直接和 v v v相连的实体的集合, r e i , r e j r_{e_i},r_{e_j} rei,rej表明了两个实体之间的关系。
-
首先:我们也会使用一个函数 R d × R d − > R \mathbb{R}^d \times \mathbb{R}^d -> \mathbb{R} Rd×Rd−>R(比如内积)来计算一个user和一个relation之间的分数:
关系的意思就是说一个人喜欢看该电影是因为明星,但是另一个人看该电影却是为了导演。 -
同理, 为了描述item v的拓扑邻近结构,我们计算v的邻居的线性组合:
其中 e \mathrm{e} e表示了实体 e e e的表示
User-relation scores充当了个性化的过滤器在计算v的邻居的线性组合时。
- 设计邻居大小
因为在真实世界中,一个实体的邻居在不同的实体之间是大不相同的!为了保证每批计算模式固定和更有效,我们只取固定大小的邻居,而不是全部。 具体的,我们取实体 v v v的邻居表示为 v S ( v ) u v_{S_{(v)}}^u vS(v)u,其中 S ( v ) ≜ { e ∣ e ∼ N ( v ) } \mathcal{S}(v) \triangleq\{e \mid e \sim \mathcal{N}(v)\} S(v)≜{e∣e∼N(v)},并且 ∣ S ( v ) ∣ = K \left | \mathcal{S}(v) \right | = K ∣S(v)∣=K是固定的,因此呢 S ( v ) S(v) S(v)也被称为是实体 v v v的接受野!!! 下图左侧就是一个layer-2的实例,其中K设置为2,中心实体是蓝色的,被选中的邻居是绿色的!注意是从外侧向里的聚合的!
- 聚合实体表示和其邻居表示为单一向量 R d × R d − > R d \mathbb{R}^d \times \mathbb{R}^d -> \mathbb{R}^d Rd×Rd−>Rd
-
Sum aggregator 取两个表示向量的和,然后进行非线性变换:
-
Concat aggregator在进行非线性变换之前,先将两个表示向量连接起来:
-
Neighbor aggregator 直接取实体的邻域表示作为输出表示:
我们将在实验中评估三种聚合器!
3.3 学习算法
high-order: 就是多层邻居,或者说multi-layer; 而一个high-oder表示是它自身和它的邻居的初始表示的混合!
H
H
H表明了感受野的最大的深度(或者说是迭代的次数),后缀[h]表示是
h
h
h-order。对于一个user-item对
(
u
,
v
)
(u,v)
(u,v),我们首先以逐层迭代的方式计算
v
v
v的感受野
M
M
M,这里
M
[
i
]
M[i]
M[i]就表示了
v
v
v第i阶的所有实体!!可以想象成字典,每个key值下有多个点 (line 3, 13-19),然后聚合重复
H
H
H次 (line 5),在迭代h中,我们计算每个实体的邻域表示
e
∈
M
[
h
]
,
也
就
是
求
每
个
邻
居
实
体
的
嵌
入
e \in M[h],也就是求每个邻居实体的嵌入
e∈M[h],也就是求每个邻居实体的嵌入(line 7),然后用它自己的表示
e
u
[
h
−
1
]
\mathrm{e}^u[h-1]
eu[h−1]来聚合得到下一次迭代中使用的值,因为我们每个实体表示都是由本身和其邻居的聚合表示的(line 8),最后的h阶实体表示表示为
v
u
\mathrm{v}^u
vu(line 9),最终放到一个得分函数中:
为了提高计算效率,我们在训练过程中使用了负采样策略。完全损失函数为:
4 EXPERIMENTS
Experiment Setup
Results
会发现如下结论:
- KGCN更适应于稀疏矩阵
- KG-free基线SVD、LibFM比KG-aware基线PER和CKE效果更好,表明了PER和CKE没有充分利用手工设计的metapath和TransR-
like regularization - LibFM + TransE是比LibFM更好,说明KGE的重要性
- PER最差,因为在现实中很难定义最优元路径
- RippleNet表现更好,因为也用了邻居!
而且发现KGCN-sum是综合最好的
总结和未来的方向
我们指出了未来工作的三个途径。
(1)在这项工作中,我们一致地从一个实体的邻居中取样,以构建其接受域。探索非均匀采样器(如重要采样)是今后工作的一个重要方向。
(2)本文(以及所有文献)关注于item-end KGs的建模,未来工作的一个有趣方向是研究利用user-end KGs是否有助于提高推荐性能。
(3)设计一种能很好地组合两端KGs的算法也是一个很有前途的方向。