TransE论文剩余部分

TransE在链接预测任务中表现出色,尤其是在FB1M和WN数据集上,实现了89%的hits@10和34%的hits@10。对比其他方法,如SE、SME、LFM,TransE由于其简洁的模型和有效优化,展现出更好的性能。尽管SE在小样本集上表现不佳,但TransE在学习新关系时速度最快,仅需少量样例即可达到较好的预测效果。

4.3链接预测

表3:链接预测结果。不同方法的性能。


总体结果 3显示了所有数据集所有方法的比较。与预期结果一致,经过过滤设置的结果具有较低的平均排名和较高的hits@10,相信在链接预测方面对各种方法有一个清晰地性能评估。然而,rawfiltered的趋势是一样的。

我们的方法TransE在所有度量上面通常很大程度上优于所有进行比较的方法,并且取得了一些绝对好的性能例如WN89%hits@10(超过40k的实体)和在FB1M上的34%hits@10(超过1M的实体)。TransE和这些第二好的方法之间的不同之处是很重要的。

我们相信TransE良好的性能是由于对数据恰当的建模,但也是由于模型相对简单。这意味着它能够用随机梯度有效的优化。第3节我们已经说明SE比我们的模型更具表达性。然而,它的复杂性可能使它学习起来十分困难,导致性能很差。在FB15k上,在训练集的一个有50k的元组的子集上SE取得了165的平均排名和35.5%hits@10TransE则分别取得了12742.7%,这表明事实上TransE欠拟合的程度更小,这可能能解释它比较好的性能。SME(双线性)和LFM有同样的训练问题:我们从来都没有成功的把它们训练的足够好来开发出它们所有的功能。通过我们的评价设置--基于实体排名,LFM较差的结果也可以解释,因为LFM最初是为了预测关系提出来的。在FB15k上,RESCAL能够取得十分好的hits@10,但是平均排名方面比较差,尤其在WN上,即使我们用很大的隐藏维度(2000 on Wordnet)。

翻译的影响是巨大的。当比较TransE和非结构的方法(也就是缺少翻译的TransE),非结构化的平均排名相对较好,但是hits@10非常差。非结构化的方法简单的把所有出现的实体聚类,不依赖所涉及的关系,因此仅仅靠猜想来判断实体相关。在FB1M上,TransE和非结构化方法的平均排名几乎一样,但是TransE的预测排在前10位的数目是非结构化方法的10倍之多。

表4:关系聚类的详细结果。我们比较了在FB15k上以过滤数据为评价比较TransE和参考方法的hits@10


