【开源】基于Keras的知识图谱处理实战

2017 年 12 月 6 日 专知 专知内容组(编)
【开源】基于Keras的知识图谱处理实战

【导读】近日,Daniel Shapiro博士利用开源的图结构卷积网络进行知识图谱处理,并应用于交易数据的欺诈检测,其知识图谱处理相关源码也开源出来,并且Daniel Shapiro博士写了一个基于Keras的知识图谱处理实战的博客,内容浅显易懂,是一篇想了解知识图谱实战的好文,让我们来看下。


想了解知识图谱相关概念和内容,请阅读专知以前推出的报道:


  1.  【干货】最全知识图谱综述#1: 概念以及构建技术

  2.  【干货】最全知识图谱综述#2: 构建技术与典型应用

  3. 【专知荟萃03】知识图谱KG知识资料全集(入门/进阶/论文/代码/数据/综述/专家等)(附pdf下载)


kegra: Deep Learning on Knowledge Graphswith Keras

基于Keras的知识图谱深度学习

作者:Daniel Shapiro

译者:专知内容组


引言




大家好。我在过去的文章中提到过,我正在基于企业数据集做感知计算。本文就是基于这个工作来写的。学习这篇文章要求您对深度学习有一定的了解,但是如果您对数据科学稍微有些了解应该可以跟上本文的节奏。


我一直致力于在图结构上研究深度学习的检测模型。Thomas Kipf 写了一个用Keras实现的关于图节点分类的比较好的库。本文是基于他的作品“用图卷积网络进行半监督分类”(Semi-SupervisedClassification with Graph ConvolutionalNetworks)。


下面让我们来看一下。


▌详细内容




  • 首先,什么是图(知识图谱)?


我们在工作中按照如下考虑知识图谱,这些知识图谱以“白宫”和“唐纳德·特朗普”这样的实体作为节点,像“工作”这样的关系是图中的边。我们如何构建这些图表是另一回事。在本文中,我正在研究交易数据以训练分类器来识别诈骗交易。如果你更喜欢顶点和圆弧而不是节点和边,那么阅读这篇文章

