序列生成_PR Structured Ⅴ:GraphRNN——将图生成问题转化为序列生成

本文使用 Zhihu On VSCode 创作并发布

2e9a263ed8b2a249486a077ee50879e7.png Paper | Code

本文一作实在是太大佬了,让我和小伙伴焦虑了好一阵子。作者主页送你们,将这份焦虑传递下去。

57a4410fffb5c6144fe72cb4d2ea7632.png

Introduction

图生成有很多用处

  1. 建模physical and social interactions
  2. 发现新的化学和分子结构
  3. 构建知识图谱

本文摘要直接指出了图生成问题的难点

图生成模型需要学习到图的结构分布,然而图具有非唯一 (non-unique)高维以及给定图的边之间存在复杂、非局部的依存关系

因此直接对复杂的图分布直接进行建模,并从这些分布中进行有效采样是一项挑战。

目前,图生成面临的挑战有:

  1. 要让模型在没有图结构假设的情况下,从一组观察到的图中直接学习生成模型;
  2. 具备从多个图以及大图中学习生成的能力;
  3. Large and variable output spaces:
    个节点的图需要输出
    的值才能完整表示,且每个图的边和节点也不是固定的数值;
  4. Non-unique representations:如果我们想学习一个有
    个节点的图的结构,然而它最多可以表示为
    个等效邻接矩阵,这会让训练变得很难。
  5. Complex dependencies:很明显,图中的边关系不可能简单地看作相互独立的,它们之间有复杂的依存关系。

GraphRNN

为解决上述问题,本文提出了 GraphRNN,以 autoregressive (or recurrent) 作为一系列新节点和边的添加方式绘制 graph,来捕获图中所有节点和边的复杂联合概率

GraphRNN 可以视作一种级联形式,由两个RNN组成:

  1. graph-level RNN:维护图的状态并生成新节点;
  2. edge-level RNN:为新生成的节点生成新的边。

符号定义

798e57b2f9d3c41897edcbc8257b8440.png

GraphRNN 思路

a4e816aa931bcf743d07a71cfd799bdb.png

Key Idea将不同节点顺序下的图表示为序列,并在这些序列上构建一个自回归的生成模型。

将graph建模成序列

定义从graphs到sequences的映射

其中,每个元素

表示节点
和先前所有节点
之间的边的邻接向量
(如图一,注意下面的向量依次对应右上方的graph)。

由此,

的序列就可以表示整个无向图,这里用一个反向的映射表示

在此基础上,对于图分布

的学习就可以转化为联合分布
的边缘分布:

这时,我们只需要学习

就可以了。由于它又是个序列模型,所以可以分解为条件分布的乘积:

定义最后一个元素

为序列终止 EOS。

GraphRNN 框架

即使

被分解成了
,这仍然很棘手。因为它需要在之前的节点的连接基础上,得到节点
如何与之前的节点连接。这又是一个复杂的概率关系,本文打算用RNN来建模这种关系,包含
状态转移函数输出函数

  • 是一个编码了到目前为止生成的图的状态的向量;
  • 是最近一个生成节点的邻接向量;
  • 指定了下一个节点邻接向量的分布

文中指出,

可以用任意神经网络表示(本文开源代码用了
两个GRU)。
也可以是任意形态分布。

算法总结为:

fa5105afef587b107b13c7bff8769f75.png

利用 BFS 处理变长度的序列

由于RNNs需要固定长度的输入向量,然而

的长度是随着 i 变化的,因此本文旨在
利用 BFS (广度优先搜索) 的节点序列,而不是任意节点序列,来学习图的生成。这样做的好处,据说是不是一般性?

将式1改为

BFS 以一个随机顺序

为输入,将
作为起点,按照
中的先后顺序将它的邻居依次添加到 BFS 队列中。

