结论速递
这是图嵌入表示学习的导论。
节点嵌入的框架为编码解码,可以类比自然语言处理中的机器翻译,目标是特征空间里相似的点与原图相似的点尽可能接近。这里原图相似的点的描述比较重要,简单的方法是查表,最经典的就是随机游走。简单介绍了基于随机游走的DeepWalk和Node2Vec,后面论文精讲还会仔细讲。
全图的嵌入有三种思路。
前情提要
目录
1 问题引入
前面的任务当中提到,机器学习为了达到比较好的效果,会先进行特征工程,将数据转化为D维向量。
传统的图机器学习也是类似,如果使用特征工程,将图转化为一个D维向量,就可以用传统的机器学习方法来完成图机器学习任务了。若我们将特征工程的方法自动化,让机器自动学习特征,那么可以称为表示学习,这是深度学习的一个重要概念。
描述图的特征,分为以下几个维度:
- 节点
- 边
- 子图/全图
将图映射维D维向量的方法可以简单分为以下几种:
-
人工特征工程:见
-
图表示学习:通过随机游走构造自监督学习任务。DeepWalk,Node2Vec都属于这个类型。
-
深度学习:图神经网络
需要注意的是,表示学习提取的向量是与具体的下游任务无关的(而非反馈式的),是无监督/自监督的(与下游任务的标签无关)。
以将节点映射为d维向量为例,d维向量需要满足:
- 低维:向量维度远小于节点数
- 连续:每个元素都是实数(有正有负,有大有小)
- 稠密:每个元素都不为0
同时,需要能够描述原图的特征(嵌入向量应能够包含网络连接信息)。
以DeepWalk原论文中的例子为例,空手道俱乐部的图上的节点颜色是通过无监督聚类得到的,DeepWalk表示嵌入后,原图中被标为一类颜色的节点在嵌入空间依然接近。这就表示嵌入过程有效地保留了原图的这部分信息。
2 图嵌入的基本框架:编码解码
2.1 嵌入目标
我们以下面这个图G(V,A)为例,这是一个无权图,节点没有属性信息。
嵌入的目标是:在图上相近的节点在嵌入后(编码后)特征空间里依然是相近的节点。
- 在嵌入空间中常以使用向量点乘数值(余弦相似度)来反映节点的相似度(这个过程叫做解码?)。
- 在原图中,节点相似度需要人为定义,可以是,如两节点直接/间接相连,或两节点在图中扮演了相同的功能角色等),或者使用随机游走(random walks)。
2.2 嵌入框架:编码解码
嵌入的训练步骤如下:
- Encoder编码器( E N C ( v ) = z v ENC(v)=z_v ENC(v)=zv):将节点变为D维向量
- Similarity function( s i m i l a r i t y ( u , v ) similarity(u,v) similarity(u,v)):定义一个节点相似度的方程
- Decoder解码器(DEC)计算嵌入空间的节点相似度(余弦相似度)
- 迭代优化每个节点的D维向量,使得 s i m i l a r i t y ( u , v ) similarity(u,v) similarity(u,v)和 z v T z u z^T_v z_u zvTzu尽可能相似。(图中相似节点向量数量积大,不相似节点向量数量积小)
所以其实和NLP中机器翻译的seq2seq的编码器解码器结构很接近。
2.3 一些概念
2.3.1 编码器结构
编码器结构分为两类,
- Shallow Encoding:最简单的编码器:查表
每一个列为一个节点的嵌入结果
DeepWalk和Node2Vec属于这一类
- deep encoder:GNN后续会讲。
2.3.2 随机游走Random Walk
描述节点的一种表达形式,由KDD2014的[1403.6652] DeepWalk: Online Learning of Social Representations (arxiv.org)这篇论文提出。
一个醉汉在一个图上随机地走,得到的序列,叫做随机游走序列。除此之外,我们可以定义醉汉的随机游走的限制条件,从而得到有限的序列。
随机游走序列有什么用?
可以类比自然语言处理中句子这一概念来理解。
事实上,图机器学习与NLP中有许多概念都可以相互类比:
节点,可以理解为单词。DeepWalk可以联想为句子中mask了一个词,通过上下文补全这个mask的词。
当两个节点共同出现在同一个随机游走序列时,定义节点是相似的。类比句子上下文的概念。
随机游走的优点:
- 表示能力强
- 计算便捷
- 自监督
随机游走的缺点:
-
无法立刻泛化到新加入的节点,在某种程度上会是一种过拟合。(词书里没有的词,无法解读)需要针对新节点,采样新的序列。
-
无法描述点的功能,结构,角色。
无法描述两个离得很远,但功能类似的节点。 -
没有利用到属性信息,只利用了图本身的连接信息。
2.3.3 DeppWalk
DeepWalk的计算过程此处先简单小结成下面的图,后面论文精读再展开。
其中优化具体为求极大似然估计。
优化的过程是随机梯度下降:SGD,先随机初始化(全局梯度下降),然后再单个随机梯度下降(mini batch SGD)
小结:
2.3.4 Node2Vec
其他步骤与DeepWalk接近,区别在于,是有偏的二阶随机游走。
通过p,q两个参数来确定,是否向更远的地方探索。由于探索者记得上一个节点是哪个(从哪来)所以是一个二阶的随机游走。
- BFS宽度优先:微观视野,探索邻域,p小q大。可以找到节点功能角色(中枢,桥接,边缘)
- DFS深度优先:宏观视野,全局,探索远方,p小q大。可以找到同质社群。
小结:
2.3.5 其他随机游走方法
还有其他的随机游走的方法
不同方法有各自适用的范围
2.4 矩阵角度理解嵌入的求解
两个节点嵌入后相乘得到邻接矩阵中为1,亦即相连,所以两个节点相似。
在实际中,Z矩阵矮胖,不容易求矩阵分解,常用数值计算方法。
上述提到的方法的求解都可以理解为矩阵分解。
3 全图嵌入
目标是将子图或全图嵌入到一个新的特征空间
第一种方法是:对每个节点都做嵌入,直接对所有的节点嵌入求和
第二种方法是:做一个虚拟节点,然后把虚拟节点的嵌入作为子图的嵌入。
第三种方法:匿名随机游走(Anonymous Walks)。
对一次游走,每次在路径中见到一个新的节点,就编一个号(对全图来说认号不认节点)
然后就可以对不同匿名随机游走序列进行编码,
-
对不同匿名随机游走序列的个数数数,来构造向量(Bag of Anonymous Walks)(很熟悉的套路,先定义一个概念,然后Bag数数)
当匿名随机游走的长度固定时,如果要使误差大于 ϵ \epsilon ϵ的概率小于 δ \delta δ,需采样m次, m m m的计算公式如下:
m = [ 2 ϵ 2 ( log ( 2 η − 2 ) − log ( δ ) ) ] m = [\frac2{\epsilon ^2}(\log(2^\eta - 2)-\log(\delta))] m=[ϵ22(log(2η−2)−log(δ))]
-
还有另外一种对匿名随机游走进行编码方法
除了上述三种思路之外,还有分层聚类的方法,这个将在图神经网络那边涉及。