Reasoning With Neural Tensor Networks for Knowledge Base Completion

来源:互联网 发布:网络信息安全检测 编辑:程序博客网 时间:2024/06/09 16:09

[ 论文阅读地址 ]

1. 问题描述

输入

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

输出

  三元组(e1,R,e2) 中,e1e2 有关系R 的置信度。

2. 模型

输出


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

打分函数:

g(e1,R,e2)=uTRf(eT1W[1:k]Re2+VR[e1e2]+bR)

其中:

  • uTR 是属于类别R的权值。
  • f 是tanh激活函数,对输入的每个元素单独做tanh激活,即f:RnRn
  • e1e2 是输入的实体的向量表示,最初是直接赋随机值,训练时会更新。e1Rd×1 文章后文中提到了两点改进:
    • 不是每个输入实体对应一个向量,而是每个词语对应一个向量,实体向量由词向量求均值得到(作者提到,他们也采用了RNN进行实体向量的学习,但是由于数据中90%的实体都是由不超过两个词语构成,因而RNN并没有比简单的取平均更好)。同时在网络训练时候,也会对词向量进行更新。
    • 对于词向量,采用已经训练好的词向量去作为初始化值会比随机初始化效果更好。

      原论文中的图片
  • W[1:k]R 为和类别R 有关的张量,W[1:k]RRd×d×keT1W[1:k]Re2 可以看成 eT1W1Re2eT1WkRe2 ,即eT1W[1:k]Re2Rk
  • VR 是和类别有关的权值,VRRk×2d
  • bR 是和类别有关的偏置,bRRk

训练目标

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

损失函数

J(Ω)=i=1Nc=1Cmax(0,1g(T(i))+g(T(i)c))+λ||Ω||22

其中:

  • Ω=u,W,V,b,E
  • N 是训练数据中三元组的个数。
  • C 是构建负样本数据时,对每个正样本数据的采样次数。对于每个正样本T(i)=(e(i)1,R(i),e(i)2) ,生成的C 个负样本形如T(i)c=(e(i)1,R(i),ec)ec 是对样本中所有能出现在这个位置的实体进行随机重点内容采样而得到的。
  • 样本中不同的关系数量记为NRR(i) 表示这其中的第i个关系。每个关系R(i) 都有自己独立的张量网络参数。
  • g 是上文中提到的打分函数即网络的输出结果。
  • λL2 正则化项的超参数权重。

目标函数求解

g(e1,R,e2)W[j]=ujf(zj)e1eT2

其中
zj=eT1W[j]e2+Vj[e1e2]+bj

3. 个人理解

  最开始看到这个网络的时候,还在想那个双线性eT1W[1:k]Re2 怎么样用前馈网络来表述,后来看到了这个博文,写的很好,很有启发性。考虑这个函数:

f(x,y;W)=xTWy=i,jWi,jxiyj


S=(W1,1,W1,2,,Wd,d)TSRd2×1z=(x1y1,x1y2,,xdyd)TzRd2×1

那么
f(x,y;W)=STz

这一步转化很关键,因为把参数和输入进行了拆分。这样操作带来的好处就是,原目标函数可以进行等价变化:
g(e1,R,e2)=uTRf(eT1W[1:k]Re2+VR[e1e2]+bR)=uTRf(S[1:k]TRz+VR[e1e2]+bR)=uTRf([S[1:k]TR,VR]z[e1e2]+bR)=uTRf([S[1:k]TR,VR,bR]z[e1e2]1)

其中:

  • S[1:k]TRRk×d2 ,且每个关系R都有自己的S

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

eT1W[1:k]Re2

  这一部分,其实实质是在网络的输入中,加入了额外的信息:e1eT2 得到的矩阵进行展开。可以看出来,当我们人为的增加了一个输入后,网络的分类能力得到了提升,但是问题是,信息量是没有增加的,因为我们增加的输入是可以由以前的输入e1,e2 计算得到。
现在通用的神经元模型的计算模型是,给定输入xT,会得到输出xTw。而论文中的等价网络,相当于创建了一种这样的神经元:给定输入为xT,yT ,神经元的输出是σ(xyT)wσ 函数是把输入矩阵按行展开,即σRn×mR1×nm
  原本的神经网络利用的都是输入的一次信息(个人理解),而这个网络利用到了输入的二次信息。

1 0
原创粉丝点击