好处如下:

  • BFS 是一对多的,一个 BFS 序列可以转化为多个节点排序。因此我们需要训练的数量少了。

  • BFS排序通过减少 edge-level RNN 中进行的边缘预测的数量,来使学习变得更容易。因为如果我们新加入一个节点,那么它的连接边只能处在BFS搜索前沿的节点(当搜索完成时,可以想象成树的叶子节点)定义描述就是:

    Proposition 1. Suppose

    is a BFS ordering of
    nodes in graph
    , and
    but
    for some
    then
    and

    这个性质是我们可以将可变长度的

    定义为固定长度的 M 维向量
    ,表示节点
    与当前BFS队列中最大大小为M的节点之间的连通性:

    至于这个 M 怎么去估计,见本文附录吧。

扩展到具有节点、边特征的Graph

GraphRNN可以扩展到具有节点和边特征的Graph生成,在节点顺序

下,图
与它的节点特征矩阵
和边特征矩阵
相关联。因此,可以将
的定义扩展为
。在
模块,用一个 MLP 来生成
,edge-level RNN 来生成

作者的开源代码好像并没有这部分,我已经在github上发了issues。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/573799.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

网络资产管理系统_固定资产管理系统网络版的各种语言翻译

固定资产管理系统网络版指的是固定资产管理系统项目的联网版本,适合需要远程操作及多人同时操作的用户,各个版本都提供相应的网络版。固定资产管理系统网络版系统稳定、功能强大,支持局域网内用户联网操作软件,适用于各机关企事业…

数据字典在sga的哪一个组件中缓存_非功能性约束之性能(1)-性能银弹:缓存...

在《什么是架构属性》一文中提到提高「性能」的主要方式是优化,而优化的其中一个主要手段就是添加缓存!在软件工程里有这么一句话:「没有银弹」!就是说由于软件工程的复杂性,没有任何一种技术或方法能解决所有问题&…

.NET的轻量级IOC框架芮双随笔

面向对象的设计的重用性一直是他的一个重要特性,为了有效定义这一特性,又引申出面向对象设计的几个原则:高内聚、低耦合、功能单一、优先使用聚合、面向接口编程等。依赖这些原则和前人的经验,又发展出形形色色的模式,…

python热部署_关于Spring Cloud 框架热部署的方法

1、在对应的pom.xml 文件中添加依赖org.springframework.bootspring-boot-devtoolstrue2、注:project 中添加 spring-boot-maven-plugin,主要在eclipse中使用,idea中不需要添加此配置。【IDEA 忽略这个步骤哦(⊙o⊙)?】org.springframework.b…

《世界是数字的》读后感

随着科技的发展,我们已经进入数字化的世界。十年前,我们还拿着小灵通、按键手机,十年后,我们每个人的手上都有一部触屏手机。科技的发展使得世上的东西都更新换代的很快,任何东西存在的时间都很短,瞬息间就…

html js css如何关联_会html+css+js就能把前端项目发布到多个平台

在这篇文章中,小编将给大家分享如何让自己的前端代码发布到多个常用的平台。看完这篇文章以后,你就知道了如何让你的前端代码发布到多个平台,如:安卓应用程序,小程序,iOS应用程序,Windows,Mac,L…

机器学习 监督学习论文_NeurIPS 2020最佳机器学习论文奖

NeurIPS 会议在提交的大量论文和1903年被接受的论文中,有3篇被授予。今年获奖的论文有:语言模型是学习者很少广义形式相关平衡的无悔学习动力学列子集选择和Nystrom方法的改进保证和多重下降曲线该NeurIPS委员会由一些指导准则。最好的论文必须具有革命性…

Java--File文件操作

判断文件或目录是否存在 判断File对象所指向的文件或者目录是否存在,使用exists()函数。 File f new File("/Users/bemaster/Desktop/in.txt"); System.out.println(f.exists()); 判断当前File对象是文件还是目录 判断当前File对象是否是文件&#xff0c…

iis 装完framework4 7 无法切换_扫盲贴之电压并列与电压切换

点击上方电气小青年,关注并星标由于微信改版,只有星标才能及时看到我们的消息哦━━━━━━推荐阅读:《国内电气顶尖高校的奖学金介绍,总奖学金接近150万!》《世界工业自动化公司行业前十名:西门子、ABB、…

