解决关系推理,从图网络入手!DeepMind图网络库开源了!

新智元报道

来源:GitHub、arXiv

编辑:肖琴

【新智元导读】DeepMind今天开源了内部的Graph Nets库,用于在TensorFlow中构建简单而强大的关系推理网络。“图网络”由DeepMind、谷歌大脑、MIT等27位研究者提出,由于其支持关系推理和组合泛化的优势,引起大量关注。

震撼!AI WORLD 2018世界人工智能峰会开场视频

DeepMind提出的简单而强大的关系推理网络“graph network”终于开源了!

今年6月,由DeepMind、谷歌大脑、MIT 和爱丁堡大学等公司和机构的 27 位科学家共同发表了一篇论文Relational inductive biases, deep learning, and graph networks,提出了图网络(graph network)的概念。“让深度学习也能因果推理”,这篇论文引起了业内的大量关注。

对这篇论文的具体阐述,请阅读新智元的报道文章:

【CNN已老,GNN来了】DeepMind、谷歌大脑、MIT等27位作者重磅论文,图网络让深度学习也能因果推理

简单的说,图网络(graph network)是将graph作为输入,并返回graph作为输出的神经网络。输入图具有edge-(E ), node-(V ), 和global-level(u) 的属性。输出图具有相同的结构,但更新了属性。 Graph networks是更广泛的“graph neural networks”家族的一部分 (Scarselli et al., 2009)。

这篇论文里,作者详细解释了他们的“图网络”。图网络(GN)的框架定义了一类用于图形结构表示的关系推理的函数。GN 框架概括并扩展了各种的图神经网络、MPNN、以及 NLNN 方法,并支持从简单的构建块(building blocks)来构建复杂的结构。

GN 框架的主要计算单元是 GN block,即 “graph-to-graph” 模块,它将 graph 作为输入,对结构执行计算,并返回 graph 作为输出。如下面的 Box 3 所描述的,entity 由 graph 的节点(nodes),边的关系(relations)以及全局属性(global attributes)表示。

论文中对“graph”的定义

论文作者用 “graph” 表示具有全局属性的有向(directed)、有属性(attributed)的 multi-graph。一个节点(node)表示为

,一条边(edge)表示为

,全局属性(global attributes)表示为u

表示发送方(sender)和接收方(receiver)节点的指标(indices)。具体如下:

  • Directed:单向,从 “sender” 节点指向 “receiver” 节点。
  • Attribute:属性,可以编码为矢量(vector),集合(set),甚至另一个图(graph)
  • Attributed:边和顶点具有与它们相关的属性
  • Global attribute:graph-level 的属性
  • Multi-graph:顶点之间有多个边

GN 框架的 block 的组织强调可定制性,并综合表示所需关系归纳偏置(inductive biases)的新架构。

论文:Relational inductive biases, deep learning, and graph networks

地址:https://arxiv.org/pdf/1806.01261.pdf

图网络为什么重要?

康纳尔大学数学博士/MIT博士后Seth Stafford则认为,图神经网络(Graph NNs)可能解决图灵奖得主Judea Pearl指出的深度学习无法做因果推理的核心问题。

Judea Pearl

图灵奖得主、贝叶斯网络之父Judea Pearl,在ArXiv发布了他的论文《机器学习理论障碍与因果革命七大火花》,论述当前机器学习理论局限,并给出来自因果推理的7大启发。Pearl指出,当前的机器学习系统几乎完全以统计学或盲模型的方式运行,不能作为强AI的基础。他认为突破口在于“因果革命”,借鉴结构性的因果推理模型,能对自动化推理做出独特贡献。

如何解决这个问题?DeepMind认为,要从“图网络”入手。

现在,这篇重磅论文的开源软件库终于发布了!可以用于在TensorFlow和Sonnet中构建Graph Nets。

在TensorFlow中构建Graph Nets

安装

Graph Nets库可以从pip安装。

此安装与Linux/Mac OS X以及Python 2.7和3.4+兼容。

要安装库,请运行:

1$ pip install graph_nets

用例

以下代码用于构建一个简单的graph net模块,并将其与数据连接。

 1import graph_nets as gn
 2import sonnet as snt
 3
 4# Provide your own functions to generate graph-structured data.
 5input_graphs = get_graphs()
 6
 7# Create the graph network.
 8graph_net_module = gn.modules.GraphNetwork(
 9    edge_model_fn=lambda: snt.nets.MLP([32, 32]),
10    node_model_fn=lambda: snt.nets.MLP([32, 32]),
11    global_model_fn=lambda: snt.nets.MLP([32, 32]))
12
13# Pass the input graphs to the graph network, and return the output graphs.
14output_graphs = graph_net_module(input_graphs)

