【网络表示学习】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,本文训练的是一系列不同深度的聚合函数,学习节点邻居的聚合特征。

Embedding生成

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

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

损失函数

两两节点u和v的embedding向量表示z的无监督的损失函数:
J G ( z u ) = − l o g ( σ ( z u T z v ) ) − Q ⋅ E v n ∼ P n ( v ) l o g ( σ ( − z u T z v n ) ) 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})) JG(zu)=log(σ(zuTzv))QEvnPn(v)log(σ(zuTzvn))
其中 z u , ∀ u ∈ V \mathbf{z}_u,\forall u \in V zu,uV,v是u的固定长度邻居节点, σ \sigma σ 是sigmoid函数, P n P_n Pn是负采样分布, Q Q Q 是负样本数目。

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

Aggregator结构

Mean aggregator

邻居集合的均值,与GCN中卷积传播的规则相似。将下式代入伪代码4~5行
h v k ← σ ( W ⋅ M E A N ( { h v k − 1 } ∪ { h u k − 1 , ∀ u ∈ N ( 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) \} )) hvkσ(WMEAN({hvk1}{huk1,uN(v)}))
N ( v ) N(v) N(v)是节点v的邻居节点集合

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

LSTM aggregator

Pooling aggregator

A G G R E G A T E k p o o l = m a x ( { σ ( W p o o l h u i k + b ) , ∀ u i ∈ N ( 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) \}) AGGREGATEkpool=max({σ(Wpoolhuik+b),uiN(v)})

实验

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

你可能感兴趣的:(网络表示学习,网络表示学习)