资源 | DeepMind开源图网络库,一种结合图和神经网络的新方法

选自GitHub

作者:pbattaglia

机器之心编译

机器之心编辑部

今年 6 月份,Deepmind 发表了一篇论文,将图与深度神经网络相结合,由此提出了一种新型图网络。由于图网络主要采用神经网络的方式对图进行操作,因此它又可以称为图神经网络。本文介绍了 DeepMind 最近开源的图网络库,它可以用 TensorFlow 和 Sonnet 快速构建图网络。

项目地址:https://github.com/deepmind/graph_nets

DeepMind 开源的这个项目主要是依据他们在 6 月份发表的论文《Relational inductive biases, deep learning, and graph networks》,他们在该论文中将深度学习与贝叶斯网络进行了融合,并提出了一种具有推理能力的概率图模型。

图网络即可以在社交网络或其它基于图形数据上运行的一般深度学习架构,它是一种基于图结构的广义神经网络。图网络一般是将底层图形作为计算图,并通过在整张图上传递、转换和聚合节点特征信息,从而学习神经网络基元以生成单节点嵌入向量。生成的节点嵌入向量可作为任何可微预测层的输入,并用于节点分类或预测节点之间的连接,完整的模型可以通过端到端的方式训练。

目前图网络在监督学习、半监督学习和无监督学习等领域都有探索,因为它不仅能利用图来表示丰富的结构关系,同时还能利用神经网络强大的拟合能力。

一般图网络将图作为输入,并返回一张图以作为输入。其中输入的图有 edge- (E )、node- (V ) 和 global-level (u) 属性,输入也有相同的结构,只不过会使用更新后的属性。如下展示了输入图、对图实现的计算及输出图,更详细的内容请参考文末提供的原论文地址。

安装

图网络库可以从 pip 安装。此次安装与 Linux/Mac OS X 和 Python 2.7 及 3.4+兼容。

若要安装该库,运行:

$ pip install graph_nets

使用案例

如下代码将创建简单的图网络模块,并将其连接到数据。注意我们需要导入 Sonnet 库,它允许定义一些前向传播的计算模块。我们在使用 sonnet 创建三个多层感知机,并分别作为边、节点和全局模型的函数后,就能直接调用 GraphNetwork 方法创建整个图网络。

import graph_nets as gn
import sonnet as snt
# Provide your own functions to generate graph-structured data.
input_graphs = get_graphs()
# Create the graph network.
graph_net_module = gn.modules.GraphNetwork(
    edge_model_fn=lambda: snt.nets.MLP([32, 32]),
    node_model_fn=lambda: snt.nets.MLP([32, 32]),
    global_model_fn=lambda: snt.nets.MLP([32, 32]))
# Pass the input graphs to the graph network, and return the output graphs.
output_graphs = graph_net_module(input_graphs)

Demo Jupyter notebooks

该库包含一些 demo,展示了如何创建、操作及训练图网络以在最短路径搜索任务、排序任务和物理预测任务中进行图结构数据推理。每个 demo 使用相同的图网络结构,该结构可以突显该方法的复杂性。

在 Colab 运行

若要尝试 demo 而不在本地安装任何东西,你可以借助 Colaboratory 后端并在浏览器(甚至在手机上)中运行 demo。读者可查阅下面的 demo 链接,并按照 notebook 中的说明操作。

「shortest path demo」创建随机图,并训练一个图网络以在任何两个节点的最短路径上标记节点和边。经过一个信息传递步骤序列(如下图所示),模型可以改善其对最短路径的预测。

「sort demo」创建了随机数的几个列表,并训练一个图网络来对列表进行排序。经过一个信息传递步骤序列,模型会对哪个元素(图中的列)出现在另一个元素(行)之后做出准确的预测。

「physics demo」创建了一个随机弹簧物理系统,并训练一个图网络来预测系统在下一个时间步的状态。模型的下一步预测可以被反馈作为输入,以构建未来轨迹。以下每个子图展示了 50 步内的真实和预测的弹簧系统状态。这和 Battaglia 等人(2016)的「interaction networks」中的模型和实验相似。

本地运行

在你的本地计算机上运行 demo 要安装必要的依赖,请运行:

$ pip install jupyter matplotlib scipy

试用 demo 请运行:

