GoGNN: Graph of Graphs Neural Network for Predicting Structured Entity Interactions

论文地址:GoGNN: Graph of Graphs Neural Network for Predicting Structured Entity Interactions
这篇论文被IJCAI 2020接收,主要工作是首次将图神经网络运用在由图构成的图(Graph of Graphs)上。

Graph of Graphs(GoG)

在分化学物质间相互作用的预测任务上,每一个化学物质可以看做是一个图结构,利用图神经网络的方法能够得到化学物质的特征表示,从而预测化学物质间是否存在相互作用。这样的方法只考虑了化学物质内部的图结构信息,而忽视了大量的化学物质及其之间的相互作用本质上也是一个图结构。
GoGNN: Graph of Graphs Neural Network for Predicting Structured Entity Interactions
如上图所示,图中的每一个节点也是一个图,所以这是一个由图构成的图(Graph of Graphs)。

Preliminaries

问题定义

本文在两个数据及上做了实验,分别是化学物质相互作用数据集(CCI)和药物相互作用数据集(DDI)。CCI数据集中的相互作用只有一种,DDI中的相互作用有多种,所以在CCI中可通过(Gi,Gj)\left(G_{i}, G_{j}\right)来计算(i,j)之间存在相互作用的得分pijp_{ij},在DDI中通过(Gi,r,Gj)(G_{i}, r, G_{j})三元组计算(i,j)之间存在关系r的得分pijrp_{ij}^{r}

Molecule Graph

在molecule graph GMG_M中,节点ai{a_i}代表原子i,边eije_{ij}代表ij之间的连接。

Interaction Graph

在interaction graph GI=(N,EI)G_I=(N, E_I)中,NN是节点的个数,即GMG_M的数量,EIE_IGMG_M之间的相互作用。
在DDI数据集上,每条边还有一个属性向量ere^r

GoGNN

基本框架是首先在GMG_M上得到一个表示xhiddenx_{hidden},然后再作为GIG_I的输入。
GoGNN: Graph of Graphs Neural Network for Predicting Structured Entity Interactions

molecule graph neural network

GMG_M上直接套用GCN:
M(l+1)=GCNl(A,Ml)GCNl(A,Ml)=σ(D~12A~D~12MlWl)\begin{aligned} M_{(l+1)} &=G C N_{l}\left(A, M_{l}\right) \\ G C N_{l}\left(A, M_{l}\right) &=\sigma\left(\tilde{D}^{-\frac{1}{2}} \tilde{A} \tilde{D}^{-\frac{1}{2}} M_{l} W_{l}\right) \end{aligned}
为了输出图的表示,在每一层使用self-attention机制,得到slRn×1s_{l} \in \mathbb{R}^{n \times 1}
sl=σ(D~12A~D~12MlWattl)s_{l}=\sigma\left(\tilde{D}^{-\frac{1}{2}} \tilde{A} \tilde{D}^{-\frac{1}{2}} M_{l} W_{a t t}^{l}\right)

where WattlRd×1W_{att}^{l} \in \mathbb{R} ^{d \times 1} is the attention weight matrix for the pooling layer to obtain the self-attention score.

挑选出值最高的γn\lceil\gamma n\rceil个维度作为第l层输出的GMG_M的表示:
idx=top(s,γn),smask=sidxMsel=Msmask\begin{array}{c} i d x=\operatorname{top}(s,\lceil\gamma n\rceil), s_{\operatorname{mas} k}=s_{i d x} \\ M_{s e l}=M \odot s_{m a s k} \end{array}最后将[s1,s2,..sL][s_1, s_2, ..s_L]拼接起来即可得到整个GMG_M的表示xGx_G

interaction graph neural network

Graph Attention Network

GIG_I上直接套用GAT:xGil+1=κ=1Kσ(jηGiαijκWκlxGjl)\boldsymbol{x}_{G_{i}}^{l+1}=\|_{\kappa=1}^{K} \sigma\left(\sum_{j \in \eta_{G_{i}}} \alpha_{i j}^{\kappa} \boldsymbol{W}_{\kappa}^{l} \boldsymbol{x}_{G_{j}}^{l}\right)αij=exp(LeakeyRelu(a[WxGi][WxGj]))nηGiexp(LeakeyRelu(a[WxGi][WxGn]))\alpha_{i j}=\frac{\exp \left(\operatorname{LeakeyRelu}\left(\boldsymbol{a}\left[\boldsymbol{W} \boldsymbol{x}_{G_{i}}\right] \|\left[\boldsymbol{W} \boldsymbol{x}_{G_{j}}\right]\right)\right)}{\sum_{n \in \eta_{G_{i}}} \exp \left(\operatorname{Leakey} \operatorname{Relu}\left(\boldsymbol{a}\left[\boldsymbol{W} \boldsymbol{x}_{G_{i}}\right] \|\left[\boldsymbol{W} \boldsymbol{x}_{G_{n}}\right]\right)\right)}
在计算αij\alpha_{ij}时论文里的公式没有给出代表是第几层的角标,可能是作者笔误,一般来说每一层αijl\alpha_{ij}^{l}应该都是由该层的xGjl\boldsymbol{x}_{G_{j}}^{l}xGil\boldsymbol{x}_{G_{i}}^{l}得到。

Edge Aggregation Network

由于DDI数据集上还有边的信息eijre_{ij}^r,所以在聚合时需要将边上的信息考虑进去:
GoGNN: Graph of Graphs Neural Network for Predicting Structured Entity Interactions
hWeh_{\bold W_e}是一个线性层,所以hWe(eijr)h_{\bold W_e}({e_{ij}^r})得到的是一个标量。这里作者可能又笔误了,在聚合了邻居节点的信息后没有体现出做线性变换的过程。

Prediction

在CCI数据集上,直接使用pij=σ(xGiTxGj)p_{ij}=\sigma ({\bold x_{G_i} ^T} \cdot {\bold x_{G_j}})得到(i, j)之间的score。在DDI数据集上,需要将特定的关系r考虑进去,pijr=σ((WrxGi)T(WrxGj))p_{i j}^{r}=\sigma\left(\left(\boldsymbol{W}_{r} \boldsymbol{x}_{G_{i}}\right)^{T} \cdot\left(\boldsymbol{W}_{r} \boldsymbol{x}_{G_{j}}\right)\right)