图神经网络和图嵌入
近期做自己研究生论文的第三个创新点的时候需要用到一些图结构相关的知识,因此快放假的时间实验也到了瓶颈时期,正好可以去学习一下相关的知识了解一下相关的领域确定合适的idea
图嵌入表示学习
核心的任务就是,如何把节点映射成D维度的向量呢?
问题的答案就是图嵌入:Graph Embedding
这里我自己需要注意的就是,图嵌入的操作不仅仅可以对节点进行嵌入的操作处理,还可以对边进行嵌入的处理。对自己研究创新点最重要的一步是说这个图嵌入完全是可以对整个全图进行嵌入得到嵌入向量的。
- 人工特征工程:节点重要度、集群系数、Graphlet
- 图表示学习:通过随机游走构造自监督学习任务。DeepWalk Node2Vec
- 矩阵分解
- 深度学习:图神经网络
概念
把节点映射为一个低维向量。是一种分布式的表示,这个向量是与下游的任务是无关的。
d维空间中向量的相似度反应了是整个节点之间的相似度。 也就是可以简单的说,当我们的上游的嵌入向量表示的合理的时候,下游的任务才能更加顺利的去进行下去。
下面是将通过聚类得到的图嵌入到二维的空间中得到的结构实例。训练一个分类模型也就是说能够去尽量的拟合这些数据的信息。
基本框架编码器解码器
- 首先我们先看课程中提到的编码器的结构。编码之后的结构,向量点乘的数值应该是能够反应节点之间的相似度信息的。
2. 解码器的结构:解码器这里就是用的余弦相似度的距离,当然也可以自己定义相似度的信息去作为我们的距离度量指标
这里的任务就是要优化迭代这里嵌入的D维度向量使得编码的特征能够更加符合我们解码器的标注。
之后课程中讲了最简单的一种Encoding方式,叫做查表的方式。这里自己理解的其实就是用过one-hot编码和一个嵌入矩阵相乘的形式
是一种浅编码器使用深度学习的是深编码器
基于随机游走的方法DeepWalk
这里先听一下课简单的记录一下关键的信息,了解一些原理,后面的假期有时间的话可以在学一下其中的论文讲解的部分。
NLP领域里面的一种复用。可以类比NLP里面的word2vec的思想
大量随机游走节点的生成就可以很好的描述其中的起始节点U节点的信息了。是一种无监督的学习方法。
最大这个似然函数来进行学习。
优化Node2Vec
这里的步骤基本上是一样的,区别在于这里是有偏的二阶随机游走。
嵌入整张图
这里简单说一下自己看这个视频的重点就是想了解一下,目前的GNN算法能否对整张图来进行一个嵌入的操作呢?他这里说的是可以的并且是包括了子图的结构信息。
通过这里来掌握一下从节点的嵌入到整图的嵌入除了我自己指标不太行的取一个平均的操作之前的工作中有没有一些其他的实现算法呢?
- 他说的这种方式是一个求和的方式,自己感觉是不太靠谱的
-
第二种方式感觉还是比较合理的一种方式,说是引入一个虚拟节点和全图进行连接,然后在求这个节点的嵌入向量表示。
-
一种比较老的实现算法,匿名随机游走的算法。
全图的特征工程
从评论区作者的问答中看到了,图嵌入就是对节点的信息进行嵌入操作的,如果我们想要对节点的信息得到全图的特征表示就要去学习一下全图的特征工程。
这里说是对应全图层面的数据挖掘任务。把整张图变成一个d维度的特征向量。
这里的一个思想是把全图的一个节点的数量作为整体的一个向量,但是根据和自己的任务需求这里有点不太匹配。
感觉这种传统的特征工程的方式要用到GNN中表示出全图的一个特征来说相对还是比较难的一种实现方式吧
深度图神经网络
表示学习:从数据中提取最少必要信息
图嵌入、节点表示学习:把节点映射为低维连续稠密向量
消息传递和计算图
看到下面的这个讲解感觉自己意识到自己的指标存在不足的一个可能的问题可能有嵌入的维度的问题导致的表征能力的不足,256维度出来的节点维度应该是大于256维度感觉最后的效果会比较好一点