1. 什么是Graph Embedding?
Embedding是将目标(文字、图像)降维,并在结果中保留重要信息。而Graph Embedding就是针对于图像信息的提取。
1.)分类:依据不同特点进行分类
a.)图片节点属性
i.) 图片节点属性相同(monopartite graphs),如社交关系网。相关算法:DeepWalk
ii.)图片节点属性不同(multipartite graphs),如Alla、奶茶和阳光
b.)降维方式
i.) 点嵌入(vertex embeddings):粒度在节点层面
ii.)路径嵌入(path embeddings):粒度在边
iii.) 图嵌入(graph embeddings):将整个图变为一个向量
2. 为什么使用Embedding?
方便后续进行计算、算法的训练等
3. 怎么进行Embedding?
1)算法结构
a.)相似性函数(similarity function):描述节点间相似程度
b.)编码函数(encoder function):生成图的编码
c.)译码函数(decoder function):重建成对相似度(?直译…),或称之为“利用encoder输出的embedding解码图的信息”
d.)损失函数(loss function):判断模型准确率
2)技术
a.)Shallow Embeddings 浅嵌入:大多数节点嵌入依赖的方法
i.)方法1 - matrix factorization 矩阵分解:早期训练节点表示的方法主要是矩阵分解的相关方法,这些方法直接受到降维经典技术的启发。包括拉普拉斯特征分解、内积法等
限制:内存占用大(massive memory footprint),计算量大(computationally intense)
ii.)方法2 - Random walk 随机游走
前提&限制:假设相似节点聚集(local-only perspective)
iii.)限制
【1】浅嵌入效率低下——节点之间没有共享参数(Shallow embeddings are inefficient-no parameters shared between nodes)
【2】无法利用节点属性(节点不能赋予权重)
【3】扩展性差,新图像加入时,要重新训练
b.)压缩信息Compress information
i.)方法1:neighbourhood autoencoder methods
ii.)方法2:neighborhood aggregation - KNN聚类
iii)方法3:convolutional autoencoders - 图像卷积网络
3)经典算法
a.)DeepWalk:顶点嵌入方法之一
DeepWalk使用随机游走的方法生成嵌入。从选定节点开始随机游走,移动到随机邻居。
该方法基本上包括三个步骤:
抽样:使用随机游走对图进行抽样,并不会经过每个点,执行 32 到 64 次随机游走即可,好的随机游走的长度约为 40 步。
训练 skip-gram:随机游走与 word2vec 方法中的句子相当。skip-gram 网络接受来自随机游走的节点作为 one-hot 向量作为输入,并最大化预测相邻节点的概率。它通常被训练来预测大约 20 个邻居节点——左边 10 个节点,右边 10 个节点。其中,one-hot向量指
计算嵌入:嵌入是网络隐藏层的输出。DeepWalk 计算图中每个节点的嵌入。
DeepWalk 方法随机执行随机游走,这意味着嵌入不能很好地保留节点的局部邻域。Node2vec 方法解决了这个问题。
b.)SDNE结构深度网络嵌入
结构深度网络嵌入 (SDNE)不执行随机游走,同时在不同任务上的表现非常稳定。
它的设计使嵌入保持一阶和二阶接近度。一阶接近度是由边连接的节点之间的局部成对相似度。它表征了本地网络结构。如果网络中的两个节点与边缘相连,则它们是相似的。当一篇论文引用另一篇论文时,这意味着它们涉及相似的主题。二阶接近度表示节点邻域结构的相似性。它捕获了全局网络结构。如果两个节点共享许多邻居,它们往往是相似的。
c.)Graph2vec:嵌入整个图,即将全图描绘成一个向量。图嵌入最佳性能的方法
Graph2vec基于使用 skip-gram 网络的doc2vec方法的思想,用于预测子图。包括以下三个步骤。
i.)从图中采样和重新标记所有子图。子图是出现在选定节点周围的一组节点。子图中的节点距离选择的边数不远。
ii.)训练skip-gram模型。图表类似于文档。由于文档是一组单词,因此图是一组子图。在这个阶段,skip-gram 被训练以最大化预测输入图中存在的子图的概率。输入图以 one-hot 向量的形式提供。
iii.)通过在输入处提供图 ID 作为单热向量来计算嵌入。嵌入是隐藏层的结果,具有相似子图和相似结构的图具类似嵌入
4. DeepGL: Deep Graph Library
DeepGL是支持pytorch、TensorFlow和MXNet框架的实现图神经网络模型的python包
参考资料
视频讲解:Youtube: Graph Embeddings
文章:图嵌入总结