论文《Reasoning With Neural Tensor Networks for Knowledge Base Completion》的学习笔记

论文及译文

写在前面:
作为一个NLP小白,现在满脑子都是”不能拖后腿 不能拖后腿“ ,所以今天开始每天一篇文献好好做笔记,不知不觉已经爱上了typora的排版,所以上面的译文链接中的译文是用typora进行翻译的哦~由于排版需要耗点时间,博客可能没办法做到每天都及时更新,但但但,我会尽力的(ง •_•)ง

一、问题描述

1.1 输入

  三元组(e1,R,e2)(e_1,R,e_2)(e1​,R,e2​),如:(Bengal tiger, has part, tail)。

1.2 输出

  三元组(e1,R,e2)(e_1,R,e_2)(e1​,R,e2​)中e1和e2e_1和e_2e1​和e2​关系RRR的置信度。

二、算法介绍

2.1 Neural Models for Reasoning over Relations 神经网络结构

  神经张量网络(NTN)用双线性张量层取代了标准的线性神经网络层,该层直接将两个实体向量联系起来。该模型通过以下基于NTN的函数计算两个实体处于某种关系中的可能性的分数:
g(e1,R,e2)=uRTf(e1TWR[1:k]e2+VR[e1e2]+bR)(1)g(e_1,R,e_2)=u^T_Rf(e^T_1{W^{[1:k]}_R}e_2+V_R \left[ \begin{matrix} e_1 \\ e_2 \\ \end{matrix} \right]+b_R) (1)g(e1​,R,e2​)=uRT​f(e1T​WR[1:k]​e2​+VR​[e1​e2​​]+bR​)(1)
  其中ggg为NTN网络的输出,也就是最后对关系RRR置信度的打分。e1,e2e_1,e_2e1​,e2​为两个实体的特征向量,维度均为ddd,初始化可以是随机值(实验部分有描述),也可以是通过第三方工具训练后的向量,可基于训练不断调整。

uRTf(VR[e1e2]+bR)u^T_Rf(V_R \left[ \begin{matrix} e_1 \\ e_2 \\ \end{matrix} \right]+b_R)uRT​f(VR​[e1​e2​​]+bR​)

去掉Tensor部分后,整个网络就是一个典型的三层BP网络,f=tanh⁡f=\tanhf=tanh是隐层激活函数,输出层激活函数为purelinepurelinepureline,第一层权重为VVV,bbb为偏置,第二层权重为uuu。

  e1TWR[1:k]e2e^T_1{W^{[1:k]}_R}e_2e1T​WR[1:k]​e2​为Tensor项,WR[1:k]∈Rd×d×kW_R^{[1:k]}∈R^{d×d×k}WR[1:k]​∈Rd×d×k是一个张量每个WRiW_R^iWRi​是d×dd×dd×d矩阵,称为一个slicesliceslice,网络中一共有k个slicek个slicek个slice,对应神经网络隐层节点个数。

hi=[e1TWR[1:k]e2]i=e1TWRie2h_i=[e_1^TW_R^{[1:k]}e^2]_i=e_1^TW_R^{i}e^2hi​=[e1T​WR[1:k]​e2]i​=e1T​WRi​e2


图2:神经张量网络的可视化。每个虚线框代表张量的一个切片,在这种情况下有k=2k=2k=2个切片。

2.2 损失函数思想

  利用这个网络可以进行知识库推理学习,给定样本((ei,Rk,ej)((e_i,R_k,e_j)((ei​,Rk​,ej​)。实体特征给定后,对应输入。关系类型RRR对应训练后的网络参数,即网络权重和张量值的集合,每个关系RRR对应一个参数集合,样本中含有多个关系。

  训练时要构建负例样本,构建的方法就是从正例中随机把一个实体替换掉,最终的损失函数如下:

J(Ω)=∑i=1N∑c=1Cmax⁡(0,1−g(T(i)))+g(Tc(i)))+λ∣∣Ω∣∣22J(\Omega)=\sum_{i=1}^N{\sum_{c=1}^C{\max(0,1-g(T^{(i)}))+g(T_c^{(i)}))}}+\lambda||\Omega||_2^2J(Ω)=i=1∑N​c=1∑C​max(0,1−g(T(i)))+g(Tc(i)​))+λ∣∣Ω∣∣22​

  其中Ω\OmegaΩ是所有参数u,W,V,b,eu,W,V,b,eu,W,V,b,e的集合。u,V,bu,V,bu,V,b