(https://math.stackexchange.com/questions/31207/graph-terminology-vertex-node-edge-arc)。

 

我对图结构数据的处理非常感兴趣,我关于图的研究工作可以追溯到我的硕士论文。在那项工作中,我想要在有向无环图中找到共同元素(凸子图)。我正在确定如何将定制指令添加到软件的处理程序中,让它能过运行起来。我用整数线性规划来解决这个问题。在大图上,求解器可能需要数小时甚至数天运行时间。

 

  • 研究的相关链接:


  • A Case Study on Hardware/Software Codesign in Embedded Artificial Neural Networks

     (一个硬件/软件协同设计的嵌入式人工神经网络的案例研究)

  • Tunable Instruction Set Extension Identification

       (可调指令集扩展识别)

  • ASIPs for artificial neural networks

      (用于人工神经网络的ASIP)

  • Artificial neural network acceleration on FPGA using custom instruction

      (基于定制指令的FPGA人工神经网络加速)

  • Improved     ISE Identification Under Hardware Constraint

      (硬件约束下改进的ISE识别)

  • Parallel instruction set extension identification

      (并行指令集扩展识别)

  • Static task scheduling for configurable multiprocessors

       (针对可配置多处理器的静态任务调度)

  • Design and implementation of instruction set extension identification for a multiprocessor system-on-chip hardware/software co-design toolchain

       (多处理器片上系统硬件/软件协同设计工具链的指令集扩展识别的设计和实现)

  • SING: A multiprocessor system-on-chip design and system generation tool

       (SING:多处理器系统芯片设计和系统生成工具)


以下是OrientDB中知识图谱拓扑结构的一个例子:



 

  • 第二,我们能发现什么模式?


我们要标记节点。图中的每个实体都有一些我们想要的分类特征,而且我们只有一些节点的标签。有我们可以预测的简单的布尔标签,如“是人”或“不是人”,或更复杂的标签,如节点被分成几个类别之一。然后我们可以做更复杂的回归,比如根据图表的实体数据来预测实体所带来的风险。这包括一个节点到其他节点的连接。让我们用本文中的布尔标签研究分类问题,以保持简单。我们想要用大约4,000个银行账户标记594,643笔交易,确定要么是可疑的,要么是不可疑。我们希望在很快的一分钟之内完成该任务,而不是几小时或几天。

 

  • 第三,我们如何定义一个kegra能够理解的图?

我们需要指定两个文件。第一个有节点的描述,第二个说明节点如何连接。在kegra提供的cora例子中,有2,708个节点的描述和标签,有5,429个边(节点对)定义了节点之间的连接。

 

下图是每个文件的几行:



节点之间的连接 



每个节点ID后面跟着特征(大部分是0),最后还有一个节点标签(例如Neural_Networks,Case_Based)。上面的截图中的功能大部分都是0。每个特征代表在某个单词在文档(节点)中的使用。更多信息在这里kegra描述

https://github.com/tkipf/keras-gcn/blob/master/kegra/data/cora/README)。


让我们试试看



首先,你需要keras2,所以请输入下面命令:



假设你已经安装了Keras和TensorFlow,keras-gcn依赖于gcn,所以让我们复制并逐个安装它们。 



首先让我们运行kegra所提供现成示例代码。我们在输出中看到cora已经从原始数据中检测并打印了节点和边的期望数量。 



在cora数据集上训练:36%的准确性和持续上升。




对cora数据集的测试结果是:77.6%的精度。

 

 

我们现在对kegra对输入文件的理解方式做一些小的改动,改动只是为了让名字更好。在github的当前版本中,输入文件“*.cites”是描述节点之间的弧,描述节点的是“* .content”。相反,我改变了kegra阅读“* .link”和“* .node”文件。你的数据文件夹现在应该是这样的:


现在让我们用交易数据填写customerTx.node和customerTx.link。第一个文件是银行客户及其功能的列表,格式是:



交易记录的快捷视图。图中有货币的发送者和接收者,发送金额的记录(金额栏),以及由审查交易人的分析员(欺诈栏)应用的标签。我们可以忽略前两列(索引和步骤列)。



边文件(customerTx.link)记录双方在每次交易中的身份。

 


 节点文件(customerTx.node)记录图中每个节点上的信息,作为每笔交易的资金发送者。 txCount列出了离开节点的事务(边)的数量。amountMean列指定平均事务大小。fraudMean列是此数据期间发送方帐户上标记的交易的平均值。请注意,绝大多数交易是正常的,而不是FRAUD,这是数据集的失衡问题。



图中有4112个节点。一个分析员平均有2.3%被标记为有问题的。

  

我们现在可以用kegra来分析不同级别的分析师的准确性。如果系统训练是在由一个完美的分析师分析的数据上进行的,那么应该完美地学会如何分析图。但是,如果人类分析师错误的次数达到20%,那么kegra模型的预测能力同样应该被限制在80%。为了解决这个问题,我在图标签上添加了不同数量的随机噪声,看看当训练数据的质量越来越差时kegra如何处理。下面是图表和表格形式的结果展示:



交易标签实验的原始结果,在知识图上进行深度学习。

 


这与上表中的数据相同,但柱状图更易于理解。

 

这里有很多东西要理解。首先,我们看到在数据(蓝色)中的噪声增加时,提前停止(x轴上的标签)在训练中越来越早的发生了 。这告诉我们,特征数量太少(少量列)导致训练数据过度拟合。其次,我们看到测试的准确性一般低于训练的准确性。这在意料之中,因为分类器更熟悉训练数据而不是测试数据。第三,测试精度不为零。这意味着分类器可以仅使用每个节点的图和特征(txCount,amountMean和fraudMean)来重新生成OK / FRAUD标签。第四,分类器(橙色)的准确度随着注入噪声(蓝色)的升高而下降。这意味着结果不是随机的。第五,我们看到训练的准确性(红色)加上附加的噪音(蓝色)增加了大约100%,这意味着分类器与标注数据集的分析师保持一致,但是差不了多少。

 

总之,kegra在知识图谱分类上表现的非常好。与他们的论文中的结果相比,这些结果可能太好了。我将检查事务文件中的诈骗标签列是否有太好的解释性,然后用一些更难从广泛的数据集来预测的特征(如原产国,城市,邮编和更多其他的列)来替代它。

 

我的下一个行动是从更多列的源文件中重新生成事务数据集,然后查看kegra是否仍然执行得非常好。在cora数据集上,并没有提早停止,所以我怀疑交易数据对kegra来说并不具有挑战性,这是我之前提到的原因之一。也许我可以把更多的语义特征嵌入到生成的图表中.下一步我可以做很多有趣的事情。

 

特别感谢Thomas Kipf在出版之前对这篇文章进行检查。与我平时的高水平文章相比,这是一篇非常难懂的文章。如果你喜欢这篇关于知识图谱的深度学习的文章,那么请让我知道来写更多的这样的研究内容。我也很高兴在评论中听到您的意见。

 

你可以鼓掌、点赞,在媒体中Follow我们的工作,并分享这篇文章的链接。

 

参考链接

博文链接:

https://towardsdatascience.com/kegra-deep-learning-on-knowledge-graphs-with-keras-98e340488b93

代码地址:

https://github.com/tkipf/keras-gcn



登录查看更多
59

相关内容

知识图谱(Knowledge Graph),在图书情报界称为知识域可视化或知识领域映射地图,是显示知识发展进程与结构关系的一系列各种不同的图形,用可视化技术描述知识资源及其载体,挖掘、分析、构建、绘制和显示知识及它们之间的相互联系。 知识图谱是通过将应用数学、图形学、信息可视化技术、信息科学等学科的理论与方法与计量学引文分析、共现分析等方法结合,并利用可视化的图谱形象地展示学科的核心结构、发展历史、前沿领域以及整体知识架构达到多学科融合目的的现代理论。它能为学科研究提供切实的、有价值的参考。

知识荟萃

精品入门和进阶教程、论文和代码整理等

更多

查看相关VIP内容、论文、资讯等

本文主要介绍了一种新的模型:知识图谱卷积网络神经网络 (KGCN),它是一种端到端的框架,能够通过挖掘KG上的相关属性,有效地捕获项间相关性。这项工作的主要思想是利用Grakn作为知识图谱,在知识图谱、自动逻辑推理和机器学习之间架起一座桥梁。

摘要

KGCN通过监督学习可以创建任何标签的Grakn Things集合的向量表示以及嵌入。

1.可以直接地对KGCN进行训练,以便对存储在Grakn中的实例进行分类或回归。

2.未来的工作将从通过无监督学习构建嵌入方面展开。

介绍

通常,数据并不适合表格的格式,相比之下,将复杂和相互关联的数据存储在知识图谱中有许多好处,尤其是它能完整地存储每个数据点的上下文信息。

然而,许多现有的机器学习技术依赖于每个例子的输入向量。创建这样的向量来表示知识图谱中的节点是具有挑战性的。

为了利用机器学习中丰富的现有的方法,工具和通道,我们需要一种构建这些向量的方法。通过这种方式,我们可以利用知识图谱中的上下文信息来进行机器学习。

这是KGCN可以实现的。通过给定知识图谱中的例子节点,它可以检查该例子附近的节点及其上下文。基于该上下文,它可以确定该例子的向量表示以及嵌入。

KGCN适用于两个广泛的学习任务:

1.从知识图谱中通过监督学习进行预测,例如多分类,回归和链接预测等。 2.无监督学习知识图谱的嵌入构建,例如用于聚类和节点比较任务。

为了建立有用的表示,KGCN需要进行一些学习。要做到这一点,它需要一个优化的函数。通过重新审视可以执行的任务,我们有不同的方式来进行学习:

1.在有监督的情况下,我们可以针对想要执行的明确任务进行优化。在这种情况下,嵌入是学习通道中的临时张量。

2.为了构建无监督学习嵌入作为输出,我们优化的目标则是最小化图中的一些相似性。

方法

实施的方法基于来自斯坦福SNAP小组的GraphSAGE,它非常适合于在知识图谱上工作。KGCN不处理典型的属性图,而是对从存储在类型化超图Grakn中的上下文数据进行学习。此外,它还能对从Grakn的自动逻辑推理器推导出的事实进行学习。

现在我们开始介绍关键组件以及它们如何进行交互。

KGCN

KGCN负责派生一组Things的嵌入(从而直接学习对它们进行分类)。我们首先查询Grakn以找到一组标签的例子。然后我们收集有关每个例子Thing的上下文的数据。我们这样做是通过递归地考虑他们的邻居和他们的邻居的邻居,直到K跳。

我们从Grakn(如上图所示)中检索有关该邻近的数据。此信息包括连接的每个相邻Thing 的层次结构类型,角色和属性值,以及推测出的邻居(由上图中的虚线表示)。这些数据被处理成矩阵作为神经网络的输入。

再通过Aggregate和Combine操作,就可以构建Thing的单个向量表示。这个过程可以递归地链接到相邻Things的K跳上。这就完成了包含从广泛上下文提取的信息的感兴趣的Thing表示。

在监督学习中,这些嵌入是直接优化来执行任务的。对于多分类,这是通过将嵌入传递到单个后续全连接层并通过softmax交叉熵确定损失来实现的(针对例子Thing标签); 然后,进行优化以减少损失。

KGCN对象将许多子组件、上下文构建器、邻居查找器、编码器和嵌入器组合在一起。

嵌入器

为了创建嵌入,我们在TensorFlow中构建一个网络,该网络能够连续地聚合和组合从K跳到保留“摘要”表示的特征---一种嵌入(如下图所示)。

为了创建通道,Embedder对所考虑的邻居的K-hop进行聚合和组合操作。例如,对于2跳的情况,这意味着Aggregate-Combine-Aggregate-Combine。

上图显示了在监督学习分类的情况下如何工作。

Embedder负责链接子组件Aggregator和Combiner。

聚合器

一个聚合器(如下图所示)发生在一件事的邻居的子样本的向量表示。它产生一个代表所有这些输入的向量。它必须以与订单无关的方式执行此操作,因为邻居是无序的。为实现这一目标,我们使用一个全连接层,并使用maxpool输出(maxpool与顺序无关)。

组合器

一旦我们将Thing的邻居聚合成单个向量表示,我们需要将它与Thing本身的向量表示相结合。组合器通过连接两个向量实现这一点,并减少使用单个全连接层的维数。

有监督KGCN分类器

有监督的KGCN分类器是负责实际的学习任务的。对于任何使用KGCN的学习者,它提供:

1.方法训练/评估/预测

2.嵌入张量到预测的通道

3.预测和标签的损失函数

4.优化

5.循环反向传播训练

下面是程序流程的略微简化的UML活动图。

建立KGCN

在开始构建KGCN之前,需要查看阅读文件的快速入门,确保满足所有要求并遵循例子的使用说明,模板代码如下:

下载链接:https://pan.baidu.com/s/1CivnydJQD5hd8OHyB_8vpg 提取码:4lxf

成为VIP会员查看完整内容
0
60
小贴士
相关资讯
Github六个知识图谱实战项目推荐
专知
222+阅读 · 2019年6月2日
资源 | 《Keras图像深度学习实战》
AI研习社
12+阅读 · 2018年9月19日
手把手教你用Python库Keras做预测(附代码)
数据派THU
11+阅读 · 2018年5月30日
基于TensorFlow的深度学习实战
七月在线实验室
9+阅读 · 2018年4月25日
知识图谱实战
炼数成金订阅号
56+阅读 · 2017年12月6日
知识图谱实战新课上线啦!
炼数成金订阅号
16+阅读 · 2017年11月16日
干货|7步掌握基于Keras的深度学习!
全球人工智能
3+阅读 · 2017年11月14日
深度学习实战(二)——基于Keras 的深度学习
乐享数据DataScientists
13+阅读 · 2017年7月13日
相关VIP内容
专知会员服务
28+阅读 · 2020年7月4日
专知会员服务
45+阅读 · 2020年7月1日
专知会员服务
69+阅读 · 2020年6月26日
一份简短《图神经网络GNN》笔记,入门小册
专知会员服务
175+阅读 · 2020年4月11日
专知会员服务
69+阅读 · 2020年2月27日
专知会员服务
60+阅读 · 2020年1月13日
医疗知识图谱构建与应用
专知会员服务
169+阅读 · 2019年9月25日
相关论文
Qingyu Guo,Fuzhen Zhuang,Chuan Qin,Hengshu Zhu,Xing Xie,Hui Xiong,Qing He
66+阅读 · 2020年2月28日
Tutorial on NLP-Inspired Network Embedding
Boaz Shmueli
5+阅读 · 2019年10月16日
Peng Tang,Chunyu Wang,Xinggang Wang,Wenyu Liu,Wenjun Zeng,Jingdong Wang
3+阅读 · 2019年4月8日
Yao Ma,Ziyi Guo,Zhaochun Ren,Eric Zhao,Jiliang Tang,Dawei Yin
13+阅读 · 2018年10月24日
Michael Färber,Achim Rettinger
10+阅读 · 2018年9月28日
Tianyu Yang,Antoni B. Chan
8+阅读 · 2018年3月20日
Ayush Jaiswal,Wael AbdAlmageed,Premkumar Natarajan
10+阅读 · 2018年2月17日
Yangyan Li,Rui Bu,Mingchao Sun,Baoquan Chen
8+阅读 · 2018年1月25日
Mohammad Hossain Namaki,F A Rezaur Rahman Chowdhury,Md Rakibul Islam,Janardhan Rao Doppa,Yinghui Wu
6+阅读 · 2018年1月21日
Afroze Ibrahim Baqapuri
3+阅读 · 2015年9月14日
Top