图卷积网络研究survey
PPT:Node Representation Learning
-
结点表示方法有:LINE(Large-scale Information Network
Embedding)、DeepWalk、node2vec. -
图和高维数据可视化:LargeVis
-
知识图谱嵌入:RotatE
-
一种高性能的结点表示系统
结点表示方法
一、 LINE
- LINE 1st:一阶领域的LINE,几即把当前节点周边的一阶节点融合起来,表示这点的信息。
优化目标: - LINE 2st :二阶领域的LINE,通过中间节点去连接两个节点,交叉的越多表示连接越紧密。
优化目标:讨论:(1)若映射点包含太少的邻居信息:1.加入高阶领域点 2.广度优先遍历 3.在大多数情况下有二阶信息已经够了
(2)嵌入新的点:1.固定一个存在的点;2.对新结点相关嵌入进行优化
二、DeepWalk
随机游走就是在网络上不断重复地随机选择游走路径,最终形成一条贯穿网络的路径。从某个特定的端点开始,游走的每一步都从与当前节点相连的边中随机选择一条,沿着选定的边移动到下一个顶点,不断重复这个过程。
根据随机游走中包含的顶点来估计下一个顶点出现的概率:
可将在网络上的随机游走当成是句子上的随机游走
可看此
三、Node2Vec
网络中的节点一般有两种相似度量:1.内容相似性,2.结构相似性。内容相似性用的是BFS采样,而结构相似性用的DFS采样。文章的核心思想是采用Random Walk来代替DFS或者BFS。文章定义了一种二阶的Random Walk,拥有两个参数,来控制多大的概率反复经过一些Node和控制所谓的Inward和Outward。然后再通过跟LINE总之,整个Random Walk的目的就是在DFS和BFS之间采取某种平衡。
文章虽然提出的是关于Node Feature提取的算法,但是Edge Feature也可以很容易从Node Feature导出。
p:控制在游走中反复访问单个结点的概率,q:表示往外走的概率
图和高维数据可视化
超低维2D/3D表示可视化
- t-SNE
t-SNE算法和它的改进算法都得到广泛应用,但存在两个不足:一是处理大规模高维数据时,t-SNE的效率显著降低(包括改进后的算法);二是t-SNE中的参数对不同数据集较为敏感,我们辛辛苦苦的在一个数据集上调好了参数,得到了一个不错的可视化效果,却发现不能在另一个数据集上适用,还得花费大量时间寻找合适的参数,所以现在用的LargeVIs则很好的解决了这些问题
LargeVis 优点
可参考
预备知识: KNN图定义:从一个点
x
i
x_i
xi出发,寻找周边与他相邻的距离最近的
k
k
k个点,连成线就成为KNN graph。
优点:
- 高效KNN图构建算法
在t-SNE的改进算法中,高维空间距离相似性我们只考虑与 x i x_i xi最接近的若干个邻居点,这实质上就是一个构建kNN图的过程。Maaten使用了VP树来构建一个精确的kNN图,但是效率依然堪忧。而LargeVis采用了一种更巧妙的方式,不追求一步到位,先近似再提高准确率。
构建kNN图一般有三类方法,LargeVis的做法是将第一类方法和第三类方法相结合。具体来说,第一步先利用随机投影树得到一个空间划分,在此基础上寻找每个点的k近邻,得到一个初步kNN图,这个kNN图不要求完全准确。第二步根据“邻居的邻居可能也是我的邻居”的思想,利用邻居搜索算法寻找潜在的邻居,计算邻居与当前点、邻居的邻居与当前点的距离并放入一个小根堆之中,取距离最小的k个节点作为k近邻,最终得到一个精确的kNN图。
- 学习KNN图结构
-
在2D/3D空间中国维持结点相似性。(1)将每个点用2或者3维向量表示,(2)保持相似的靠得近,不相似的离得远。
-
二值边存在的概率
p ( e i j = = 1 ) = 1 1 + ∣ ∣ y → i − y → j ∣ ∣ 2 p(e_{ij}==1)= \frac{1}{1+||\overrightarrow{y}_i-\overrightarrow{y}_j||^2 } p(eij==1)=1+∣∣yi−yj∣∣21 -
带权边的生成概率:
p ( e i j = = w i j ) = p ( e i j = = 1 ) w i j p(e_{ij}==w_{ij})=p(e_{ij}==1)^{w_{ij}} p(eij==wij)=p(eij==1)wij
优化目标
-
随机抽取一些负边
-
通过异步随机梯度下降优化
-
线性时间复杂度(与数据点的数量成线性关系)
知识图谱
知识图谱定义
知识图谱是一种特殊的图数据,它是语义的和可复用的:知识图谱数据一经获取即可被多领域应用重复使用,这也是知识图谱服务的构建动机。
(1)首先,知识图谱是一种特殊的图数据,它是一个混杂的图,里边有多种关系。具体来说,知识图谱是一种带标记的有向属性图。知识图谱中每个结点都有若干个属性和属性值,实体与实体之间的边表示的是结点之间的关系,边的指向方向表示了关系的方向,而边上的标记表示了关系的类型。例如,“汤姆·克鲁斯”和“碟中谍”是两个实体,“出演”则是这两者之间的关系。两个实体分别对应着现实世界中的人和电影,而边则对应了他们所表示的人和电影之间的现实关联。前者是关系的起始结点,后者是关系的目标结点。实体“汤姆·克鲁斯”具有“出生日期”等属性,其属性值为“1962年7月3日”等。表示为一个三元组
∗
∗
(
h
e
a
d
e
n
t
i
t
y
,
r
e
l
a
t
i
o
n
,
t
a
i
l
e
n
t
i
t
y
)
∗
∗
**(head entity, relation, tail entity)**
∗∗(headentity,relation,tailentity)∗∗
(2)其次,知识图谱是一种人类可识别且对机器友好的知识表示。知识图谱采用了人类容易识别的字符串来标识各元素;同时,图数据表示作为一种通用的数据结构,可以很容易地被计算机识别和处理。
(3)再次,知识图谱自带语义,蕴涵逻辑含义和规则。知识图谱中的结点对应现实世界中的实体或者概念,每条边或属性也对应现实中的一条知识。在此之上,我们可以根据人类定义的规则,推导出知识图谱数据中没有明确给出的知识。比如,已知“张三是个人”,我们就可以根据“人都有父母,都有大脑,需要呼吸”等规则得到很多新知识,而无需在知识图谱中逐条给出。再比如,“外公”的“儿子”是“舅舅”,据此可以推导出很多实体之间的亲属等关系。
根据观测的事实推测出知识图谱的关系模型。
知识图谱嵌入的相关工作
- 将实体表示为嵌入(Embedding),(这里的实体相当于数据库网络中的那个实体),
- 将关系表示为嵌入或者矩阵
Task:知识图谱的完成
- 基础任务:预测失去的联结
- 核心观点:根据已知知识建模与推理知识图谱的关系模型
- Parents of Parents are Grandparents
关系模型分为3类:
- 对称与非对称关系,婚姻关系为对称,亲子关系为非对称关系
- 反转关系,上位和下位,丈夫和妻子
- 组合关系,妈妈的丈夫是我爸爸
并不是所有模型都可以推理三种所有关系。而RotatE却可以将三种类型的关系都进行推理。代码
RotatE—一种新的知识图谱嵌入模型
(1)其把每种关系都作为一个在复向量空间中从源实体到目标实体的元素旋转,(2)能够建模和推理出三种类型的关系;(3)优化RotatE的一种高效的反取样算法;(3)在知识图谱标准测试集上的关系预测达到state-of-art。
-
关系视作为复空间的元素旋转
(1) 将头实体和尾实体表示成负空间中复向量 i.e., h,t ∈ C k \textbf{h,t}\in\mathbb{C}^k h,t∈Ck
(2) 定义每种关系r作为单个元素从头关系到尾关系的旋转,i.e.
t = a ∘ b , 这 里 ∣ r i ∣ = 1 t=a\circ{b},这里|r_i|=1 t=a∘b,这里∣ri∣=1
∘ 是 元 素 乘 积 \circ是元素乘积 ∘是元素乘积,更准确有 t i = h i r i t_i=h_ir_i ti=hiri
r i = e i θ r , i r_i=e^{i\theta_{r,i}} ri=eiθr,i
这里 θ r , i \theta_{r,i} θr,i是r的第i个维度的幅角
定义距离函数
d r ( h,t ) = ∣ ∣ h ∘ t − t ∣ ∣ d_r(\textbf{h,t})=||\textbf{h}\circ\textbf{t}-\textbf{t}|| dr(h,t)=∣∣h∘t−t∣∣
- 关系模式建模
(1)r是对称的当且仅当 r i = ± 1 r_i=\pm1 ri=±1,i.e.
θ r , i = 0 o r π \theta_{r,i}=0 or \pi θr,i=0orπ
当 r i = − 1 r_i=-1 ri=−1时,可以看到
(2)当 r ∘ r ≠ 1 r\circ r\neq1 r∘r=1时,则是不对称关系
(3)两种关系是反转的: r 2 = r ˉ 1 r_2=\bar{r}_1 r2=rˉ1,i.e.,
θ 2 , i = − θ 1 , i \theta_{2,i}=-\theta{1,i} θ2,i=−θ1,i
(4)一种关系 r 3 \bm{r_3} r3两种关系 r 1 = e i θ 1 \bm{r_1}=e^{i\theta_1} r1=eiθ1与 r 2 = e i θ 1 \bm{r_2}=e^{i\theta_1} r2=eiθ1组成,当且仅当 r 3 = r 1 ∘ r 2 \bm{r_3}=\bm{r_1}\circ\bm{r_2} r3=r1∘r2,i.e.,
θ 3 = θ 1 + θ 2 \theta_3=\theta_1+\theta_2 θ3=θ1+θ2 -
负采样损失
γ \gamma γ是固定的边缘, σ \sigma σ是sigmoid函数, ( h i ′ , r , t i ′ ) (\bm{h}'_i,\bm{r},\bm{t}'_i) (hi′,r,ti′)是第i个负三元组。 -
自对抗负采样
传统的负采样总是以同一的方式来取,而存在以下问题:1.训练的低效性,因为很多样本都是明显错误的,2.其不能提供有用的信息
但自对抗反采样优点是:
- 根据当前的嵌入模型对负三维数组进行采样
- 从简单的样本到越来越复杂的样本
- 课程学习:
KaTeX parse error: Undefined control sequence: \apha at position 1: \̲a̲p̲h̲a̲是采样温度, f r ( h j ′ , t j ′ ) f_r(h'_j,t'_j) fr(hj′,tj′)测量三元组的显著性.
最后的目标函数(这里将采样概率作为权重):
实验数据集:FB15K、WN18、FB15K-237、WN18RR
总结
- 对关系模式进行建模是知识库完成的关键
如:对称,非对称,相反,组合 - RotaE:在复空间中用元素旋转定义从头到尾实体的关系,能够对所有三种关系模式进行建模和推理
- 一种用于知识图嵌入训练的自负抽样技术
- 所有现有基准数据集的最新结果
软件
- LINE: https://github.com/tangjianpku/LINE
- LargeVis :https://github.com/lferry007/LargeVis
(C++&Python) - RotatE :https://github.com/DeepGraphLearning/
KnowledgeGraphEmbedding
一种用于节点嵌入的高性能的CPU-GPU混合系统(2019)
- 通过算法和系统协同设计,设计了节点嵌入的具体系统:1.cpu:在线随机漫步生成 2.gpu:训练节点嵌入 3.cpu与gpu之间高效的协作策略
- 比现有系统快50倍
- 对于一个拥有一百万个节点的网络只需一分钟
summary
- Node Representation Methods
• LINE, DeepWalk, node2vec - Graph and High-dimensional Data Visualization
• LargeVis - Knowledge Graph Embedding
• RotatE - A High-performance Node Representation System