详细结果 表4展示了在FB15k上依据关系的几种类别的分类结果,并依此对几种方法进行预测。我们根据头和尾的基数参数把关系分为4类:1-11-多,多-1,多-多。如果一个头部至多对应一个尾部,那么它们的关系是1-1,如果一个头部对应多个尾部,那么它们的关系是1-多,如果很多头部对应同一个尾部,那么它们的关系是多-1,如果多个头部对应多个尾部,那么它们是多-多关系。通过下面的处理我们把关系分成这四类,给定一个序对(lt)(同样地,序对(hl),对每个关系l,计算头部h(同样地,尾部t)出现在FB15k数据集上的平均数。如果这个平均数小于1.5就被标记为1-多等等。例如,每个尾部平均有1.2个实体并且每个头部平均有3.2个尾部的关系被分类为1-多。我们得到在FB15k上有26.2%1-1关系,22.7%1-多关系,28.3%的多-1关系和22.8%的多-多关系。

4中的详细结果考虑了一个更精确的评估并且了解了这些方法的行为。首先,它出现了期望的结果,它能够很容易的预测实体一方只有一个对应关系的元组的实体(也就是预测在关系1-多下预测头部,在多-1关系下预测尾部),也就是有多个实体指向它的时候。这些是有很好指向的例子。SME(双线性)被证明在处理这样的例子时时很精确的,因为这些例子是它们训练最多的样例。非结构化的方法在1-1关系上显示了良好的性能:这表明这样的关系的参数必须共享相同的隐藏类型,而非结构化的方法在嵌入空间上通过聚类把实体连接在一起能够发现这样的隐藏类型。但是这种策略在其它关系类型上是失败的。在嵌入空间增加翻译,通过其后的关系从一个实体聚类到另一个实体聚类。对这些指向性很好的例子这一点是非常惊人的。

5TransEFB15k测试集上的样例预测。粗体是测试元组正确的尾部,斜体是训练集上其它正确的尾部。


举例说明 5给出了TransEFB15k测试集上的样例链接预测的结果。这举例说明了我们模型的能力。给定一个头部和一个标签,排在最高位的尾部被描述出来。这些样例来自FB15k的测试集。即使排在最高位的不总是最好的答案,但这个预测也反映了一般的常识。

4.4用几个例子学习预测新关系

FB15k,通过检查这些方法在学习新关系时的速度有多快来测试他们在泛化新的事实方面有多好。为了那个目的,我们随机选择40个关系并且分割成两个数据集:一个数据集(命名为FB15k-40rel)包含所有40个元组,另一个数据集(FB15k-rest)包含剩余的数据。我们确保它们包含所有的实体。FB15k-rest被分割成一个包含353,788个元组的训练集和一个包含53,266个元组的验证集。FB15-rel分成40,000元组的训练集和45,159的测试集。利用这些数据集,我们分析如下实验:(1)利用FB15k-rest的训练集和验证集训练和选择最好的模型,(2)随后在FB15k-40rel的训练集上训练并且只学习和新的40个关系相关的参数,(3)在FB15k-40rel的测试集(只包含(1)期间没有见过的关系)上进行连接预测评估。在(2)阶段,对每个关系我们用0,10,1001000个样例重复这个过程。


图1:用几个样例学习心关系。比较试验数据是FB15k数据集,使用平均排名(左)和hits@10(右)作为评价标准。更多细节参见下文。

1展示了非结构化方法,SESME(线性),SME(双线性)和TransE的结果。但不提供已知关系时,非结构化方法取得的性能最好,因为它并不使用这些信息去预测。但是,当提供关系的例子时这种性能并没有得到提升。TransE是学习最快的方法:只有一个新关系的10个样子时,它的hits@10仍然有18%,并且随着提供样例的增加这个数据单调递增。我们相信TransE模型的简单性使它能够有较好的泛化能力,而不必修改任何已经训练好的嵌入。

5总结和展望

我们提出了一种新的学习知识库嵌入的方法,主要是最小化模型的参数,主要表示层次关系。通过与两个不同且规模很大的知识库上和其它方法比较,我们的模型效果很好,借此我们把它应用到了大规模知识库数据块上。尽管还不清楚用我们的方法是否能够充分地对所有的关系类型建模,但是通过关系分类评价与其他方法相比在所有的设置条件下它似乎有很好的性能。

后面会进一步分析这个模型,并且把它应用到更多的任务中,特别是应用到如文献[8]提到的学习词表示。结合知识库和文本[2]是另一个重要的方向,我们的方法对此可能是有用的。因此,最近我们把TransE插入到一个框架中从文本[16]中进行关系抽取。


### TransE算法论文与实现相关研究 TransE算法是一种经典的知识图谱嵌入方法,由Bordes等人在2013年的NIPS会议上提出[^1]。该算法的核心思想是将知识图谱中的每个三元组(head, relation, tail)表示为向量,并假设关系可以被视为从头实体到尾实体的平移向量。具体来说,TransE的目标是最小化以下公式中的距离: \[ d(h + r, t) \] 其中 \( h \), \( r \), 和 \( t \) 分别表示头实体、关系和尾实体的向量,\( d \) 表示距离度量(如L1或L2范数)。通过优化这个目标函数,TransE能够学习到实体和关系的低维向量表示[^5]。 #### 论文参考 TransE算法的原始论文标题为《Translating Embeddings for Modeling Multi-relational Data》,详细描述了TransE的理论基础和实验结果。这篇论文探讨了如何利用分布式向量表示来解决多关系数据的处理问题,并展示了TransE在链路预测任务中的优越性能。 此外,还有许多后续研究基于TransE进行了改进,例如TransH、TransD等算法,这些研究进一步提升了知识图谱嵌入的效果[^1]。 #### Transe.py实现相关研究 关于`transe.py`的实现,通常涉及以下几个关键步骤: 1. **模型定义**:定义TransE模型,包括实体总数、关系总数、向量维度等参数[^2]。 2. **损失函数**:使用负采样技术构造正负样本对,并通过对比损失函数优化模型参数[^5]。 3. **训练过程**:采用随机梯度下降(SGD)或其他优化算法进行训练,同时对关系向量进行归一化以避免尺度变化[^4]。 一个典型的`transe.py`实现可能包含以下代码片段: ```python import torch import torch.nn as nn class TransE(nn.Module): def __init__(self, ent_tot, rel_tot, dim=200, p_norm=1, norm_flag=True): super(TransE, self).__init__() self.ent_embeddings = nn.Embedding(ent_tot, dim) self.rel_embeddings = nn.Embedding(rel_tot, dim) self.p_norm = p_norm self.norm_flag = norm_flag def forward(self, pos_triple, neg_triple): pos_h, pos_r, pos_t = pos_triple neg_h, neg_r, neg_t = neg_triple pos_score = self._calc(pos_h, pos_r, pos_t) neg_score = self._calc(neg_h, neg_r, neg_t) return pos_score, neg_score def _calc(self, h, r, t): if self.norm_flag: h = torch.nn.functional.normalize(self.ent_embeddings(h), 2, -1) r = torch.nn.functional.normalize(self.rel_embeddings(r), 2, -1) t = torch.nn.functional.normalize(self.ent_embeddings(t), 2, -1) score = h + r - t score = torch.norm(score, self.p_norm, -1) return score ``` 上述代码展示了如何定义TransE模型并计算正负样本的得分[^2]。 ### 相关研究方向 除了原始的TransE算法,还有许多相关的研究方向值得关注,例如: - **TransH**:通过引入超平面投影改进TransE,允许关系具有更复杂的几何结构。 - **TransD**:考虑实体和关系的动态维度,进一步提升模型的表达能力。 - **复杂知识图谱嵌入**:结合深度学习技术(如卷积神经网络)扩展TransE的应用范围[^3]。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值