$ cd <path-to-graph-nets-library>/demos
$ jupyter notebook

然后通过 Jupyter notebook 接口打开 demo。

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

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

摘要:人工智能最近经历了一场复兴,在视觉、语言、控制和决策等关键领域取得了重大进展。取得这些进展的部分原因是由于廉价的数据和计算资源,它们符合深度学习的天然优势。然而,在不同压力下发展起来的人类智力,其许多决定性特征对于目前的方法而言仍是触不可及的。特别是,超越经验的泛化能力——人类智力从幼年开始发展的标志——仍然是现代人工智能面临的巨大挑战。

本论文包含部分新研究、部分回顾和部分统一结论。我们认为组合泛化是人工智能实现与人类相似能力的首要任务,而结构化表示和计算是实现这一目标的关键。正如生物学把自然与人工培育相结合,我们摒弃「手动设计特征」与「端到端」学习二选一的错误选择,而是倡导一种利用它们互补优势的方法。我们探索在深度学习架构中使用关系归纳偏置如何有助于学习实体、关系以及构成它们的规则。我们为具有强烈关系归纳偏置的 AI 工具包提出了一个新构造块——图网络(Graph Network),它泛化并扩展了各种对图进行操作的神经网络方法,并为操作结构化知识和产生结构化行为提供了直接的接口。我们讨论图网络如何支持关系推理和组合泛化,为更复杂的、可解释的和灵活的推理模式奠定基础。

原文发布于微信公众号 - 机器之心(almosthuman2014)

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

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

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏数据派THU

带你用深度学习虚拟机进行文本迁移学习(附代码)

本文讲述了现代机器学习的模型,主要由微软数据科学家Anusua Trivedi和数据科学家经理Wee Hyong Tok共同撰写。

1344
来自专栏张善友的专栏

一个开源的,跨平台的.NET机器学习框架ML.NET

1696
来自专栏专知

计算机视觉入门教程系列—125页带你回顾CV发展脉络

【导读】本文是计算机科学家Christoph Rasche撰写的一份计算机视觉方面的系列教程,从传统的图像处理、特征提取到近几年很热的深度神经网络,以及深度学习...

1232
来自专栏玉树芝兰

如何用Python和深度神经网络发现即将流失的客户?

想不想了解如何用Python快速搭建深度神经网络,完成数据分类任务?本文一步步为你展示这一过程,让你初步领略深度学习模型的强大和易用。

2183
来自专栏人工智能

一种用于人脸检测的设备上的深度神经网络

苹果公司开始在iOS 10中使用深度学习进行人脸检测。随着Vision框架的发布,开发人员现在可以在他们的应用程序中使用这种技术和许多其他计算机视觉算法。本文讨...

6201
来自专栏机器学习算法与Python学习

超参数优化,这些策略了解一下!

当然,并非所有变量对模型的学习过程都一样重要,但是,鉴于这种额外的复杂性,在这样一个高维空间中找到这些变量的最佳配置显然是一个不小的挑战。

4893
来自专栏AI研习社

野外动物监测图像挑战赛:预测捕捉到的野外图像是否包含动物

野外相机能够自动收集大量的图像信息,不过不幸的是,收集到的大量图片都是误报,这些错误大多是由非动物引起的,比如草木的晃动。 本次比赛旨在预测白天和晚上从各个地点...

3469
来自专栏大数据智能实战

基于Tensorflow的VCTK语音识别例子测试

语音识别是深度学习早先攻克的几个领域之一。传统的基于HMM等的语音识别精度一直比较受限。但是深度学习还是给语音识别的精度带来了一个飞跃性的提高。本文在网上找了段...

4568
来自专栏CDA数据分析师

R语言中的情感分析与机器学习

利用机器学习可以很方便的做情感分析。本篇文章将介绍在R语言中如何利用机器学习方法来做情感分析。在R语言中,由Timothy P.Jurka开发的情感分析以及更一...

2019
来自专栏BestSDK

深度学习 VS 深度克隆,谁才是解决聊天机器人的最佳方法?

对话式 AI (聊天机器人)涉及到三个维度的问题:(1)语言技能(2)知识获取(3)对话行为。 这三者虽然强相关,但人类大脑通过单独的实验,在不同的时间段内,可...

3105

扫码关注云+社区