神经张量网络:探索文本实体之间的关系

译者:Waitingalone

本文翻译自Gaurav Bhatt在 发表的NEURAL TENSOR NETWORK: EXPLORING RELATIONS AMONG TEXT ENTITIES。文中版权、图像代码等数据均归作者所有。为了本土化,翻译内容略作修改。

在这篇文章中,我将介绍神经张量网络(NTN),如在用神经张量网络推理知识库的推理中所描述的那样 。我的NTN实现使用最新版本的Python 2.7,Keras 2.0和Theano 0.9。

用代码直接跳到GitHub仓库。

什么是知识库完成?

在知识库完成中,任务是确定两个实体对之间的关系。例如,考虑两个实体对 -<cat, tail> 和<supervised learning, machine learning>。如果我们被要求确定给定的两对之间的关系 - <cat,R,tail>和<supervised learning, R, machine learning> - 那么第一个关系可以最好的归结为有型,而第二个关系可以被归结为实例。所以,我们可以将这两个对重新定义为 <cat,has,tail>和<supervised learning,instance of,machine learning>。神经张量网络(NTN)在实体 - 关系对的数据库上训练,用于探究实体之间的附加关系。这是通过将数据库中的每个实体(即每个对象或个体)表示为一个向量来实现的。这些载体可以捕获有关该实体的事实,以及它是如何可能是某种关系的一部分。每个关系都是通过一个新的神经张量网络的参数来定义的,这个神经张量网络可以明确地涉及两个实体向量

使用NTN预测新的关系三元组。

关系推理的神经模型

能够认识到某些事实纯粹是由于其他现有的关系而存在的,是学习常识推理的模型的目标。NTN旨在发现实体<e1,e2>之间的关系,即对于<e1,e2>确定性地预测关系R. 例如,(e1,R,e2) = (Bengal tiger, has part, tail) 这个关系是否真实且具有确定性。神经张量网络(NTN)用一个双线性张量层代替一个标准的线性神经网络层,它直接关联了多个维度上的两个实体向量。该模型通过下列基于NTN的函数计算两个实体处于特定关系的可能性分数:

其中是标准非线性的单元应用,是张量,双线性张量积

神经张量网络:探索文本实体之间的关系

产生向量,其中每个条目张量的一个切片

神经张量网络:探索文本实体之间的关系

计算:。其它参数为关系R是一个神经网络的标准形式:和,

可视化神经张量层

NTN使用张量变量 对两个实体之间的关系进行乘法建模。如上所示,NTN是对简单神经层的扩展,增加了这些张量变量。所以,如果我们从上图中删除 ,最后,目标函数被定义为

这是一个简单的实体向量连接,以及偏向项。

培训目标

NTN采用对比式最大余量目标函数进行训练。给定训练样本中的三元组,则通过随机的将第二个实体替换为来创建负样本,其中j是随机索引。最后,目标函数被定义为

神经张量网络:探索文本实体之间的关系

其中,是正则化参数。

实施细节

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zyzzfx.html