天天看点

读《Graph Matching Networks for Learning the Similarity of Graph Structured Objects》摘要1.引言2.相关3.深层图相似计算4.实验5.总结

2019

摘要

通过新的基于交叉图注意力的匹配机制对输入的一对图进行联合推理,计算它们之间的相似度得分

1.引言

现有的GNN通过迭代聚合局部结构信息的传播过程设计和计算图节点表示,对图元素的排列保持不变

(这句话语法分析看着好怪,词性真的没用错吗)

Scarselli et al., 2009;

Li et al., 2015;

Gilmer et al., 2017

然后将这些节点表示直接用于节点分类,或汇集到图向量中进行图分类。

GNN 对监督分类或回归之外的问题的研究相对较少。

主要任务:

  1. 证明GNN可以为相似性学习提供嵌入
  2. 设计GMN计算图间相似匹配

2.相关

提出GNN与WL研究图同构(相同)与本文要研究图相似有区别

全图同构或子图同构(Berretti et al., 2001; Shasha et al., 2002; Yan et al., 2004; Srinivasa & Kumar, 2003)

——————

(这一段倒是总结了不少图核的论文)

不过也提出图核更重于设计,基于图论,没有基于学习,不端到端

(Yanardag & Vishwanathan, 2015)

引入了学习,但基本元素还是手工设计的

————————

Siamese网络可通过网格化计算相似度

3.深层图相似计算

采用标准GNN和本文的GMN

3.1 图嵌入模型

这里GNN包括三部分

  • 编码器
  • 传播层
  • 聚合
编码器

通过MLP构造节点和边的嵌入向量h和e

传播层

将节点嵌入映射到新的节点表示

读《Graph Matching Networks for Learning the Similarity of Graph Structured Objects》摘要1.引言2.相关3.深层图相似计算4.实验5.总结

其中fmessage 通常是对输入拼接做MLP,而 fnode 可以是 MLP 或RNN系列

绝活这些信息可以用简单的求和,也可以用均值,最值,注意力等

通过多层传播,每个节点的表示将在其局部邻域中积累信息。

聚合

输入一系列节点表示计算出一个图表示

读《Graph Matching Networks for Learning the Similarity of Graph Structured Objects》摘要1.引言2.相关3.深层图相似计算4.实验5.总结

通过上述带有门控权重的聚合方法,可以滤波掉无关信息,这比上面说的求和等方法强得多

有了两个图的表示就可以在欧式空间计算相似度了,比如欧氏距离,余弦相似度,汉明相似度等

如果没有传播层就是

Deep Set (Zaheer et al., 2017) or PointNet (Qi et al., 2017)

计算独立点的表示,再池化到整个图上,但这样就忽视了结构信息,单纯在处理一堆独立数据

3.2 GMN

相比起GNN单独对每个图搞成嵌入,GMN是针对每对图计算相似度

改变每个传播层的节点更新模块,不仅考虑之前每个图边上的聚合信息,而且考虑图间匹配向量,用来衡量一个图中的节点与另一个图中的一个或多个节点的匹配程度

读《Graph Matching Networks for Learning the Similarity of Graph Structured Objects》摘要1.引言2.相关3.深层图相似计算4.实验5.总结

这里fmatch可以用注意力机制

读《Graph Matching Networks for Learning the Similarity of Graph Structured Objects》摘要1.引言2.相关3.深层图相似计算4.实验5.总结

相比起GNN,GMN在时间上开销多了些

注意力模块有两个好处:

  • 两图完美匹配时,注意力权重达到峰值,μ的和为0,这样两图在下一轮传播中会计算相同的表示
  • 图间差异会记录在μ的和中,通过传播逐渐放大,可以让匹配模型对差异更加敏感

匹配模型可以基于其他图来改变当前图的表示,也即调整图的表示使得图间差异愈发明显便于匹配

3.3 学习

可以选择成对训练,还是三元训练

成对训练需要标签positive (相似) or negative (不相似)

而三元训练只需要相对相似,即 G1 更接近 G2 还是 G3

使用欧式相似度,基于边缘的成对损失

读《Graph Matching Networks for Learning the Similarity of Graph Structured Objects》摘要1.引言2.相关3.深层图相似计算4.实验5.总结

其中t ∈ {−1, 1}作为这一对图的标签,γ > 0是边缘参数,d是欧氏距离

当这一对相似(t=1)时,损失L收敛到0会让d< 1−γ;当 t = −1 时,d> 1+γ。

给定 G1 和 G2 比 G1 和 G3 更接近的三元组,我们优化以下基于边距的三元组损失:

读《Graph Matching Networks for Learning the Similarity of Graph Structured Objects》摘要1.引言2.相关3.深层图相似计算4.实验5.总结

损失收敛到0可以通过边缘γ让d(G1, G2)比d(G1, G3) 小

将图表示成二进制-1或1,可以最小化相似对的汉明距离,最大化不相似对的距离

(扩大类间距,缩小类内距的方法吗?)

这样可以提高检索效率

于是可以引入tanh变化优化损失函数

读《Graph Matching Networks for Learning the Similarity of Graph Structured Objects》摘要1.引言2.相关3.深层图相似计算4.实验5.总结

其中

读《Graph Matching Networks for Learning the Similarity of Graph Structured Objects》摘要1.引言2.相关3.深层图相似计算4.实验5.总结

是近似的平均汉明距离

(有点像多图递归矩阵补全代码里的那个损失函数处理)

这样会比基于边缘的损失更稳定

4.实验

4.1 GED

GED被定义为图间最小距离,因为是NP难所以近似

(但是既然近似计算相似度的这些算法里没有用到GED或者其思想,那为啥还要说它呢,不就和它没关系吗?)

训练过程:

随机构造一个n节点,边概率p的图G1,然后再随机替换kp条边为新边构造相似样本G2,替换kn条边构造不相似样本G3,kp<kn

(原来如此,代码里构造数据集的过程类似于GED,这不是NP难吗,怪不得运行不出来?)

模型需要预测相似对(G1,G2)的相似度高于不相似对(G1,G3)

对于 GMN,可以将图间注意力可视化,以进一步了解它是如何工作的。

读《Graph Matching Networks for Learning the Similarity of Graph Structured Objects》摘要1.引言2.相关3.深层图相似计算4.实验5.总结

可以看到,当两个图匹配时,注意力权重可以很好地对齐节点,而当它们不匹配时,往往会关注度数较高的节点。 然而,该模式不像标准注意力模型那样具有可解释性。

5.总结

从相似性学习设置中学习的表示也可以轻松地泛化到训练期间未见过的类的数据(零样本泛化)。

继续阅读