(2020)TransE论文笔记

在这里插入图片描述

文章目录:

Abstract

  1. Introduction

  2. Translation-based model

  3. Algorithm 伪代码

  4. Experiments

  5. Conclusion and future work


Abstract

  • 第一句就说明:本文针对的问题 在低纬向量空间中,多关系数据的实体和关系的Embedding问题,换句话说就是将实体和关系用低纬向量表示。于是有了TransE,别看它训练容易,处理大型数据也不在话下,又确保了实验效果出色,作者还在FB15k和WN18上进行了link prediction,真的是“可盐可甜“了。

Introduction

在这里插入图片描述

  • 论文主要面向多关系数据(wordnet,freebase)
    在这里插入图片描述
  • 提到很多年前的模型,比如基于向量分解model矩阵分解model;然后还有最近的模型,比如贝叶斯聚类model基于能量的模型model这些模型表面上是提高了模型的表示能力,实际上一个能打的都没有都是以提高模型复杂度和加重计算效率为代价的,还容易出现过拟合和拟合不足。既然这样作者提到,还不如用简单的线性model,效果也挺好!所以作者最后提到合适的模型要在准确性和扩展性之间做trade-off。--------TransE model 呼之欲出
    在这里插入图片描述
  • 这句话个人理解:TransE整体是Translation distance model(在许多综述中都是这么说的),这里提到它的实体的embedding是基于能量模型的。
    在这里插入图片描述
  • 提出了重要的思想:如果三元组(h, l, t)成立,则头实体embedding和关系embedding相加约等于尾实体的embedding。
    • 即: h+l ≈ t

Translation-based model

在这里插入图片描述

  • 公式

    1. loss function L = ∑ ( h , ℓ , t ) ∈ S ( h ′ , ℓ , t ′ ) ∈ S ( h , ℓ , t ) ′ [ γ + d ( h + ℓ , t ) − d ( h ′ + ℓ , t ′ ) ] + \mathcal{L}=\sum_{(h, \ell, t) \in S\left(h^{\prime}, \ell, t^{\prime}\right) \in S_{(h, \ell, t)}^{\prime}}\left[\gamma+d(\boldsymbol{h}+\ell, \boldsymbol{t})-d\left(\boldsymbol{h}^{\prime}+\ell, \boldsymbol{t}^{\prime}\right)\right]_{+} L=(h,,t)S(h,,t)S(h,,t)[γ+d(h+,t)d(h+,t)]+
    2. 正确三元组的距离: d ( h , l , t ) = ∥ h + l − t ∥ 1 / 2 2 d(h, l, t)=\|\mathbf{h}+\mathbf{l}-\mathbf{t}\|_{1/2}^{2} d(h,l,t)=h+lt1/22
    3. 错误三元组的距离:同理
  • 错误三元组生成:将正确三元组的头或者尾替换成其他的(每次只能选择头或者尾进行替换,不同时替换),得到错误的三元组。

    • S ( h , ℓ , t ) ′ S_{(h, \ell, t)}^{\prime} S(h,,t) : 错误三元组
    • ( h ′ , ℓ , t ) \left(h^{\prime}, \ell, t\right) (h,,t):替换了头的三元组
    • ( h , ℓ , t ′ ) \left(h, \ell, t^{\prime}\right) (h,,t):替换了尾的三元组

Algorithm 伪代码

在这里插入图片描述

algorithm步骤
input: 设置初始的三元组集S,正负样本之间的距离 γ \gamma γ,embedding纬度k
1.对每个关系赋值,并做归一化处理
2.同理,对每个实体赋值,并作归一化处理
3.设置从整个S集合抽取子集的次数,分批进行处理,每一批为 S b a t c h S_{b a t c h} Sbatch
4.初始化所有三元组,一开始 T b a t c h T_{b a t c h} Tbatch是空的
5.对每批 S b a t c h S_{b a t c h} Sbatch做迭代,每个 ( h , ℓ , t ) (h, \ell, t) (h,,t),根据前面提到,替换头 ( h ′ , ℓ , t ) \left(h^{\prime}, \ell, t\right) (h,,t)或者替换尾 ( h , ℓ , t ′ ) \left(h, \ell, t^{\prime}\right) (h,,t) ,得到错误三元组,将正确的和错误的三元组 { ( ( h , ℓ , t ) , ( h ′ , ℓ , t ′ ) ) } \left\{\left((h, \ell, t),\left(h^{\prime}, \ell, t^{\prime}\right)\right)\right\} {((h,,t),(h,,t))} 加到一开始空的 T b a t c h T_{b a t c h} Tbatch中。
第5步,需要注意:实际代码在替换头尾时,需要先做一个deep copy,不然替换了错误三元组,正确三元组就没了。
6.利用SGD更新损失函数(这步也有很多学习的地方)

Experiments

指标说明
FB15K14951个entity,1345个relation,592213个三元组
WN1840943个entity,18个relation,151442个三元组
FB1M25000个relation,1千7百万个三元组
raw在替换错误三元组中,会出现替换完对的情况。 raw是不处理这种情况下的结果
filtfilt就是去掉替换完后仍然正确的三元组
hit@10每个给定的(h,l,t),对原来(h,l,t)和替换后(h’,l,t’)求得分,再从小到大排序,排在前10的比例
  • 论文实验结果:
    在这里插入图片描述
  • 用openke框架跑FB15k的实验结果(k=50,epoch=1000,学习率0.01)
    在这里插入图片描述

Conclusion and future work

  • TransE的不足:在处理复杂关系(1-N,N-1,N-N)时,性能显著下降,比较适合处理1-1 的关系。

    为了满足复杂的关系,才有了后面的好多好多Trans**…


  • 需要论文、数据或者代码(自己下不下来),可以留言邮箱,我会发的哈

参考学习:

  • 4
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 37
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 37
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值