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

Paper | Code

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

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:为新生成的节点生成新的边。

符号定义

GraphRNN 思路

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

将graph建模成序列

定义从graphs到sequences的映射

其中,每个元素

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

由此,

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

在此基础上,对于图分布

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

这时,我们只需要学习

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

定义最后一个元素

为序列终止 EOS。

GraphRNN 框架

即使

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

状态转移函数输出函数

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

文中指出,

可以用任意神经网络表示(本文开源代码用了

两个GRU)。

也可以是任意形态分布。

算法总结为:

利用 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。

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

  1. 通过.obj生成2d图像_自动生成 凹凸法线灯贴图 插件

    CrazyBump疯狂凹凸自动生成凹凸法线灯贴图 CrazyBump是一款专业的法线贴图制作软件,人们一般称之为超级法线凹凸生成软件,用来做材质中贴图中的凹凸和法线贴图是非常不错的,CrazyBump ...

  2. highcharts 动态生成x轴和折线图

    highchart 动态生成x轴和折线图 <!DOCTYPE HTML> <html><head><meta charset="utf-8" ...

  3. python 画折线图_Python让你的数据生成可视化图形

    ID:pk哥 公众号:Python知识圈 最近的技术分享被老板说了,分享内容不错,可是这些统计图差了点.作为一个做技术的,这是不能忍受的.因为 Python 除了不会生孩子,其他的都会. 直接进入今天 ...

  4. 小程序快速生成朋友圈海报分享图

    由于我们无法将小程序直接分享到朋友圈,但分享到朋友圈的需求又很多,业界目前的做法是利用小程序的 Canvas 功能生成一张带有小程序码的图片,然后引导用户下载图片到本地后再分享到朋友圈.相信大家在绘制 ...

  5. mysql三国人物库_一文带你使用neo4j生成三国人物社交关系图

    简介 最近给孩子买了三国演义,可是三国人物关系太复杂,就想着把三国人物关系做成一张图,这样方便看,整好neo4j图数据库非常适合社交关系的处理,下面就一起来看看,如何使用neo4j生成三国人物社交关系 ...

  6. 【深度学习】实验6布置:图像自然语言描述生成(让计算机“看图说话”)

    DL_class 学堂在线<深度学习>实验课代码+报告(其中实验1和实验6有配套PPT),授课老师为胡晓林老师.课程链接:https://www.xuetangx.com/training ...

  7. 如何对ChatGPT进行Prompt逆向工程, Prompt engineering生成Prompt的核心是给出例子,反推生成例子的通用Prompt模板mjourney,给出图片生成该图的Prompt

    如何对ChatGPT进行Prompt逆向工程 加上以下文本结合你的总结以下文本,得出ChatGPT的prompt生成规律: 例子问法 请分析以下文本的角色.风格.语气.长度.段落和emoji使用等特点 ...

  8. opencv2-3生成标定用的方格图

    opencv2-3生成标定用的方格图 就想在A4纸上山寨打印一个标定图,就是黑白方格相间的那种.A4纸的标准大小为210*297mm.从每个像素的角度考虑,考虑其最终落入哪个小方块,如果落入小方块的行 ...

  9. 经验:EXCEL生成y=kx+b函数图,有x,y原始数据,求平均系数k

    经验:EXCEL生成y=kx+b函数图,有x,y原始数据,求平均系数k 1.数据录入 2.生成图表 3.加入趋势线 4.得出公式 1.数据录入 将需要生成的数据录入excel 2.生成图表 框选数据, ...

最新文章

  1. 一切都是对象---JAVA编程思想
  2. 【数据竞赛】可能是全网特征工程实操最通透的...
  3. 开源-BDCI2018供应链需求预测模型第一名解决方案和代码
  4. Vim特定行行尾追加
  5. E:K-periodic Garland(DP)
  6. php文件上传并保存路径到数据库,thinkphp表单上传文件并将文件路径保存到数据库中?...
  7. centos7 安装小记
  8. ApacheCN C/C++ 译文集(二) 20211204 更新
  9. 《王者荣耀》又现登录异常 官方奉上皮肤碎片+战斗经验作补偿
  10. oracle中clob和blob,Oracle中的BLOB和CLOB
  11. MVP项目框架搭建-高级设计
  12. 犀牛系统连接服务器失败,犀牛5.0安装运行失败,Rhino安装失败解决方法
  13. sql计算字段中字数的个数
  14. 链表节点被删除时的资源释放
  15. Vue中native的用法
  16. 页面提示“百度未授权使用地图API,可能是因为您提供的密钥不是有效的百度LBS开放平台密钥,或此密钥未对本应用的百度地图JavaScriptAPI授权。您可以访问如下网址了解如何获取有效的密钥:ht”
  17. TapTap排行榜能客观显示游戏的受欢迎程度吗?
  18. 自动驾驶分级 - 练习测验
  19. 漫画:如何给女朋友解释灭霸的指响并不是真随机消灭半数宇宙人口的?
  20. Tensorboard远程连接

热门文章

  1. 关于配置Webapck的 exclude 不过滤 node_modules Babel却没有处理转换node_modules的源码
  2. IOS 定义手势监听器详解,利用 UIGestureRecognizer 进行捏合、旋转、平移、点击、长按手势事件响应
  3. redis 高级实用教程
  4. mysql修改最大文件数_mysql更改最大打開文件數
  5. Python 小白从零开始 PyQt5 项目实战(7)折叠侧边栏的实现
  6. 点集的视点特征直方图的评估
  7. html编辑器查找与替换,织梦kindeditor文本编辑器增加“查找替换”功能
  8. python升级到最新版本windows64位安装哪个包_手把手windows64位配置安装python2.7
  9. Oracle特殊恢复原理与实战(DSI系列)
  10. 算法入门经典-第七章 例题7-2最大乘积