初入门 -> 知识图谱X推荐系统 -> KGAT

本文内容

主要内容: KGAT这篇论文代码的一些注释和相关信息

次要内容: 知识图谱+推荐系统+深度学习的一些入门资料

为什么写这篇文章

进入研究生阶段所选的方向是知识图谱+推荐系统+深度学习, 然后将这几天看的东西做一个整理

知识图谱+深度学习

前言

将知识图谱引入推荐系统的工作分为两类:

  1. 以LibFM[1]为代表的通用的基于特征的推荐方法(generic feature-based methods)。这类方法统一地把用户和物品的属性作为推荐算法的输入。例如,LibFM将某个用户和某个物品的所有属性记为x,然后令该用户和物品之间的交互强度y(x)依赖于属性中所有的一次项和二次项:

  2. 以PER [2]、MetaGraph[3]为代表的基于路径的推荐方法(path-based methods)。该类方法将知识图谱视为一个异构信息网络(heterogeneous information network),然后构造物品之间的基于meta-path或meta-graph的特征。简单地说,meta-path是连接两个实体的一条特定的路径,比如“演员->电影->导演->电影->演员”这条meta-path可以连接两个演员,因此可以视为一种挖掘演员之间的潜在关系的方式。这类方法的优点是充分且直观地利用了知识图谱的网络结构,缺点是需要手动设计meta-path或meta-graph,这在实践中难以到达最优;同时,该类方法无法在实体不属于同一个领域的场景(例如新闻推荐)中应用,因为我们无法为这样的场景预定义meta-path或meta-graph。

微软的两篇入门介绍

推荐算法不够精准?让知识图谱来解决

如何将知识图谱特征学习应用到推荐系统?

对第二篇文章的Ripple Net的补充: 【论文笔记】Ripple Net:融合知识图谱的推荐模型

知识图谱特征学习

论文 Knowledge Graph Embedding: A Survey ofApproaches and Applications

对上面这篇文章的中文介绍, 知识图谱嵌入(KGE):方法和应用的综述

KGAT

官方

论文地址

官方代码

KGAT中文笔记

KGAT论文笔记

#PaperCarrier:KGAT | 知识图注意力网络推荐

这两篇文章把论文思想都写出来了, 基本没什么遗漏的

Trans系列

用来学习实体和关系embedding的一些算法整理

知识图谱嵌入的Translate模型汇总(TransE,TransH,TransR,TransD)

Trans系列阅读

KGAT调试环境搭建

下面dockerfile文件未经测试, 但大体就是这样的过程

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
FROM ubuntu:18.04

WORKDIR /root

RUN apt update \
&& apt install -y openssh-server python3 python3-pip wget zip \
&& rm -rf /var/lib/apt/lists/* \
&& pip3 --no-cache-dir install numpy==1.15.4 scipy==1.1.0 sklearn tensorflow==1.12.0 \
&& echo "PermitRootLogin yes" >> /etc/ssh/sshd_config \
&& sed -i 's/^Subsystem/#&/' /etc/ssh/sshd_config \
&& echo "Subsystem sftp internal-sftp" >> /etc/ssh/sshd_config \
&& wget https://github.com/xiangwang1223/knowledge_graph_attention_network/archive/master.zip \
&& unzip master.zip \
&& unzip /root/knowledge_graph_attention_network-master/Data/amazon-book/kg_final.txt.zip \
&& rm master.zip

CMD /bin/bash

# pip3 --no-cache-dir install pydevd-pycharm~=202.7319.64 <- change it to your version
# /etc/init.d/ssh restart

KGAT相关代码解释

详细看这 -> Link, 这里只保存了几个我添加注释的文件