graph embedding相关论文小结(三)

GNN模型

  • The Graph Neural Network Model
  • Graph Attention Networks
  • An Experimental study of neural networks for avariable Graphs
  • Skip-Graph: Learning graph embeedings with an encoder-decoder model

The Graph Neural Network Model
Franco Scarselli再2009年发表的GNN论文在最近几年才开始popular,被誉为“人工智能2.0”的模型,类似于一种通用的神经网络,可惜他并不是什么特殊的神经网络。我猜想它的来源起于Google的PageRank算法,同样的收集邻居节点的信息,同样的一轮一轮的更新自己的值只是这个值对于PageRank是Node Ranking值而对于GNN来说是node embedding向量值,就像论文中说的那样“GNNs are based on an information diffusion machanism”,也就是信息传播理论。当然GNN及其变种可以实现Graph embedding操作。而且在researchGate上面也发现Franco Scarselli写了诸多篇GNN和PageRank相关的论文。或许Graph的特点就在于“用我的邻居来刻画我自身”。当然GNN又和递归神经网络和马尔科夫链有一定关系。GNN简单的看就只两个函数f()和g(),当然函数就可以用神经网络来代替导致后来衍生出那么多种GNN版本来,这两个函数作用于每一轮中的每一个节点上面,各个节点之间参数共享,类似于卷积操作,但是Graph不是grid-structure数据不属于欧几里得几何空间。函数f()生成node embedding,而函数g()需要借助该node embedding得到预测值。通过label设定损失函数来优化参数值。总体的逻辑在这篇论文中的那幅图中非常清楚:
在这里插入图片描述
最核心的两个公式也就是原始论文中的(5)式子:
在这里插入图片描述
GNN的根本理论在于Banach fixed point theorem,也就是Banach固定点理论保证收敛性以及解的唯一性。当然GNN的优化过程如果懂得RNN的BPTT向后传播优化过程的话就不难理解了。后来论文分析了GNN的计算复杂性和优化过程。
GNN难以适用于动态图,总不能新加一条边或一个点就重新训练一次吧。而且GNN对于边的利用情况,对周围节点的具体操作导致了后来的诸多改进版本。
另外GNN我认为说白了就是在做卷积操作,只是Graph上的convolution。如果真的是这样的话,计算机领域所谓的卷积看似是加权求和的啊,而对应到信号处理领域便是大名鼎鼎的“傅里叶变换”,也就是说GNN实际就是Graph上的傅里叶变换,据说傅里叶变换是一种“世界观”,而且在诸多地方出现了Fourier transform的身影,所以本质还是在Graph Fourier transform,这是和图信号处理领域相关的内容,还需要不断地学习。当然相关教程有一个很好的关于傅里叶级数和傅里叶变换的入门文章来自知乎。

Graph Attention Networks
GAT图注意力神经网络,在GNN的基础上加入了注意力机制优化权重值的分配策略提升效果。论文中提到的用了self-attention和multi-head attention,自注意力机制衡量某中心节点的邻居节点与该节点的关系进而给出权重值,加权求和。多头注意力就是多次加权求和提升效果。注意力模型当然借鉴自然语言处理中的诸多注意力模型机制。实验效果发现PPI数据集上效果提升很大而其他实验数据集上提升不怎么样,注意力机制在大规模图中可能会更有power。而且作者认为GAT可能能够用于indective settings情况。
在这里插入图片描述

Skip-Graph: Learning graph embeedings with an encoder-decoder model
论文目的在于学习Graph embedding,具体我认为是借由sub-graph embedding来得到graph embedding。文章中说的很清楚,灵感来源于发表在2015NIPS上的skip-thought模型,简单的说就是将以往word2vec模型基于词共现的情况扩展成了句子,一句话和它前一句话以及后一句话相关联。如果把这种“套路”放到Graph embedding而不再是word embedding或者sentence embedding,作者采取的方法就是先random walk随机游走采样得到一条一条的采样序列,之后每条序列断成三段当作三句话。借用自然语言处理里面的encoder-decoder模型,encoder输入的是中间那段node seq,输出预测值是前一段node seq或者后一段node seq。当然encoderh和decoder具体用的是GRU。文章将encoder与decoder链接的hidden vector也就是那个context vector看作这条序列Si的embedding,然后想通过某些方法由多条序列得到的embedding来生成整个图的embedding,这些方法包括直接用一条长长的seq来生成representation当作graph embedding的single walk方法,逐元素平均操作得到graph representation的average方法,逐元素取绝对值最大值的Max方法和聚类方法。实验做的是Graph classification,当时看了半天没看明白到底做什么实验。

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值