Distilling Knowledge from Graph Convolutional Networks

发布时间 2023-11-03 16:11:06作者: 馒头and花卷

Yang Y., Qiu J., Song M., Tao D. and Wang X. Distilling knowledge from graph convolutional networks. CVPR, 2020.

蒸馏表征间的结构关系, 教师必须是图网络结构?

符号说明

  • \(\mathcal{G} = (\mathcal{V}, \mathcal{E})\), 图;
  • \(\mathbb{X} = \{x_1, x_2, \ldots, x_n\} \subset \mathbb{R}^F\), \(x_i \in \mathbb{R}^F\) 表示结点 \(v_i\) 上的特征;
  • 一般的图网络更新方式为:

    \[x_i' = \oplus_{j \in \mathcal{N}(i)} h_{\theta}(g_{\phi}(x_i), g_{\phi}(x_j)), \]

    其中 \(g, h\) 学习边和结点信息, \(\oplus_{j \in \mathcal{N}(i)}\) 则表示融合邻居 \(\mathcal{N}(i)\) 的一种策略 (例如, 求和或者平均);

DistillGCN

Local Structure Preserving

  • 假设我们有每个节点当前的特征:

    \[\mathbb{Z} = \{z_1, z_2, \ldots, z_n\} \subset \mathbb{R}^F. \]

  • 对于每个结点 \(i\), 我们可以计算得到它和邻居结点的一个关系:

    \[LS_{ij} = \frac{e^{\mathcal{SIM}(z_i, z_j)}}{\sum_{k \in \mathcal{N}(i)}e^{\mathcal{SIM}(z_i, z_k)}}, \quad j \in \mathcal{N}(i). \]

  • 这里 \(\mathcal{SIM}(z_i, z_j)\) 为相似度度量函数, 作者建议如下的几种选择 (RBF 的结果最好一点):

  • 假设, 对于教师模型和学生模型我们分别有:

    \[LS^t, LS^s, \]

    则我们可以通过 KL 散度来让学生模仿教师和邻居的关系 (KL 散度确定没搞反吗?):

    \[\mathcal{S}_i = D_{KL}(LS_i^s\| LS_i^t) = \sum_{j \in \mathcal{N}(i)} LS_{ij}^s \log \frac{LS_{ij}^s}{LS_{ij}^t}. \]

  • 然后总的蒸馏损失为:

    \[\mathcal{L}_{LSP} = \frac{1}{n} \sum_{i=1}^n \mathcal{S}_i. \]

  • 总的损失为:

    \[\mathcal{L} = \mathcal{H}(p_s, y) + \lambda \mathcal{L}_{LSP}. \]

代码

[official]