核心思想

  该文提出一种图匹配神经网络用于解决Lawler’s形式的二次分配问题,并将其推广到超图匹配和多图匹配领域。在之前的文章中,我们介绍过图匹配问题通常被定义为一种二次分配问题(QAP),通常有两种形式化方式:Lawler’s QAP问题和Koopmans-Beckmann’s QAP问题。Koopmans-Beckmann’s QAP可以看作是Lawler’s QAP的一个特例,现有的基于深度学习的图匹配方法都是基于Koopmans-Beckmann’s QAP形式研究的,而该文则是首次使用图匹配神经网络解决了Lawler’s QAP。作者将图和图之间的关联矩阵(affinity matrix)转化为关联图(association graph),来描述点和点与边和边之间的相似程度,并采用分类的方式从关联图中选出匹配得分高的顶点,其对应的节点对则认为是匹配点。作者还将SplineConv卷积层引入了特征提取阶段,并融合了匹配约束,进一步提高了图匹配的效果。最后,作者将二阶图匹配推广到高阶的超图匹配和多图匹配问题中,取得了更加鲁棒和稳定的效果。算法流程如下图所示

实现过程

   该文不限制于图像中的关键点匹配,任何的图结构数据,只要给定对应的关联矩阵都可以用本文的方法求解,但为了方便理解我们还是以图像中的关键点图匹配为例来介绍。首先输入的图像经过CNN进行特征提取,利用VGG的relu4_2层输出的特征向量Uˉ\bar{U}Uˉ作为节点的特征,并通过双边上采样的方式与人工标注的关键点进行对齐,得到每个关键点的特征向量。relu5_1层输出的特征向量Fˉ\bar{F}Fˉ用于描述边的特征,图的结构是采用G,HG,HG,H矩阵来描述的,具体可参考这篇博客。通过级联每条边的两个端点的特征来表示边特征:

其中[⋅⋅][\cdot \cdot][⋅⋅]表示级联操作。节点之间的相似矩阵KpK_pKp​和边之间的相似矩阵KeK_eKe​计算方法如下

其中Λ\LambdaΛ是可学习的参数矩阵,关联矩阵KKK是采用因式分解图匹配(FGM)形式描述

  得到关联矩阵KKK后,进而构建关联图,如下图所示

图中看起来邻接矩阵WWW和原本的关联矩阵KKK是一样的呀,这种转换是不是没有什么差别呢?为了方便大家理解,我这里简单的辨析几个图匹配的概念。

邻接矩阵(adjacency matrix) 描述的是一幅图内部节点之间的关系,比如一幅图包含nnn个节点,则邻接矩阵就是n×nn\times nn×n维的,描述了任意两个节点之间的关系,比如节点之间的相似性或者距离,或是两个节点是否有边连接。所以邻接矩阵的非对角线元素也就描述了图的边的特征,如果两个节点之间没有边连接那么对应边的特征也就为0。
关联矩阵(affinity matrix) 描述的是两个图之间的对应关系,比如两幅图分别包含nnn和mmm个节点,那么关联矩阵就是nm×nmnm\times nmnm×nm维的。其中对角线元素描述了两个节点之间的关系(通常是相似性),如K1a,1aK_{1a,1a}K1a,1a​元素就描述了图G1G_1G1​中的节点V1V_1V1​和图G2G_2G2​中的节点VaV_aVa​之间的相似关系。非对角线元素描述了两个边之间的关系,如K1a,2bK_{1a,2b}K1a,2b​元素就描述了图G1G_1G1​中的边E12E_{12}E12​和图G2G_2G2​中的边EabE_{ab}Eab​之间的相似关系。

回到本文的中,原本是利用关联矩阵KKK来描述两幅图之间的关系的,而作者将两幅图之间的关系转化成了一个新的图,称之为关联图(association graph)。则原本两幅图节点(node)之间的对应关系,即关联矩阵KKK的对角线元素, 转化到关联图中就成了关联图的顶点(vertex)。

为了方便区分,图中的每个元素我们称之为节点(node),关联图中的每个元素我们称之为顶点(vertex)。 对于图的邻接矩阵,其对角线元素描述的节点和自身之间的关系,通常都是常值1。但对于关联图而言,他的邻接矩阵对角线元素则是描述了顶点和自身之间的关系,实质上是原图中对应两个节点之间的相似程度

