这篇论文介绍了一种图卷积网络(Graph convolution network),该论文的图卷积方法很容易理解,没有涉及傅里叶变换。论文的出发点是为图中每个结点计算得到一个低维嵌入向量。已有的基于因式分解的嵌入方法直接为每个单独的结点训练结点的嵌入向量,是transductive。论文提出来的GraphSAGE是一个泛化的归纳(inductive)框架。Transductive和Inductive的区别是:在训练过程中,已知testing data(unlabelled data)是transductive learing。
在训练过程中,并不知道testing data ,训练好模型后去解决未知的testing data 是inductive learing。
与其他图卷积网络相比,该论文不需要计算整张图的拉普拉斯矩阵,计算量少,适合用于有巨大的网络结构的问题。
图卷积网络的本质是图中的每个结点无时无刻不因为邻居和更远的点的影响而在改变着自己的状态直到最终的平衡,关系越亲近的邻居影响越大1。图的结点状态的变化可以是一个迭代的过程,结点不断地根据邻居的信息改变自身的信息。论文的图卷积方法会进行K次迭代,每次迭代通过聚集函数(aggregator function)聚合结点邻居的信息来更新结点的信息,迭代完成之后,每个结点都得到一个低维的嵌入向量,被下游的机器学习算法用于预测。
输入的是一张图 G ( V , E ) \mathcal{G}(V, \mathcal{\Epsilon}) G(V,E), V \mathcal{V} V表示所有结点的集合, E \mathcal{\Epsilon} E表示所有边的集合。聚合函数 A G G R E G A T E k , k ∈ { 1 , ⋯ , K } AGGREGATE_k, k\in\{1, \cdots, K\} AGGREGATEk,k∈{1,⋯,K},每个迭代一个。权重矩阵 W k , k ∈ { 1 , ⋯ , K } \mathbf{W}^k, k\in\{1, \cdots, K\} Wk,k∈{1,⋯,K},每个迭代一个,用于聚合信息之后的线性变化。线性变化之后是非线性激活函数 σ \sigma σ,比如ReLU。
首先是把每个结点初始化向量定义为 h v 0 \mathbf{h}_v^0 hv0, v v v表示结点。
接下来是K是迭代,在迭代中更新结点的状态。
内层循环中,第4行,采样结点v的邻居信息 { h u k − 1 , ∀ u ∈ N ( v ) } \{\mathbf{h}_u^{k-1}, \forall u \in \mathcal{N}(v)\} {huk−1,∀u∈N(v)},传入聚合函数得到聚合信息 h N ( v ) k \mathbf{h}_{\mathcal{N}(v)}^k hN(v)k。第5行,concat h v k − 1 \mathbf{h}_v^{k-1} hvk−1和 h N ( v ) k \mathbf{h}_{\mathcal{N}(v)}^k hN(v)k,之后是全连接的线性变化+非线性激活函数。
第7行,更新后的每个结点的嵌入向量 h v k \mathbf{h}_v^{k} hvk要标准化。
迭代结束后,每个结点的嵌入向量记作 z v \mathbf{z}_v zv,用于结点的预测。
GraphSAGE不会使用结点的所有邻居,因为结点可以有很多邻居,考虑所有邻居的信息会带来很大的计算量,因此GraphSAGE只随机采样固定数量的邻居,采样数量 S i , i ∈ 1 , ⋯ , K S_i, i\in{1,\cdots, K} Si,i∈1,⋯,K。
GraphSAGE的参数可以通过无监督的方式进行训练
J G ( z u ) = − log ( σ ( z u T z v ) ) − Q ⋅ E v n ∼ P n ( v ) log ( σ ( − z u T z v ) ) \mathcal{J}_{\mathcal{G}}(\mathbf{z}_u) = -\log(\sigma(\mathbf{z}_u^T \mathbf{z}_v)) - Q \cdot \mathbb{E}_{v_n \sim P_n(v)} \log (\sigma(-\mathbf{z}_u^T \mathbf{z}_v)) JG(zu)=−log(σ(zuTzv))−Q⋅Evn∼Pn(v)log(σ(−zuTzv))
该损失第一项目的是使邻近的结点有相似的表征,第二项是使不一样的结点有截然不同的表征。结点 u u u和结点 v v v的内积 z u T z v \mathbf{z}_u^T \mathbf{z}_v zuTzv越大,说明二者之间相似性越高。 σ \sigma σ应该是sigmoid函数。结点 v v v是结点 u u u固定跳数范围内的结点。 P n P_n Pn是负样本的采样概率分布, Q Q Q是负样本的数量。
如果样本具有标签,可以把无监督损失替换成监督损失,或者作为额外的损失。
聚合函数的输入是一堆无序的向量,因此聚合函数需要具备对称性,现在也有论文称permutation-invariant,无论输入数据如何排列,聚合函数的输出结果不变。具备这种性质的函数都可以作为聚合函数。论文考虑了以下3中函数。
Mean aggregator:把邻居的特征向量和自身的特征向量取平均,作为新的特征向量。把算法的第4和第5行换成下面的公式
h v k ← σ ( W k ⋅ M E A N ( { h v k − 1 } ∪ { h u k − 1 , ∀ u ∈ N ( v ) } ) ) \mathbf{h}_v^k \gets \sigma(\mathbf{W}^k \cdot MEAN(\{\mathbf{h}_v^{k-1}\} \cup \{\mathbf{h}_u^{k-1}, \forall u \in \mathcal{N}(v)\})) hvk←σ(Wk⋅MEAN({hvk−1}∪{huk−1,∀u∈N(v)}))
LSTM aggregator:LSTM并不具有对称性,但LSTM具有很强的表征能力。
Pooling aggregator:
A G G R E G A T E k p o o l = max ( { W p o o l h u k − 1 + b , ∀ u ∈ N ( v ) } ) AGGREGATE_k^{pool} = \max(\{\mathbf{W}_{pool}\mathbf{h}_{u}^{k-1} + b, \forall u \in \mathcal{N}(v)\}) AGGREGATEkpool=max({Wpoolhuk−1+b,∀u∈N(v)})
这里max可以换成mean,但是实验发现max效果更好。
超参数设定: K = 2 K=2 K=2, S 1 = 25 S_1 = 25 S1=25, S 2 = 10 S_2 = 10 S2=10。
论文使用3种数据集,论文主题分类数据集、Reddit post 话题分类数据集和蛋白质功能分类的生物蛋白质-蛋白质相互作用(PPI)图。
https://blog.csdn.net/qq_24548569/article/details/105876884 ↩︎