graphSAGE/Inductive Representation Learning on Large Graphs

文章目录

  • 总结
  • 细节
  • 实验

总结

通过邻居节点,计算节点emb,可以无监督学习

细节

对于unseen的节点也能产出emb,主要是通过对邻居节点的学习

计算节点emb的算法步骤
graphSAGE/Inductive Representation Learning on Large Graphs_第1张图片

  1. 节点emb初始化
  2. 计算节点v的邻居节点emb: h N ( v ) k ← AGGREGATE k ( { h u k − 1 , ∀ u ∈ N ( v ) } ) h_{\mathcal{N}(v)}^k \leftarrow \text{AGGREGATE}_k(\{ h_u^{k-1}, \forall u \in \mathcal{N}(v) \}) hN(v)kAGGREGATEk({huk1,uN(v)})
  3. 更新节点v的emb: h v k ← σ ( W k ⋅ CONCATE ( h v k − 1 , h N ( v ) k ) ) h_v^k \leftarrow \sigma(\bold{W}^k \cdot \text{CONCATE}(h_v^{k-1}, h_{\mathcal{N}(v)}^k)) hvkσ(WkCONCATE(hvk1,hN(v)k))
  4. emb归一化

上述算法可以延伸到mini-batch用法上
graphSAGE/Inductive Representation Learning on Large Graphs_第2张图片
计算loss,尽量让相邻的节点有相似的emb,距离远的节点emb不同,loss如下:
J G ( z u ) = − log ⁡ ( σ ( z u T z v ) ) − Q ⋅ E v n ∼ P n ( v ) log ⁡ ( σ ( − z u T z v n ) ) J_\mathcal{G}(\bold z_u) = -\log(\sigma(\bold z_u^T \bold z_v)) - Q \cdot \mathbb E_{v_n \sim P_n(v)}\log(\sigma(- \bold z_u^T \bold z_{v_n})) JG(zu)=log(σ(zuTzv))QEvnPn(v)log(σ(zuTzvn))
其中:

  1. z v \bold z_v zv是节点u一个邻居节点
  2. P n P_n Pn是negative sampling
  3. Q Q Q是negative samples的数量
  4. z u \bold z_u zu不是从emb table中读出来的,而是从邻居节点的emb中计算出来的

图不像nlp/cv,邻居节点之间是无序的。因此理想的aggregator应该是对称的(对输入的各种排列结果,输出不变)

3个aggregator:mean aggregator(去掉concate),lstm aggregator(对输入顺序敏感,因此输入是一个random permutation),pooling aggregator(max-pooling)

实验

实验类别:节点分类,3个dataset(citation、reddit、ppi)
baseline:random classifier,lr,deepwalk,deepwalk+random emb拼接
loss函数:unsupervised loss如上,以及cross-entropy as supervised loss
评估指标:f1
实验结果:
graphSAGE/Inductive Representation Learning on Large Graphs_第3张图片

你可能感兴趣的:(#,图模型,机器学习,人工智能,论文笔记,深度学习)