为一般的BP网络的权重参数,eee为输入的实体特征向量,WWW为张量。Tc(i)T_c^{(i)}Tc(i)​是第iii个样本对应的反例。

  根据损失函数计算出上述参数的偏导数,按照一般的梯度下降法或L-BFGS等算法训练网格,训练出来的一个参数集对应一个关系。

图1:我们的模型概述,该模型学习知识库中条目的向量表示,以预测新的关系三元组。如果与单词表示相结合,这些关系可以以更高的精度进行预测,以及对于不在原始知识库中的实体。
  一个关系对是一个命题,我们要判定一个命题的置信度。把实体向量(已知)传入具体网络(关系参数已知)输出的结果即为置信度。

2.3 重新审视词向量

  作者在文中介绍了两种关于随机初始化实体向量时提高模型准确率的方法:

  • 由多个单词复合构成的实体向量初始化用多个词向量的平均值构成(WV)。作者也尝试使用RNNs学习复合词构成的实体向量,但由于某些原因实际效果并不好,所以直接取词向量的平均值。
  • 用无监督学习预训练出实体的向量去初始化实体里的词向量(WV-init)。

三、实验

表1:WordNet和Freebase的统计数据,包括不同关系的数量#R。

  本论文选取WordNet和FreeBase两个样本集去预测新的关系。在WordNet使用112581条三元组关系 (e1,R,e2)(e_1,R,e_2)(e1​,R,e2​)去训练,这些三元组来自38696个不同实体和11个不同类型的关系。与前任工作不同,作者过滤掉了一些关系,比如在WordNet三元关系里重复出现相同的实体的关系等。

3.1 三元组关系的判断

  本论文通过替换正样例中实体生成负样例,通过设置门槛TRT_RTR​,判断关系是否存在
g(e1,R,e2)≥TRg(e_1,R,e_2)\geq T_Rg(e1​,R,e2​)≥TR​

  在测试三元组关系是否存在的任务上对比了文中提到的物种不同模型的准确率,并发现本文提出的NTN模型准确率大幅度优于其他模型。

表2:不同模型准确率的比较。


  同时作者对比了在WordNet和Freebase里不同关系在同一个数据集上的准确率,结论如图所示,不同关系准确率不一样:

图3:两个数据集上不同关系的准确性比较。对于FreeBase,括号中的数字表示可能的答案集的大小。
  作者发现,实体向量初始化的方式的不同对准确率有很大影响,对比三种实体向量不同的初始化方式: * EV(Entity Vector):整个实体作为一个单独向量表示 * WV(Word Vector):词向量是随机初始化得到,然后用词向量的平均值表示实体向量 * WV-init:相比于WV词向量,其初始化是由无监督学习得到的

图4:实体表示形式的影响。EV:实体向量。WV:随机初始化的单词向量。WV-init:用无监督的语义词向量初始化的词向量。

3.2 推理的例子

  在判断三元关系准确率的任务中已证明本文模型对于预测一个三元关系是否存在较高的准确率。接下来,作者用两个实验展示NTN的推理能力

3.2.1 实验一

  选择一个实体和关系,然后将其他所有实体和这个实体的关系进行打分,并按分数降序进行排序,如下表所示:

表3:WordNet中右侧实体的模型排序示例。排名是基于NTN网络分配给每个triplet的分数。


  从这个表看出,主观看出,其中大多数推断的关系都是可信的。

3.2.2 实验二

  通过knowledge base已有训练过的三元关系,去推理实体间未知的关系,如下:

图5:FreeBase中的一个推理示例。黑线表示训练中给出的关系,红线表示模型推断出的关系。虚线表示单词向量共享。
  如图通过黑线已有的关系,推理出红线未知的关系,并且用词向量(word vector)表示实体向量(entity vector)后,相同的词语组成的实体的潜在语义关系也得以保存。

四、总结

  本文引入了神经张量网络NTN来实现知识库的完成。与以前使用知识库中的实体来预测关系的模型不同,我们的模型允许通过一个张量进行实体向量的中介交互。通过在给定的知识库内进行推理,该模型在预测实体之间看不见的关系方面获得了最高的准确性。即使没有外部文本资源,它也可以扩展数据库。我们进一步表明,通过实体的组成词表示实体,并使用现成的词向量初始化这些词表示,所有模型的性能都大大提高。未来工作的潜在路径包括根据每个关系的可用训练数据来缩放切片的数量,并将这些想法扩展到在自由文本上的推理。

