对象及其关系在我们周围是无处不在的,关系对于理解对象的重要性可以与对象本身的属性一样重要,例如: 交通网络、生产网络、知识图谱或社交网络。离散数学和计算机科学长期以来一直在将这些网络形式化为图, 由节点以各种不规则方式连接的边组成。然而,大多数机器学习(ML)算法只允许输入对象之间的规则和统 一关系,比如像素网格、单词序列或根本没有关系。
图神经网络(GNN)作为一种强大的技术,利用了图的连接性(类似于旧算法DeepWalk和Node2Vec)以及各 个节点和边上的输入特征。GNN可以对整个图进行预测(这种分子会以某种方式发生反应吗?)、对单个节点 进行预测(根据其引用,这个文档的主题是什么?)或对潜在边进行预测(这个产品是否可能与那个产品一起 购买?)。除了对图进行预测外,GNN还是一个强大的工具,用于弥合更典型的神经网络用例之间的鸿沟。它 以连续方式编码图的离散关系信息,从而可以自然地包含到另一个深度学习系统中。
我们很高兴地宣布推出 TensorFlow GNN 1.0(TF-GNN),这是一个经过实际测试的用于大规模构 建GNN的库。它支持在TensorFlow中进行建模和训练,以及从庞大的数据存储中提取输入图。TF-GNN是从头开 始为异构图构建的,其中类型和关系由不同的节点和边集表示。现实世界中的对象及其关系以不同类型出现,TF-GNN 的异构重点使其自然地表示这些对象及其关系。
在TensorFlow内部,这些图由类型为tfgnn.GraphTensor
的对象表示。这是一种复合张量类型(在一个Python
类中包含多个张量),可以作为tf.data.Dataset
、tf.function
等中的一等公民被接受。它存储了图结构以及
附加到节点、边和整个图上的特征。可以将GraphTensors
的可训练变 换定义为高级Keras API中的Layers
对象,
也可以直接使用tfgnn.GraphTensor
原语。
GNNs:在上下文中对对象进行预测
为了说明问题,让我们来看看TF-GNN的一个典型应用:在由交叉引用大型数据库的表定义的图中,预测某种类型节点的属性。 例如,计算机科学(CS)arXiv论文的引用数据库,具有一对多的引用关系和多对一的被引关系,我们希望预测每篇论文的主题领域。
与大多数神经网络一样,GNN是在许多带标签的示例数据集(约数百万个)上进行训练的,但每个训练步骤只包括一个更小的批处理 训练示例(比如说,数百个)。为了扩展到数百万个,GNN在基础图中的一系列相对较小的子图上进行训练。每个子图包含足够的原始数据, 以计算标记节点的GNN结果并训练模型。这个过程——通常称为子图采样——对于GNN的训练非常重要。大多数现有的工具都是以批处理方式进 行采样,生成静态子图进行训练。TF-GNN提供了改进这一点的工具,通过动态和交互式采样。