当前位置: 首页 > news >正文

【论文阅读】SimGNN:A Neural Network Approach to Fast Graph Similarity Computation

文章目录

  • 一、摘要
  • 二、要完成的任务分析
  • 三、图模型提取全局与局部特征
  • 四、NTN模块的作用与效果
  • 五、点之间的对应关系计算


论文来源:SimGNN:A Neural Network Approach to Fast Graph Similarity Computation

一、摘要

  • 图形相似性搜索是最重要的基于图形的应用程序之一,例如查找与查询化合物最相似的化合物。
  • 图相似性距离计算,如图编辑距离(GED)和最大公共子图(MCS),是图相似性搜索和许多其他应用程序的核心操作,但实际计算成本很高。
  • 受神经网络方法最近成功应用于若干图形应用(如节点或图形分类)的启发,我们提出了一种新的基于神经网络的方法来解决这一经典但具有挑战性的图形问题,旨在减轻计算负担,同时保持良好的性能
  • 提出的方法称为SimGNN,它结合了两种策略。
  • 首先,我们设计了一个可学习的嵌入函数,将每个图映射到一个嵌入向量中,从而提供图的全局摘要。提出了一种新的注意机制,以相对于特定的相似性度量来强调重要节点。
  • 其次,我们设计了一种成对节点比较方法,用细粒度节点级信息补充图级嵌入。我们的模型在看不见的图上实现了更好的泛化,在最坏的情况下,两个图中的节点数以二次时间运行
  • 以GED计算为例,在三个真实图形数据集上的实验结果证明了该方法的有效性和有效性。具体而言,与一系列基线相比,我们的模型实现了更小的错误率和更大的时间减少,包括GED计算的几种近似算法,以及许多现有的基于图神经网络的模型。
  • 我们的研究表明,SimGNN为图相似性计算和图相似性搜索的未来研究提供了一个新的方向

二、要完成的任务分析

首先看看SimGNN的整体结构框图

在这里插入图片描述

使用图神经网络,对图的相似度进行快速预测

在这里插入图片描述

任务分析

  • 将图信息编译为一个向量(一个可学习的Embedding)
  • 将点信息编译为一个向量(一个可学习的Embedding)

在这里插入图片描述

  • 端到端的网络(end to end),即给定输入,返回输出,中间过程全部可计算梯度,可微
  • 给定一对图(输入),返回他们的相似度得分(输出)

在这里插入图片描述

  • 采用基于注意力机制的聚合方法

在这里插入图片描述

三、图模型提取全局与局部特征

第一步:对点做编码(图卷积GCN)

在这里插入图片描述

第二步:对图编码
论文中说:“常规的对图编码是对图中每个点的Embedding做平均或者做加权平均(权重一般由点的度决定,度越大权重越大),但是现实中,有一些点的重要程度不是由它的度或者结构所能轻易决定的。”
所以作者采用了注意力机制进行权重的计算

在这里插入图片描述

作者采用的权重计算:点的特征与全局特征(由GCN提取)做内积,内积值越大权重越大(最后对内积结果做SoftMax归一化即可)

在这里插入图片描述

思路回顾

在这里插入图片描述

四、NTN模块的作用与效果

先用SVD矩阵分解做个简单的例子
假设有一个大矩阵 : 100w * 1000w ,如果我们直接对其作计算会非常慢
SVD矩阵分解:将其分解为 [100w * k] [k * 1000w] 两个小矩阵,中间的k就是他们之间的桥梁,我们可以通过计算两个小矩阵,不断迭代找到最合适的k,比较高效

在这里插入图片描述

综上所述,再来看NTN模块,可以将其分为两个部分。
①:可以将可学习参数W理解为绿色向量和黄色向量的桥梁,去学习怎么将他们联系起来(即得到绿色向量和黄色向量的相同的关键特征)
②:将黄色和绿色向量拼接在一起,左乘一个矩阵再+上一个向量,相当于WX+B
①+②:将①和②两种方法提取的特征加在一起,进行特征融合,作为最后的结果输出

在这里插入图片描述

五、点之间的对应关系计算

