[Graph Classification] GraphSAGE 论文笔记
作者:互联网
文章目录
[Graph Classification] GraphSAGE
GraphSAGE在很多paper中都作为graph classification的baselines之一,所以可见他在图分类问题是有着很好的效果。
GraphSAGE是一种inductive representation learning,即可以利用已知节点的信息为未知节点生成embeddings。而GCN是一种transductive learning,即它必须在一个确定的图中进行embeddings的学习,无法直接泛化到未出现过的节点。
Introduction
GraphSAGE的方法如上图所示:
- 从顶点开始采样一定数量的邻居节点
- 将邻居节点的feature information 进行聚合,并和节点当前层的feature进行连接,并通过非线性函数得到新的feature
- 迭代1-2,最后一层的feature,即为节点的embeddings
Sample method
出于对计算效率的考虑,对每个顶点采样一定数量的邻居顶点作为待聚合信息的顶点。设采样数量为k,若顶点邻居数少于k,则采用有放回的抽样方法,直到采样出k个顶点。若顶点邻居数大于k,则采用无放回的抽样。
当然,若不考虑计算效率,我们完全可以对每个顶点利用其所有的邻居顶点进行信息聚合,这样是信息无损的。
Embedding generation algorithm
K K K为深度,即GraphSage能够聚合到的邻居节点的最远深度。
算法看起来很简单,4-5行为关键,即对邻居节点的特征进行聚合,然后和自己的特征进行连接并且通过非线性函数得到新的特征。
Learning parameters
- 无监督学习:
基于整个图的损失函数,希望临近的节点有相似的表示,让离的远的节点的表示高度不同。损失函数如下:
最小化上面的损失函数,其中节点v是节点u通过固定长度的random walk产生的节点序列中的"邻居节点", P n P_n Pn是负采样的概率分布,Q决定负采样的样本数量。这里的顶点表示向量是通过聚合顶点的邻接点特征产生的,而不是简单的进行一个embedding lookup操作得到。 - 监督学习:
监督学习形式根据任务的不同直接设置目标函数即可,如最常用的节点分类任务使用交叉熵损失函数。
Aggregator Architectures
聚合函数必须满足的是,对于无序的节点序列,聚合函数的输出与其输入节点的序列是无关的,即聚合函数必须是symmetric的。
作者提出了3个聚合函数:
-
Mean aggregator
-
LSTM aggregator
LSTM的表达能力更强,但是它不是symmetric的,所以在输入的时候,需要对节点进行一次random operation
-
Pooling aggregator
Pooling aggregator 先对目标顶点的邻接点表示向量进行一次非线性变换,之后进行一次pooling操作(maxpooling or meanpooling),将得到结果与目标顶点的表示向量拼接,最后再经过一次非线性变换得到目标顶点的第k层表示向量。
论文原文:Inductive Representation Learning on Large Graphs
标签:采样,聚合,函数,Classification,Graph,GraphSAGE,邻居,顶点,节点 来源: https://blog.csdn.net/qq_38328871/article/details/110743038