一句话总结:用GCN对Knowledge Graph做Model
Motivation
推荐系统中存在的问题
- 用户-物品的交互数据非常稀疏
-
冷启动问题(有新的item加入时,无法根据用户和这个item的历史记录做推荐)
解决思路:引入其它信息(Side information)
- 社交网络
- 物品/用户的属性
- 上下文信息(用户在哪里买的,当时购物车里还有什么其它信息...)
- 知识图谱
Knowledge Graph
- 有向的异构图,节点代表实体,边表示关系
-
一个KG包含很多三元组(头结点,关系,尾结点)
-
知识图谱和推荐系统的关系:KG中的node有可能是推荐系统中的item
-
为什么要将KG用到推荐系统:KG提供了一种关于items间相似度的计算方式
KG的数学表示
Method
Relation Scoring Function
因为KG中的边是关系型的(relation type),没有显式的权值,而GCN中的边是有权值的,所以需要先做一个转换 =>对KG中的关系打分
为用户u identity他所关注的关系,刻画了用户u对不同关系的偏好程度
e.g.
比如计算user embedding 和 relation embedding的内积
对每个user,转换后的Adjacency matrix 都是不一样的
Layer-wise forward propagation
上图显示的是标准GCN公式,只不过把原来GCN中同构图的邻接矩阵转换为了每个用户独有的
: Adjacency matrix of the KG for particular user u;
: Diagonal degree matrix of (把中每个node的度数写在对角线上,其它地方都是零,作用,对做normalization)
: Trainable transformation matrix
: Entity embedding matrix
这个式子本质上是说在KG中做了一个多跳的Message-passing,最后中间这层学到的表征是融合了它多跳领域的一个表征
Predicting Engagement Probability
从GCN的最后一层得到entity embedding后,就可以和user embedding计算预测概率,比如用内积,MLP等。
KGCN 算法流程
伪代码解释:
对一个给定的user-item对(line 2):
计算item v的感受域(line 3, 13-19)
用第0层(即感受域最外层)的实体表示做初始化(line 4)
做H次聚合操作(line 5)
在第h次,计算对每个h层的实体的邻居表示(line 7)
和其自己第h-1层的表示聚合得到(line 8)
最终的结合H-hop邻居信息的实体表示为(line 9)
和这个user的表示预测关系概率 (line 10)
原文Link: Knowledge Graph Convolutional Networks for Recommender Systems
应用
KGNN: Knowledge Graph Neural Network for Drug-Drug Interaction Prediction
这是一篇和KGCN很像的文章,用来预测药物和药物之间的相关性,不同之处在于这里的两个药物(对应user和item)都是知识图谱中的实体,所以需要得到两个药物聚合KG中各自感知域后的embedding,之后计算这两个embedding和原drug的分数,最后再用这两个分数计算药物间的相互作用概率。