评估两个图的相似度光靠全局特征肯定是不够的,例如两个班的平均分相同,但是具体哪个班的高分多却很难预测。所以,作者还考虑了两个图的点之间的对应关系计算。

如下图所示,A图中有8个点,B图中只有6个点。这可怎么办呢?作者的做法是,将点数量较少的用0向量进行填充,填充后的A的点矩阵和B的点矩阵就可以进行矩阵乘法了

在这里插入图片描述
在这里插入图片描述

相关文章:

  • Spring源码分析之AOP
  • 【0136】【libpq】startup packet应用机制及构建过程(6)
  • 如今Android 工作难找,面试也难~ 这是在劝退吗?
  • WebShell后门检测与WebShell箱子反杀
  • Java毕业设计选题推荐 SpringBoot毕设项目分享
  • 【Linux kernel/cpufreq】framework ----cpufreq core(1)
  • 一文2000字手把手教你自动化测试平台建设分享
  • 国务院:电子印章跨地区跨部门互信互认,契约锁助力企业办事提效
  • 同程内网流传的分布式凤凰缓存系统手册,竟遭GitHub强行开源下载
  • 【Hack The Box】windows练习-- devel
  • 山西大同大学技术会,大同大学的家!
  • verilog--用于电路设计--0
  • 完全二叉搜索树
  • 每天一个小细节:UDP协议特点与报文结构
  • Buff/Cache概念和清理方法
  • 2017-09-12 前端日报
  • CSS居中完全指南——构建CSS居中决策树
  • JavaScript中的对象个人分享
  • leetcode46 Permutation 排列组合
  • Object.assign方法不能实现深复制
  • Python语法速览与机器学习开发环境搭建
  • select2 取值 遍历 设置默认值
  • Tornado学习笔记(1)
  • vue从创建到完整的饿了么(11)组件的使用(svg图标及watch的简单使用)
  • Vue官网教程学习过程中值得记录的一些事情
  • 互联网大裁员:Java程序员失工作,焉知不能进ali?
  • 前端每日实战:61# 视频演示如何用纯 CSS 创作一只咖啡壶
  • 浅析微信支付:申请退款、退款回调接口、查询退款
  • 什么软件可以提取视频中的音频制作成手机铃声
  • 世界上最简单的无等待算法(getAndIncrement)
  • 我的zsh配置, 2019最新方案
  • 新手搭建网站的主要流程
  • 原生 js 实现移动端 Touch 滑动反弹
  • 深度学习之轻量级神经网络在TWS蓝牙音频处理器上的部署
  • ​​​​​​​Installing ROS on the Raspberry Pi
  • ![CDATA[ ]] 是什么东东
  • # 详解 JS 中的事件循环、宏/微任务、Primise对象、定时器函数,以及其在工作中的应用和注意事项
  • #QT(TCP网络编程-服务端)
  • #中的引用型是什么意识_Java中四种引用有什么区别以及应用场景
  • (5)STL算法之复制
  • (Matlab)基于蝙蝠算法实现电力系统经济调度
  • (二十五)admin-boot项目之集成消息队列Rabbitmq
  • (二刷)代码随想录第15天|层序遍历 226.翻转二叉树 101.对称二叉树2
  • (附源码)spring boot儿童教育管理系统 毕业设计 281442
  • (规划)24届春招和25届暑假实习路线准备规划
  • (解决办法)ASP.NET导出Excel,打开时提示“您尝试打开文件'XXX.xls'的格式与文件扩展名指定文件不一致
  • (十一)JAVA springboot ssm b2b2c多用户商城系统源码:服务网关Zuul高级篇
  • (转)用.Net的File控件上传文件的解决方案
  • .NET Compact Framework 多线程环境下的UI异步刷新
  • .NET Core IdentityServer4实战-开篇介绍与规划
  • .net oracle 连接超时_Mysql连接数据库异常汇总【必收藏】
  • .net 设置默认首页
  • .Net 转战 Android 4.4 日常笔记(4)--按钮事件和国际化
  • .NET/C# 在代码中测量代码执行耗时的建议(比较系统性能计数器和系统时间)...
  • .NET面试题(二)