两幅图边之间的关系,如E12E_{12}E12​和EabE_{ab}Eab​之间的相似程度,即关联矩阵KKK的非对角元素,转换到关联图中就变成关联图的边。因此,关联图的加权邻接矩阵WWW是来自于关联矩阵KKK的非对角元素,而初始的顶点特征v(0)v^{(0)}v(0)就是KKK的对角元素:

  完成关联图的构建后,本文利用图卷积网络对顶点进行分类预测,得到两个图的匹配关系。顶点的特征值越大,就表示该顶点所描述两个节点之间匹配的概率就更大。作者构建了无加权的邻接矩阵AAA,如果Kia,jb>0K_{ia,jb}>0Kia,jb​>0则对应的元素Aia,jb=1A_{ia,jb}=1Aia,jb​=1,否则就为0。简单来说AAA描述了关联图的顶点之间是否有边连接。然后计算度矩阵DDD

顶点的信息更新与聚合方式如下

v(k)v^{(k)}v(k)表示第kkk层图卷积神经网络的节点的特征向量,fmf_mfm​和fvf_vfv​都是带有ReLU激活函数的全连接层,分别表示信息传递函数和节点更新函数。上述是原始的信息编码方式,没有考虑匹配过程中节点之间一 一对应的约束条件。因此作者在此基础上又提出了带有匹配约束的编码方式,顶点的特征向量为

其中vecvecvec表示向量化操作,Classifier是一个由Sinkhorn网络构成的分类器。如前图(d)所示,将顶点特征向量转化为节点之间的相似性得分矩阵,然后经过Sinkhorn网络转化为双随机矩阵,最后再重新进行向量化,并与原顶点特征m(k)m^{(k)}m(k)进行级联,构成带有匹配信息的特征向量。这是由于Sinkhorn处理过后,矩阵的每一行每一列都进行归一化处理,每一行的最大值对应的列就是该点对应的匹配点。
  经过几层图卷积神经网络的处理之后,顶点的分类任务同样由Sinkhorn网络实现。先对定地点的特征向量进行全连接映射与指数函数激活,如下式

α\alphaα表示规则化权重,经过激活处理的得分向量s(k)s^{(k)}s(k),变形为n1×n2n_1\times n_2n1​×n2​维的矩阵,然后经过Sinkhorn处理得到双随机矩阵SSS,来表示节点之间的相似性得分。此外作者还提出一种名为Gumbel-Sinkhorn的分类方法,上式的计算改变为

其中ggg是从标准Gumbel分布中采样得到的,其累计分布函数为

最后利用交叉熵损失函数来进行训练

XgtX^{gt}Xgt表示真实的匹配关系矩阵,Xi,agt=1X^{gt}_{i,a}=1Xi,agt​=1表示节点ViV_iVi​和节点VaV_aVa​匹配,否则不匹配。

  为了提高图匹配的效果,作者在特征提取阶段引入了SplineConv层用于编码几何信息。具体实现如上图所示,VGG的relu4_2层和relu5_1层输出级联起来构成初始节点特征Uˉ\bar{U}Uˉ,然后经过SplineConv层后得到改进后的节点特征向量Fˉ\bar{F}Fˉ,边的特征由其端点对应节点之间的差值来构成

然后,VGG的relu5_3输出的特征值经过最大值池化后得到全局特征向量,两幅图对应的全局特征向量gˉ1,gˉ2\bar{g}^1,\bar{g}^2gˉ​1,gˉ​2经过级联,全连接层和tanh激活函数后,得到特征向量gˉ\bar{g}gˉ​

分别计算节点和边对应的全局特征向量gˉnode,gˉedge\bar{g}_{node},\bar{g}_{edge}gˉ​node​,gˉ​edge​用于关联矩阵的计算

创新点

  • 首次提出一种图匹配神经网络用于解决Lawler’s形式的二次分配问题
  • 在特征提取阶段引入SplineConv,在编码阶段引入匹配约束提高了图匹配的效果
  • 将该方法推广到超图匹配和多图匹配任务中

算法评价

  本文首次通过深度学习的方式解决了Lawler’s形式的二次分配问题,拓宽了图匹配神经网络能够解决的问题范围。通过关联图的构建,将图匹配问题转化为节点的分类问题,使得该问题能够利用图神经网络进行预测求解,并且整个过程都是可微分的。过程中引入的匹配约束,SplinceConv和Gumbel-Sinkhorn等方法都有效的改进了图匹配的效果。关于超图匹配和多图匹配部分,我目前还没有完全搞明白,后面再找机会补充。

如果大家对于深度学习与计算机视觉领域感兴趣,希望获得更多的知识分享与最新的论文解读,欢迎关注我的个人公众号“深视”。

