【网络表示学习】GraphSAGE

题目:Inductive Representation Learning on Large Graphs

作者:Hamilton, William L. and Ying, Rex and Leskovec, Jure

来源:NIPS 2017

源码:https://github.com/williamleif/GraphSAGE

目前大多数图嵌入方法在训练过程中需要图中所有节点参与,属于直推学习(transductive),无法直接泛化到之前未见的节点。本文提出一种适用于大规模网络的归纳式(inductive)模型-GraphSAGE,能够为新增节点快速生成embedding,而无需额外训练过程。

GraphSage训练所有节点的每个embedding,还训练一个聚合函数,通过从节点的相邻节点采样和收集特征来产生embedding。本文训练一组aggregator函数来从一个节点的邻节点aggregate特征信息,每个aggregator函数从不同的hops或搜索深度aggregate信息。

模型

不同于为每个节点训练独立的embedding,本文训练的是一系列不同深度的聚合函数,学习节点邻居的聚合特征。

【网络表示学习】GraphSAGE

Embedding生成

【网络表示学习】GraphSAGE

算法直观上是在每次迭代中,节点聚合邻居信息。随着不断迭代,节点得到图中来自越来越远的邻居信息。

邻居采样:在每个epoch中,均匀地选取固定大小的邻居数目,每次迭代选取不同的均匀样本。

损失函数

两两节点u和v的embedding向量表示z的无监督的损失函数:
JG(zu)=log(σ(zuTzv))QEvnPn(v)log(σ(zuTzvn)) J_{\mathcal{G}}(\mathbf{z}_u) = - {\rm log}(\sigma(\mathbf{z}_u^ \mathrm{ T } \mathbf{z}_v)) - Q \cdot \mathbb E_{v_n \sim P_n(v)} {\rm log} (\sigma(-\mathbf{z}_u^\mathrm{ T }\mathbf{z}_{v_n}))
其中 zu,uV\mathbf{z}_u,\forall u \in V,v是u的固定长度邻居节点,σ\sigma 是sigmoid函数,PnP_n是负采样分布,QQ 是负样本数目。

无监督损失函数目的是支持面向多种应用,在特定应用上可以采用特定的loss如交叉熵。

Aggregator结构

Mean aggregator

邻居集合的均值,与GCN中卷积传播的规则相似。将下式代入伪代码4~5行
hvkσ(WMEAN({hvk1}{huk1,uN(v)})) \mathbf{h}_v^{k} \gets \sigma(\mathbf{W} \cdot \mathrm{MEAN}(\{ \mathbf{h}_v^{k-1} \} \cup \{ \mathbf{h}_u^{k-1}, \forall u \in N(v) \} ))
N(v)N(v)是节点v的邻居节点集合

该aggregator与本文介绍算法的区别:没有考虑前一层的该节点表示(伪代码行5)

LSTM aggregator

Pooling aggregator

AGGREGATEkpool=max({σ(Wpoolhuik+b),uiN(v)}) {\rm AGGREGATE}_{k}^{\rm pool} = {\rm max}(\{ \sigma(\mathbf{W}_{\rm pool} {\mathbf{h}_{u_i}^{k}} + \mathbf{b} ) , \forall u_i \in N(v) \})

实验

【网络表示学习】GraphSAGE

代码:https://github.com/williamleif/GraphSAGE