【机器学习】图像嵌入(Graph Embedding)笔记

1. 什么是Graph Embedding?

Embedding是将目标(文字、图像)降维,并在结果中保留重要信息。而Graph Embedding就是针对于图像信息的提取。
【机器学习】图像嵌入(Graph Embedding)笔记_第1张图片
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

        【机器学习】图像嵌入(Graph Embedding)笔记_第2张图片
    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 方法解决了这个问题。

      【机器学习】图像嵌入(Graph Embedding)笔记_第3张图片


   b.)SDNE结构深度网络嵌入
      结构深度网络嵌入 (SDNE)不执行随机游走,同时在不同任务上的表现非常稳定。
      它的设计使嵌入保持一阶和二阶接近度。一阶接近度是由边连接的节点之间的局部成对相似度。它表征了本地网络结构。如果网络中的两个节点与边缘相连,则它们是相似的。当一篇论文引用另一篇论文时,这意味着它们涉及相似的主题。二阶接近度表示节点邻域结构的相似性。它捕获了全局网络结构。如果两个节点共享许多邻居,它们往往是相似的。


   c.)Graph2vec:嵌入整个图,即将全图描绘成一个向量。图嵌入最佳性能的方法
      Graph2vec基于使用 skip-gram 网络的doc2vec方法的思想,用于预测子图。包括以下三个步骤。
      i.)从图中采样和重新标记所有子图。子图是出现在选定节点周围的一组节点。子图中的节点距离选择的边数不远。
      ii.)训练skip-gram模型。图表类似于文档。由于文档是一组单词,因此图是一组子图。在这个阶段,skip-gram 被训练以最大化预测输入图中存在的子图的概率。输入图以 one-hot 向量的形式提供。
      iii.)通过在输入处提供图 ID 作为单热向量来计算嵌入。嵌入是隐藏层的结果,具有相似子图和相似结构的图具类似嵌入

      【机器学习】图像嵌入(Graph Embedding)笔记_第4张图片

4. DeepGL: Deep Graph Library

DeepGL是支持pytorch、TensorFlow和MXNet框架的实现图神经网络模型的python包

Github传送门:DeepGL


参考资料

视频讲解:Youtube: Graph Embeddings
文章:图嵌入总结

你可能感兴趣的:(CV,机器学习,算法,人工智能,计算机视觉,computer,vision)