五、等价变换

  我们观察公式e1T×W×e2e^T_1×W×e_2e1T​×W×e2​,记第一个特征向量e1e_1e1​为xxx,第二个为yyy,皆为列向量(本文中所有向量如未说明,皆为列向量)。该公式改写为:

f(x,y;W)=xT×W×y=∑W⊗(x×yT)f(x,y;W)=x^T×W×y=\sum W \otimes(x ×y^T)f(x,y;W)=xT×W×y=∑W⊗(x×yT)

  其中⊗\otimes⊗表示,两矩阵对应元素相乘作为新矩阵,×××为矩阵叉乘,∑\sum∑为矩阵所有元素求和。

  该函数可等价为:

f(x,y;W)=∑i,jwi,jxiyjf(x,y;W)=\sum_{i,j} w_{i,j}x_iy_jf(x,y;W)=i,j∑​wi,j​xi​yj​

  每个矩阵WWW对应一个slicesliceslice,对应函数用fif_ifi​表示,共kkk个。

  此时使用一个小技巧,把矩阵WWW压扁,拉成一个向量sss,s=(w1,1,w2,1,...,wk,k,)Ts=(w_{1,1},w_{2,1},...,w_{k,k},)^Ts=(w1,1​,w2,1​,...,wk,k​,)T,然后把矩阵x×yTx\times y^Tx×yT压扁,形成向量zzz,z=(x1y1,x2y1,,,,xkyk)Tz=(x_1y_1,x_2y_1,,,,x_ky_k)^Tz=(x1​y1​,x2​y1​,,,,xk​yk​)T。保持原矩阵元素不变,然后二维降成一维。矩阵和拉长后的向量可以相互转换,生成网络结构时,我们把矩阵拉成成为向量,在训练时计算梯度后要把向量还原为矩阵。上述公式变为:

f(x,y;W)=sTzf(x,y;W)=s^Tzf(x,y;W)=sTz

  zzz作为两个原始向量的x,yx,yx,y的二次项xi,yjx_i,y_jxi​,yj​集合,sss是二次项系数,函数fff是关于x,yx,yx,y的二次多项式。每个片(slice)对应一个矩阵记为WiW_iWi​,忽略关系下标RRR;对应一个长向量sis_isi​;对应一个函数fif_ifi​,所有片的向量组成一个矩阵:

S=[s1Ts2T⋅⋅⋅skT]S=\left[ \begin{matrix} s_1^T \\ s_2^T\\···\\s_k^T \end{matrix} \right]S=⎣⎢⎢⎡​s1T​s2T​⋅⋅⋅skT​​⎦⎥⎥⎤​

  这个矩阵SSS称之为张量矩阵,与张量WR[1:k]W^{[1:k]}_RWR[1:k]​等价,此时公式(1)中的张量项表示为:
e1TWR[1:k]e2=[f1f2⋅⋅⋅fk]=S×ze_1^TW_R^{[1:k]}e_2=\left[ \begin{matrix} f_1 \\ f_2\\···\\f_k \end{matrix} \right]=S\times ze1T​WR[1:k]​e2​=⎣⎢⎢⎡​f1​f2​⋅⋅⋅fk​​⎦⎥⎥⎤​=S×z

  到此为止,忽略关系下标,我们重写公式(1)所表示的网络结构为:
g=uT([VS]×[xyz]+b)g=u^T(\left[ \begin{matrix} V\\S\end{matrix} \right] \times \left[ \begin{matrix} x \\y\\z \end{matrix} \right]+b)g=uT([VS​]×⎣⎡​xyz​⎦⎤​+b)

  这就是一个经典的三层BP神经网络了,输入层为x,yx,yx,y以及它们的二次向量zzz,第一层权重矩阵为原权重矩阵VVV与张量矩阵SSS的合体。

六、思考

  NTN模型的本质是在经典的BP神经网络的输入层中加入了二次项,从而大大提高了推断的准确率。

  用NTN神经网络训练进行三元组关系推理时候的阈值TRT_RTR​是怎么确定的?

  源码居然是matlab写的,好家伙

参考

  五色光 博客
  _hehe 博客
  so_weak_weak 博客