unixbench类似_UnixBench的实现介绍-阿里云开发者社区

很多用户都用UnixBench做性能测试,并做厂商之间的对比,那UnixBench到底做了哪些性能测试,本篇从代码层面阐述UnixBench做了哪些测试。在细说UnixBench的实现之前,先放一个总结果UnixBench算分介绍有类似结果,然后一个个…

android 集成同一interface不同泛型_C# 基础知识系列- 10 反射和泛型(二)

0. 前言 这篇文章延续《C# 基础知识系列- 5 反射和泛型》,继续介绍C#在反射所开发的功能和做的努力。上一篇文章大概介绍了一下泛型和反射的一些基本内容,主要是通过获取对象的类型,然后通过这个类型对象操作对象。这一篇介绍一个在反射中很重…

hdu 1297 递推难题

这题的话,我能玩一年 今天做了很多递推的题,这题无疑是最复杂的 其实可以看出来,2,3,4,5为一类,不妨定义为2型,1,6为一类,定义为1型 规定num[i]为结尾是i的凹槽的数量 我们可以能轻易的推出 sum num[1]*2n…

mysql 8.0远程连接_安装mysql 8.0.17并配置远程访问的方法

一、安装前准备查看数据库版本命令: mysql --versionmysql-community-common-8.0.17-1.el7.x86_64.rpmmysql-community-libs-8.0.17-1.el7.x86_64.rpmmysql-community-client-8.0.17-1.el7.x86_64.rpmmysql-community-server-8.0.17-1.el7.x86_64.rpm二、安装RPM包依…

python体育竞技分析代码200行_使用Python进行体育竞技分析(预测球队成绩)

使用Python进行体育竞技分析(预测球队成绩) 发布时间:2020-09-18 06:38:27 来源:脚本之家 阅读:69 今天我们用python进行体育竞技分析,预测球队成绩 一. 体育竞技分析的IPO模式 : 输入I(input)&…

使用JavaScript进行数组去重——一种高效的算法

最近比较忙,没时间更新博客,等忙完这阵子会整理一篇使用AngularJS构建一个中型的单页面应用(SPA)的文章,尽情期待!先占个坑。 数组去重的算法有很多种,以下是一种。 思路如下: 定义一个空的对象obj&#xf…

rpm的mysql安装_MySQL 5.7.22 rpm 安装方式

在MySQL官网下载安装包[roothashow-db-master resource]# tar -xvf mysql-5.7.22-1.el7.x86_64.rpm-bundle.tar[roothashow-db-master resource]# lsDATALOSS_WARNING_README.txt mysql-community-common-5.7.22-1.el7.x86_64.rpm mysql-communi…

为什么有时优盘是只读模式_JS专题之严格模式

ECMAScript 5 引入了 strict mode ,现在已经被大多浏览器实现(从IE10开始)一、什么是严格模式顾名思义,JavaScript 严格模式就是让 JS 代码以更严格的模式执行,不允许可能会引发错误的代码执行。在正常模式下静默失败的代码&#…

iOS开发触摸事件的传递

1. iOS中的三种事件类型 触摸事件、加速计事件、远程事件。 触摸事件:通过触摸、手势进行触发(例如手指点击、缩放) 加速计事件:通过加速器进行触发(例如手机晃动,典型应用是微信摇一摇) 远程事…

mysql router 介绍_MySQL Router 介绍篇

MySQL Router 是什么?相信还有很多人没有听说过MySQL Router,很多人对它还不了解,在这篇文章里,将对MySQL Router进行一个简明介绍。首先,介绍一下MySQL Router推出的背景。MySQL Router 是一个轻量级的中间件&#xf…

react 更新input 默认值setfieldsvalue_值得收藏的React面试题

react1、什么是虚拟DOM?难度: ⭐虚拟 DOM (VDOM)是真实 DOM 在内存中的表示。UI 的表示形式保存在内存中,并与实际的 DOM 同步。这是一个发生在渲染函数被调用和元素在屏幕上显示之间的步骤,整个过程被称为调和。2、类组件和函数组件之间的区…