Jupyter notebooks演示

这个库包括demos,演示如何在最短路径查找任务、排序任务和物理预测任务上创建、操作和训练graph networks,以推理图结构化数据。每个demo都使用相同的graph network架构,突出了该方法的灵活性。

在浏览器 Colaboratory 中尝试演示

要在本地没有安装任何内容的情况下尝试demo,你可以通过云Colaboratory后端,在浏览器(甚至手机上)运行demo。

在浏览器中运行“最短路径演示”

“最短路径演示”创建随机的graph,并训练图网络以标记任意两个节点之间的最短路径上的节点和边缘。在一系列消息传递步骤中,模型改进了对最短路径的预测。

在浏览器中运行“排序演示”

“排序演示”创建随机数列表,并训练图网络对列表进行排序。在一系列消息传递步骤之后,模型可以准确预测哪些元素(图中的列)紧跟在彼此的后面(行)。

在浏览器中运行“物理演示”

"physics demo"创建随机质量的弹簧物理系统,并训练一个图网络来预测系统在下一时间步长的状态。模型的下一步预测可作为输入反馈进来,以创建未来轨迹的rollout。下面的每个子图显示了50步以上的真实和预测mass-spring系统状态。这类似于Battaglia et al. (2016)提出的"interaction networks”里的模型和实验。

论文地址:

https://arxiv.org/pdf/1806.01261.pdf

GitHub地址:

https://github.com/deepmind/graph_nets


原文发布于微信公众号 - 新智元(AI_era)

原文发表时间:2018-10-19

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏玉树芝兰

如何用Python和机器学习训练中文文本情感分类模型?

利用Python机器学习框架scikit-learn,我们自己做一个分类模型,对中文评论信息做情感分析。其中还会介绍中文停用词的处理方法。

2562
来自专栏玉树芝兰

如何用 Python 和 fast.ai 做图像深度迁移学习?

说得对!我要感谢你对我专栏的持续关注。我确实讲过深度学习做图像分类,以及迁移学习这两项内容。

1012
来自专栏懒人开发

(8.3)James Stewart Calculus 5th Edition:Applications to Physics and Engineering

any point in a liquid the pressure is the same in all directions 液体中任何点在任何方向收到的...

1034
来自专栏AI研习社

手把手教你用Python 和 Scikit-learn 实现垃圾邮件过滤

文本挖掘(Text Mining,从文字中获取信息)是一个比较宽泛的概念,这一技术在如今每天都有海量文本数据生成的时代越来越受到关注。目前,在机器学习模型的帮助...

3788
来自专栏有趣的Python

TensorFlow应用实战-18-Policy Gradient算法

7656
来自专栏深度学习

机器学习在web攻击检测中的应用实践

一、背景 通俗地讲,任何一个的机器学习问题都可以等价于一个寻找合适变换函数的问题。例如语音识别,就是在求取合适的变换函数,将输入的一维时序语音信号变换到语义空间...

3755
来自专栏CVer

TensorFlow.js人脸识别—玩转吃豆豆小游戏

谷歌TenosrFlow开发者峰会2018上,发布了面向JavaScript开发者的全新机器学习框架 TensorFlow.js。这里介绍一个TensorFlo...

51012
来自专栏大数据挖掘DT机器学习

13个Tensorflow实践案例,教你入门到进阶

关于深度学习,每个人都有自己的看法。有人说就是炼丹,得个准确率召回率什么的,拿到实际中,问问为什么,都答不上来。各种连代码都没写过的人,也纷纷表示这东西就是小孩...

49315
来自专栏MixLab科技+设计实验室

TensorFlow.js、迁移学习与AI产品创新之道

TensorFlow 的 JS 版本终于出啦,deeplearn.js 正式收编至 TensorFlow 项目,并改名为 TensorFlow.js : 采用 ...

4574
来自专栏机器之心

资源 | ChainerCV:基于Chainer的深度学习计算机视觉实用库(内含工具集)

选自GitHub 作者:二井谷勇佑(Yusuke Niitani) 机器之心编译 参与:黄小天、蒋思源 近日,Preferred Networks 通过其研究博...

32011

扫码关注云+社区