论文《Reasoning With Neural Tensor Networks for Knowledge Base Completion》的学习笔记相关推荐

  1. 论文记录:Reasoning with neural tensor networks for Knowledge Base completion

    论文记录:Reasoning with neural tensor networks for Knowledge Base completion Paper points Neural tensor ...

  2. 【阅读笔记】Reasoning With Neural Tensor Networks for Knowledge Base Completion

    前言 论文地址 Poster Abstract 这篇论文里,作者介绍了一个适用于推理两个实体关系的神经网络(Neural Tensor Network).相比之前的工作要么将实体表示成离散的最小单元或 ...

  3. 关于GCN的论文笔记--End-to-end Structure-Aware Convolutional Networks for Knowledge Base Completion

    用于知识图谱完成的端到端结构感知卷积网络 论文题目 End-to-end Structure-Aware Convolutional Networks for Knowledge Base Compl ...

  4. 【阅读笔记】:End-to-end Structure-Aware Convolutional Networks for Knowledge Base Completion

    为解决知识图谱(KG)中三元组不完整问题,本文结合加权图卷积神经网络(WGCN)和Conv-TransE两个模块,提出了SACN(Structure-Aware Convolutional Netwo ...

  5. End-to-end Structure-Aware Convolutional Networks for Knowledge Base Completion

    研究问题 将图网络作为编码器,将Conv-TransE作为解码器,应用于知识图谱补全任务 背景动机 ConvE模型在做卷积之前对embedding实施了reshape操作,并且没有保留TransE系列 ...

  6. 论文解读:Improved Neural Relation Detection for Knowledge Base Question Answering

    论文解读:Improved Neural Relation Detection for Knowledge Base Question Answering   本文解决KBQA中的子问题--Relat ...

  7. 论文翻译:《Improved Neural Relation Detection for Knowledge Base Question Answering》

    该论文于2017年发表在ACL,主要讲了智能问答在sq和wq两个数据集上的性能提升,本人研究生方向为这个,故翻译此论文,希望对大家有用. 论文地址:Improved Neural Relation D ...

  8. Improved Neural Relation Detection for Knowledge Base Question Answering

    Improved Neural Relation Detection for Knowledge Base Question Answering 2017 ACL SQ78.7 WebQSP63.9 ...

  9. Compositional Vector Space Models for Knowledge Base Completion

    Compositional Vector Space Models for Knowledge Base Completion 来源 motivation 模型 zero-shot KBC 实验结果 ...

  10. 论文浅尝 | How to Keep a Knowledge Base Synchronized

    Citation: Liang, J.,Zhang, S. & Xiao, Y. (2017). How to Keep a Knowledge Base Synchronized withI ...

最新文章

  1. poi 启用保护后取消_雪佛龙取消商标许可,澳洲加德士更名Ampol后启用新LOGO
  2. Pycharm-列出代码结构
  3. 详细解析WSAAsyncSelect模型
  4. 1.4三态缓存(tristate buffer)与 多路复用器(Multiplexers)
  5. 学习Site Columns
  6. 多层full-connect 神经网络测试
  7. 创建第二个 vlan network vlan101 - 每天5分钟玩转 OpenStack(96)
  8. 修复被病毒破坏的Winsock
  9. Tera Term简单配置
  10. 课堂作业之首尾相连子数组值
  11. Enterprise Architect 15 使用指南
  12. TDMA噪音产生机制及抑制
  13. java中五子棋_Java简单五子棋的实现
  14. 链接生成二维码( QRCode )
  15. 美团外卖前端实习生面试总结
  16. 《游戏学习》Java实现仿雷电游戏设计
  17. 【SpringBoot】人工更新SpringBoot项目,Jar包太大问题解决,SpringBoot瘦包
  18. 2019计算机应用设计大赛,关于举办2019年桂林理工大学网页设计大赛暨第十三届广西大学生计算机应用大赛选拔赛的通知...
  19. Python_捕获未知错误代码
  20. 机票搜索高并发架构设计

热门文章

  1. kotlin 实战之核心基础特性总结
  2. 红外线体温计详细制作方案
  3. WebRTC实现简单音视频通话功能
  4. m分别使用ESN网络,ESN+RBF神经网络以及ESN+Volterra网络进行数据预测对比仿真
  5. Codeforces 274E. Mirror Room-模拟+STL
  6. linux内核支持浮点吗,浅谈linux kernel对于浮点运算的支持
  7. 旁注虚拟主机IIS权限重分配跨目录得webshell
  8. jQuery ajax 文件下载
  9. js for in对象key排序
  10. HaaS EDU K1 快速搭建Python开发环境