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

2018-10-19 14:08:00
刘大牛
转自文章
229

今年 6 月份,Deepmind 发表了一篇论文,将图与 深度 神经网络 相结合,由此提出了一种新型 图网 络。由于 图网 络主要采用 神经网络 的方式对图进行操作,因此它又可以称为图 神经网络 。本文介绍了 DeepMind 最近开源的 图网 络库,它可以用 Tensor Flow 和 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),它泛化并扩展了各种对图进行操作的 神经网络 方法,并为操作结构化知识和产生结构化行为提供了直接的接口。我们讨论 图网 络如何支持关系推理和组合泛化,为更复杂的、可解释的和灵活的推理模式奠定基础。

工程 开源 神经网络 DeepMind 图神经网络
6 1
发表评论
评论通过审核后显示。
文章分类
联系我们
联系人: 透明七彩巨人
Email: weok168@gmail.com