论文地址:Dual-Primal Graph Convolutional Networks
这篇论文的主要工作是通过构建对偶图Dual Graph的方式将原图的边转换成对偶图中的节点,从而获得edge feature。
什么是对偶图?
原文中给出了这样的解释:
Let G = ( V , E ) \mathcal{G}=(\mathcal{V}, \mathcal{E}) G=(V,E)be a given directed graph, to which we refer as the primal graph. The dual (also known in graph theory as the line (di)graph or adjoint graph) of G \mathcal{G} G, denoted by G ~ = ( V ~ = E , E ~ ) \tilde{\mathcal{G}}=(\tilde{\mathcal{V}}=\mathcal{E}, \tilde{\mathcal{E}}) G~=(V~=E,E~), is constructed as follows : each dual vertex ( i , j ) ∈ V ~ (i, j) \in \tilde{\mathcal{V}} (i,j)∈V~ corresponds to a primal edge ( i , j ) ∈ E ~ (i, j) \in \tilde{\mathcal{E}} (i,j)∈E~, two dual vertices ( i , j ) , ( i ′ , j ′ ) ∈ V ~ (i, j),\left(i^{\prime}, j^{\prime}\right) \in \tilde{\mathcal{V}} (i,j),(i′,j′)∈V~ are connected by an edge in G ~ \tilde{\mathcal{G}} G~ if they share direction and at least an endpoint in G \mathcal{G} G.
简单地说,就是将原图中的边映射为对偶图中的节点,论文中使用了一张图来说明这个过程
左侧是原图,右侧是对偶图中对于(0, 2)
的ego graph。对偶图中的(0,3)
节点表示它是原图中的0
号节点与3
号节点之间的边。因为(0,3)
与(0,2)
都与0
号节点相连,所以(0,3)
与(0,2)
之间存在一条边。
模型部分
对偶图上的卷积
F
{F}
F是一个
n
×
q
{n \times q}
n×q的矩阵,表示原图上所有节点的feature。
F
~
\tilde{F}
F~是一个
n
~
×
2
q
{\tilde{n} \times 2q}
n~×2q的矩阵,表示对偶图上所有节点的feature。对偶图中的节点(i, j)
可由原图中的节点i
和j
的feature直接拼接得到,即
f
~
i
j
=
[
f
i
,
f
j
]
\tilde{\mathbf{f}}_{ij} =[\mathbf{f}_{i}, \mathbf{f}_{j}]
f~ij=[fi,fj]。
在对偶图上直接套用GAT:
输出是一个
q
~
\tilde{q}
q~维的向量
f
~
i
j
′
\tilde{\mathbf{f}}_{ij}^{\prime}
f~ij′。这一步在对偶图上聚合节点(i,j)
的一阶邻居信息,其实就是通过聚合原图上所有与i
和j
相连的边来更新边(i,j)
。
原图上的卷积
在对偶图上获得原图上所有边的feature后,再次套用GAT:
只不过在计算
α
i
j
\alpha_{ij}
αij时可以直接通过边上的feature得到。