【论文笔记】KGAT:融合知识图谱的 CKG 表示 + 图注意力机制的推荐系统

Xiang Wang, Xiangnan He, Yixin Cao, Meng Liu and Tat-Seng Chua (2019). KGAT: Knowledge Graph Attention Network for Recommendation. Paper in ACM DL or Paper in arXiv. In KDD’19, Anchorage, Alaska, USA, August 4-8, 2019.


原文:https://arxiv.org/pdf/1905.07854.pdf
源码:https://github.com/xiangwang1223/knowledge_graph_attention_network(tensorflow / official)** https://github.com/LunaBlack/KGAT-pytorch(pytorch)





1 introduction

传统 CF (协同过滤)算法存在一定的问题:数据稀疏,冷启动,且难以将大量辅助信息(side information)加入利用,例如用户本身特征,物品特征,文本信息,社交网络信息等。
当前的一种利用 side information 的解决方式为将其转化为有监督学习问题:也就是利用 embedding 将物品和用户都利用向量表示,再输入有监督学习的模型中进行处理(比如给定用户和物品,判断用户是否会点击物品的二分类问题,此时的损失函数本身就是交叉熵函数;经过 embedding 以后就是一个简单的有监督问题。)但是这样的处理方式存在一定的问题:其往往先通过 embedding,在下游推荐问题中(也就是有监督问题的处理中)往往考察的是(当前我给出的物品 item 和用户 user 过去发生过交互的物品的相似度),也就是类似于(基于物品的协同过滤)的思路;而难以将(基于用户的协同过滤),也就是寻找到和当前用户相似的用户,再进行推荐的方法进行融合。

比如上图,此时想要为用户 u1 进行推荐,传统 CF 的方法能够帮助找到用户 u4 和 u5,因为他们和 u1 一样都对物品 i1 发生过行为;而利用了 side information 的有监督学习的方法往往能够找到 i2,因为其与用户曾经发生过行为的物品 i1 存在相似之处(都由 e1 导演(和 e1 的关系 r 都是类别 r2),这里的 e1 就是 side information,被利用起来了)。

但是注意,此时图中仍存在没有被利用起来的信息:比如这里的 u2 和 u3 应该是和 u1 相似的用户(因为 i1 和 i2 是相似的物品)但是难以被 CF 或有监督学习的方法捕捉;同理 i3 和 i4 同理也被忽略了:此时 i3 和 i4 同理和 i1 一样都与 e1 存在交互(虽然交互的 r 联系类型不同)。
也就是说上述的方法难以捕捉到一种高阶的关系(high-order relationship),但是捕捉这样的关系同理为整体模型带来了挑战 →

  • 更多的实体将被引入模型带来计算的巨大压力,也就是到底选择多少的高阶关系参与进入模型训练的问题;
  • 并不是所有的高阶关系都合适,此时需要模型对这些高阶关系进行一定的筛选 / 给予其不同的权重(不然对于 i3 i4 这种被忽略的情况,似乎直接不对 r 分类就可以解决)。简单来说,需要模型给不同的高阶关系以不同的权重,在后续通过注意力机制的方式解决。

解决: 提出 collaborative knowledge graph (CKG)方法,一般可以分为两个思路:

  • 基于路径的方法(path-based):本身两个节点之间可能的路径很多,缺点在于需要人工手动设计 meta-path / meta-graph,且并没有针对推荐问题进行优化。
  • 基于规则的方法(regularization-based ),注意并不是直接将高阶关系加入到优化推荐模型中,而是以隐式方法对它们进行编码。此时一方面难以保证确实捕捉到了长距离的关系,另一方面难以保证捕捉到的长距离关系确实是有意义的(也就是难以得到较好的解释性)

本文提出一个新的思路:知识图注意力网络(Knowledge Graph Attention Network (KGAT)),具体优势如下:

  • 以端到端的方式实现建模,且较好地捕捉整体 KG 中的高阶关系
  • 以显式的方式进行,保障模型的可解释性
  • 采用了注意力机制,自动学习权重
  • 不需要像 meta-path / meta-graph 那样要求手动设计路径,优于基于路径的方法



2 任务解释


2.1 定义
  • user-item 二部图(User-Item Bipartite Graph):也就是用户和物品的历史行为记录,类似于用户-物品矩阵,但是本身以图的形式展示。定义 G 1 = { ( u , y u , i , i ) ∣ u ∈ U , i ∈ I } \mathcal{G_1} = \lbrace (u, y_{u,i}, i) | u\in U , i\in I\rbrace G1={ (u,yu,i,i)uU,iI} 这里的 U 和 I 分别表示用户和物品集合,注意此时只是讨论用户和物品之间的关系,仅限于传统 CF 讨论的关系。如果此时存在联系,则对应的 y u , i = 1 y_{u,i} = 1 yu,i=1, 否则为 0。

  • 知识图谱(Knowledge Graph) 也就是更为自由的可以由不同的类型的实体组成的整体异构信息网,本身由节点和有向边组成,节点表示实体 entity,边表示关系 relationship。将此时传统 CF 难以利用的辅助信息都融入知识图谱中进行利用(也就是 side information)

  • CKG(Collaborative Knowledge Graph) 也就是一个二部图和 KG 的结合体。考虑整合关系: G = { ( h , r , t ) ∣ h , t ∈ ϵ ′ , r ∈ R ′ } \mathcal{G} = \lbrace (h,r,t) | h,t \in \epsilon', r\in \mathcal{R}'\rbrace G={ (h,r,t)h,tϵ,rR} 注意这里: ϵ ′ = ϵ ∪ U ,   R ′ = R ∪ { i n t e r a c t }   \epsilon' = \epsilon \cup \mathcal{U},\text{ } R' = R\cup\lbrace interact\rbrace \text{ } ϵ=ϵU, R=R{ interact} , ε 本身是实体 entity 集合, R 是关系集合。直观理解就是上面那个图(搬过来在下面放好放好 ↓):在下面部分作为普通的知识图谱的同时,特别地将物品集合提出来,针对物品集合再创建 用户 - 物品 矩阵的部分,可以看作是在正常的知识图谱上接了一个 CF 的稀疏矩阵的形式。


2.2 模型结构(framework)

输入: 构造好的 CKG,记作 G \mathcal{G} G,对应的 CF 的用户-物品矩阵 G 1 \mathcal{G_1} G1 和知识图谱 G 2 \mathcal{G_2} G2
输出: 能够预测用户 u 点击物品 i 的概率的 prediction function

基本模型结构如下图:

此时分为三个主要的组成部分:

  • CKG embedding layer:利用构造的 CKG 结构进行嵌入表示,也就是通过 embedding 得到各个实体的向量表示。
  • attentive embedding propagation layer:通过邻居节点递归地传播 embedding来增强表示 → 通过基于知识的注意力来计算权重 → 信息聚合
  • prediction layer:也就是预测层,注意这里想要的是用户是否会点击物品,归一化后得到概率。



3 模型解释


3.1 embedding layer 嵌入层

也就是通过 CKG 得到实体的向量表示。在这里使用的是 Trans 系的 embedding 方式(原论文用到的是 TransR

具体 Trans 系的方法还是用的很多的,这里就只简单提两句,具体参考

直观来说可以理解为,我构建一个针对三元组的评分标准: g ( h , r , t ) = ∣ ∣ W r e h + e r − W r e t ∣ ∣ 2 2 g(h,r,t) = || W_re_h + e_r - W_re_t||_2^2 g(h,r,t)=Wreh+erWret22,此时三元组的得分 g ( h , r , t

  • 5
    点赞
  • 34
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值