GPT-GNN: Generative Pre-Training of Graph Neural Networks

发布时间 2023-10-24 16:26:11作者: 馒头and花卷

Hu Z., Dong Y., Wang K., Chang K. and Sun Y. GPT-GNN: Generative pre-training of graph neural networks. KDD, 2020.

比较早的一篇图预训练模型.

符号说明

  • \(G = (\mathcal{V}, \mathcal{E}, \mathcal{X})\), 某个图, 其中 \(\mathcal{X}\) 表示结点的属性空间.
  • \(X, E\), node attributes, edges.

GPT-GNN

  • GPT-GNN 的思路就是模仿 GPT 采取自回归的生成任务 (结点属性和边) 来预训练:

    \[\log p_{\theta}(X, E) = \sum_{i=1}^{|\mathcal{V}|} \log p_{\theta}(X_i, E_i | X_{<i}, E_{< i}), \]

    这里 \(X_i, E_i\) 分别表示结点 \(i\) 的属性和它上的边, \(X_{<i}\) 表示序号在 \(i\) 之前的结点, \(E_{<i}\) 表示 \(X_{<i}\) 的子图的边.

  • 注: 为了采用自回归的方式, 需要将图序列化, 即序号为结点编号, 在训练中, 作者随机选择顺序 (相当于希望忽视顺序信息).

  • 一个主要问题是如何建模:

    \[p_{\theta}(X_i, E_i | X_{<i}, E_{< i}), \]

    毕竟 \(X_i, E_i\) 不是独立的.

  • 作者采取如下的拆分:

  • 所以整个过程可以拆分为:

    1. 根据先前的 \(X_{<i}, E_{<i}\) 和(当前结点)观测到的边 \(E_{i,o}\) 预测 \(i\) 的属性 \(X_i\);
    2. 有了 \(X_i\) 再去预测 \(i\) 的边.
  • 为了高效计算, 作者将两个任务独立开来考虑:

    1. Attribute Generation Nodes: 知道边但 mask 掉属性;
    2. Edge Generation Nodes: 知道属性但 mask 掉边.
  • 假设我们对两种类型分别编码得到: \(h^{Attr}\)\(h^{Edge}\), 我们的损失为:

    \[\mathcal{L}_i^{Attr} = Distance(Dec^{Attr}(h_i^{Attr}), X_i), \\ \mathcal{L}_i^{Edge} = -\sum_{j^+ \in E_{i, \lnot o}} \log \frac{ \exp(Dec^{Edge}(h_i^{Edge}, h_{j^+}^{Edge})) }{ \sum_{j \in S_i^- \cup \{j^+\}} \exp(Dec^{Edge}(h_i^{Edge}, h_{j}^{Edge})) }. \]

代码

[official]