Advertisement

Reasoning With Neural Tensor Networks for Knowledge Base Completion

阅读量:

[ 论文阅读地址 ]

1. 问题描述

输入

一个三元组:(e_1, R, e_2),例如(Bengal tiger, has part, tail)。

输出

三元组 中,e_1e_2 有关系R 的置信度。

2. 模型

输出

论文中关于打分函数的形象图示

打分函数:

其中:

  • 类别R上的转置权值由变量u_R^T代表。

  • 激活函数tanh将每个输入元素独立地进行激活操作,并定义为从\mathbb{R}^n映射到\mathbb{R}^n的空间函数。

  • 以及 表示输入实体的向量表示,在初始化阶段会被赋予随机数值,并在训练过程中逐步更新优化。其中变量e_1 \in \mathbb{R}^{d \times 1}文章后文中提到了两点改进:

  • 每个输入实例并不直接对应一个独立的高维空间;相反地,在这种模型架构中,“词语单元”各自拥有独特的表示(即词嵌入),而每个实例的空间则由所有其组成部分的词语嵌入求平均值得到(作者指出,在他们的实验中采用了基于RNN的方法来学习这些实例表示;尽管如此,在处理大量数据时(其中约90%的实例仅由不超过两个词语构成),基于RNN的学习并没有显著优于简单取平均的效果)。在实际应用中,在网络训练过程中也会动态更新这些词嵌入。

  • 在初始化词嵌入时,“预训练好的词嵌入”能够提供更好的效果,“随机初始化”的方法显然不够理想。

原论文中的图片
  • W_{R,\text{相关}}^{[1:k]}代表与类别相关的张量矩阵,并且满足 W_{R,\text{相关}}^{[1:k]} \in \mathbb{R}^{d\times d\times k}
  • V_{\text{相关}}^R\in\mathbb{R}^{k\times 2d} 表示与类别相关的权值矩阵。
  • b_{\text{相关}}^R\in\mathbb{R}^k 表示与类别相关的偏置向量。

训练目标

正样本T^{(i)} 应该获得比对应的负样本T_c^{(i)} 更高的打分。

损失函数

其中:

  • \Omega = u, W, V, b, E
  • N 是训练数据中三元组的个数。

在构建负样本数据的过程中,C 表示每个正样本数据的采样次数。对于每个正样本实例 T^{(i)} = (e_1^{(i)}, R^{(i)}, e_2^{(i)}) ,生成了若干负样本实例 T_c^{(i)} = (e_1^{(i)}, R^{(i)}, e_c) ,其中 e_c 是通过对样本中所有能出现在该位置的实体进行重点随机选择而得到的结果。不同关系的数量用符号 N_R 表示,在此上下文中,每个关系被独立地编码为张量网络参数。每个关系都拥有独特的张量网络参数设置。

  • \lambdaL_2 正则化项的超参数权重。

目标函数求解

其中

3. 个人理解

最初接触到这个网络时,在思考如何利用前馈网络来描述它?随后阅读到了一篇非常棒的文章[https://www.cnblogs.com/wuseguang/p/4163.html](略去原文链接),其中内容十分有启发性。为了更好地理解其工作原理,在深入研究了该函数之后

考虑到其复杂的计算流程,并尝试将其分解为若干个子过程来进行建模

那么

这一步转换至关重要,在实现了对参数与输入的拆分之后。处理过程带来了显著的好处,则表明原目标函数可以通过等价转换实现:

其中:

  • {S^{[1:k]}}_R^T \in \mathbb{R}^{k \times d^2} ,且每个关系R都有自己的S

化简到这里,就可以看出来,论文中提到的双线性:

这一部分,其实实质是在网络的输入中,加入了额外的信息:e_1e_2^T 得到的矩阵进行展开。可以看出来,当我们人为的增加了一个输入后,网络的分类能力得到了提升,但是问题是,信息量是没有增加的,因为我们增加的输入是可以由以前的输入e_1, e_2 计算得到。
现在通用的神经元模型的计算模型是,给定输入x^T,会得到输出x^Tw。而论文中的等价网络,相当于创建了一种这样的神经元:给定输入为x^T, y^T ,神经元的输出是\sigma(xy^T)w\sigma 函数是把输入矩阵按行展开,即\sigma \in \mathbb{R}^{n \times m} \to \mathbb{R}^{1 \times nm}
原本的神经网络利用的都是输入的一次信息(个人理解),而这个网络利用到了输入的二次信息。

全部评论 (0)

还没有任何评论哟~