论文阅读笔记《Neural Graph Matching Network: Learning Lawler’s Quadratic Assignment Problem With Extension》相关推荐

  1. 《Beta Embeddings for Multi-Hop Logical Reasoning in Knowledge Graphs》论文阅读笔记

    <Beta Embeddings for Multi-Hop Logical Reasoning in Knowledge Graphs>论文阅读笔记 主要挑战贡献: KG上的推理挑战主要 ...

  2. 论文阅读 | NIPS‘20 | Beta Embeddings for Multi-Hop Logical Reasoning in Knowledge Graphs

    很有意思的一篇paper.在众多Knowledge Graph Embedding (KGE) 的论文中通过问题设计和有意思的解决方式脱颖而出. 首先来看看问题设计. 一般的KGE model都是利用 ...

  3. Beta Distribution Guided Aspect-aware Graph for Aspect Category Sentiment Analysis论文阅读笔记(EMNLP2021)

    目录 标题翻译:基于Beta分布引导方面感知图的方面类别情感分析 原文链接:https://aclanthology.org/2021.emnlp-main.19.pdf 摘要: 1 引言 2 相关工 ...

  4. Phrase-BERT: Improved Phrase Embeddings from BERT with an Application to Corpus Exploration论文阅读笔记

    问题: 因为bert是在长文本(512token长度)预训练的,因此,如果没有特定于任务的微调,BERT在短语和句子上的表现通常比简单基线(如GLoVe的平均池化)更差.且字节2020在EMNLP上的 ...

  5. DeepWeak: Reasoning Common Software Weaknesses via Knowledge Graph Embedding 阅读笔记

    DeepWeak: Reasoning Common Software Weaknesses via Knowledge Graph Embedding 阅读笔记 Article Background ...

  6. [论文阅读笔记] Are Meta-Paths Necessary, Revisiting Heterogeneous Graph Embeddings

    [论文阅读笔记] Are Meta-Paths Necessary? Revisiting Heterogeneous Graph Embeddings 购物返利 www.cpa5.cn 本文结构 解 ...

  7. 论文阅读笔记—Reasoning on Knowledge Graphs with Debate Dynamics(AAAI,2020)

    这是一篇非常有趣的工作,看完会觉得眼前一亮. 论文标题:Reasoning on Knowledge Graphs with Debate Dynamics 发表于AAAI,2020 动机  很多机器 ...

  8. 论文阅读笔记——《a simple but tough-to-beat baseline for sentence embeddings》

    <a simple but tough-to-beat baseline for sentence embeddings>published at ICLR 2017. ICLR会议的论文 ...

  9. Learning Hierarchy-Aware Knowledge Graph Embeddings for Link Prediction论文阅读笔记

    我的博客链接 0. 前言 1. 作者试图解决什么问题? 作者想在KGE中对语义层级(semantic hierarchies)进行建模. 2. 这篇论文的关键元素是什么? semantic hiera ...

  10. 斯坦福图机器学习CS224W笔记自用: Reasoning in Knowledge Graphs using Embeddings

    1. 基于嵌入的知识图推理 目标:如何对知识图进行多跳推理? 知识图推理: 回答多跳查询 路径查询 连接查询 Query2box 示例:生物医学图 知识图谱上的预测查询 我们是否可以进行多跳推理,即在 ...

最新文章

  1. BeginInvoke与EndInvoke方法解决多线程接收委托返回值问题
  2. 贪心算法-跳跃游戏——b
  3. php 自动创建文件,php:自动创建多级文件夹
  4. HTML5开发 桌面提醒功能
  5. 计算机专业导论论文2000字,计算机专业导论论文.doc
  6. 教育部官宣延期开学 这些教培机构在线捐课捐资
  7. Linux 基础命令:IP 路由操作 -ip命令
  8. web服务中使用线程池减少时间的方法
  9. 惠普电脑u盘重装系统步骤_惠普电脑怎么用u盘重装系统步骤
  10. 从步履蹒跚到举重若轻,阿里基础架构如何扛住全球最猛的流量洪峰?
  11. python 源代码 macd双底 高 低_通达信双底选股公式-MACD底背离通达信选股公式
  12. LeCo-221. 最大正方形
  13. 实战演练 | Navicat Premium 轻松连接阿里云云数据库
  14. 深度学习-20:神经科学、脑科学和稀疏特性
  15. Win10 蓝屏0xc0000098修复
  16. 华为2018款MateBook X Pro实现多屏协同
  17. 根据地址获取坐标经纬度
  18. 键盘突然失灵-解决方法:卸载->重启
  19. ​【安全牛学习笔记】端口扫描(二)
  20. Linux上后台运行python脚本,并查看脚本日志

热门文章

  1. css实现流星划过动画
  2. 闸门机制(Gate Mechanism)
  3. 北京语言大学计算机英语统考,大学英语b级复习资料_统考英语b题库|北语网院大学英语b辅导...
  4. 软件工程-笔记(未整理)
  5. php录音功能,微信开发之录音功能
  6. 百度网盘撸用户羊毛是怎么一回事
  7. C++计算机软件系统
  8. 有哪些微信小程序值得推荐?
  9. android app连接打印机程序,Android App新增打印机支持 手机打印就是爽
  10. 程序启动,遇到Process finished with exit code 1 解决方法