赞
踩
写作目的:
在学习论文时,参考查阅许多博客,我认为大多在照搬原文翻译中的话,另外,按此顺序的写作手法,对于我或其他读者仍旧晦涩难懂,甚至这些博客中出现很多错误的理解,在阅读和参考中,写下自己的主观理解并分享,因个人能力极其有限,难免会有出错的地方,因此不完全代表原论文中作者的意思,诚恳希望大家在评论区纠错指正和补充完善,万分感激!
本文相关:
1.机器学习中正则化项L1和L2的直观理解
2.论文笔记(一):TransE论文详解及代码复现
3.如何理解随机梯度下降(stochastic gradient descent,SGD)
4.batch GD, mini-batch GD, SGD的理解
5.机器学习:SVM(目标函数推导:Hard Margin SVM、Soft Margin SVM)
资源下载:
1.线性回归与正则化
2.基于TransE的表示学习方法研究综述
TransE: Translating Embedding,将实体与关系嵌入到低维向量空间中,并对向量空间中的三元组(h,r,l)进行操作,把关系 r 视为“翻译”来进行建模的知识表示方法
Motivation: 处理在低维向量空间中嵌入的实体和多关系数据的关系的问题【知识图谱(KG)是其中的重要的研究对象】
Advantage: 相比之前存在的诸多三元组的训练表示方法,更易于训练,且包含较少的参数,可以扩展到非常大的数据库,并且,在现实世界中存在的知识图谱上的链接预测方面可以显著优于发表时的最先进的方法
Paper: Antoine Bordes等人在2013年发表于NIPS上的文章
TransE 对三元组(h,r,t)中的实体和关系映射到向量空间作了一些假设:
每一个三元组(h,r,t)都能表示为(h,r,t),其中,h是指头实体的向量表示,r是指关系的向量表示,t是指尾实体的向量表示
通过不断调整来构建三元组(其中三元组的实体和关系都来自源知识图谱),来发现向量空间中,头实体向量 h加上关系 r等于尾实体向量 t的三元组,这个过程称为翻译,如果在向量空间这种关系成立,就说明三元组(h,r,t)所代表的知识表示可以看作是正确的,以此来发现实体间新的关系,如下图所示:
用我自己的理解,TransE 的功用在于:
① 通过词向量表示知识图谱中已存在的三元组(所以TransE可以看作知识表示方法)
② 扩大知识图谱中的关系网,扩充构建多元关系数据。其中,关系数据包括单一关系数据(single-relational data)和多元关系数据(multi-relational data)(单一关系通常是结构化的,可以直接进行简单的推理,多元关系则依赖于多种类型的实体和关系,因此需要一种通用的方法能够同时考虑异构关系)(所以TransE可以看作“活的”或“更高级的”的知识表示方法,因为可以做知识图谱上的链接预测,或作为媒介完善知识图谱)
实验的训练集使用的是知识图谱中的实体集和关系集进行构造:
Given a training set S of triplets (h, l, t)
composed of two entities h, t ∈ E (the set of entities) and a relationship l ∈ L (the set of relationships)
即训练集中头实体向量和尾实体向量都来源于原知识图谱中的实体集,l 来自于知识图谱现有的关系集
知识图谱(KG)中现存的关系构成关系集,实体构成实体集,我们抽取两个集合来构造三元组,让知识图谱(KG)中的成对的实体与每个关系做向量的运算,如果近似达到要求,就连接两个实体来补充完善知识图谱,从而挖掘或者说是发现实体间的多元关系,扩大知识图谱实体间的关系网,发挥链接预测的作用。
按照自己理解画图如下:
把算法伪代码放在了最后,从头到尾分析设计流程,再去看就容易理解很多
在知识图谱的实体向量集中,随机取得头实体向量 或 尾实体向量并对初始三元组的对应向量进行替换(一次替换一个,另一种设计方案,替换关系 r ,也可以,原理一样),得到若干三元组d ( h’ + r,t’ ),构成训练集进行训练。损失函数 L 在后边介绍(此处先不过多关注)
论文中提到了两类样本,即正样本三元组和负样本三元组,主观理解如下:
正样本三元组: 翻译关系成立的三元组称为正样本三元组(KG中原本存在的关系一定满足,另外,新构建的三元组一部分也满足翻译关系),这些样本从某种程度可以看作一类样本,可用于完善知识图谱或做链接预测表明两个实体存在这种关系。
负样本三元组: 通过均匀负采样技术得到: 随机替换 KG 中现有的三元组中的头实体向量或尾实体向量构建的样本视为错误的样本,即错误的样本【当然也有可能正好替换为正确的样本,对训练造成影响,这也是 TransE 的槽点之一吧,后期有通过改进这种负采样技术的方法】,这些错误的样本在这些三元组样本中,部分样本的翻译关系是不成立的(三元组中两个实体不存在这种关系),来辅助训练。
负采样过程示例:
里边有个负采样(替换)的过程,来构建出负样本三元组(替换的过程也会无意构成正样本三元组,因为这种无意充满不确定性,因此训练时影响最终的真实模型精度,因此在测试中也应该过滤掉,文中称为Filter),和正样本三元组一起构成训练集。训练的过程对每个三元组进行打分,因此这要进行打分函数的设计,训练中朝着确保正样本三元组的得分尽可能小,负样本三元组的得分尽可能大的方向进行,这样模型最终效果才会好,采用 mini-batch SGD来更新参数,找到相应的三元组,使得模型快速收敛。同时,在分类边界,损失函数中也设置间隔作为容错机制,使得最近的样本间隔最远,以此可使得模型对两者的分类效果或精度达到不错的水平,损失函数也相应越小。模型最终使用场景,输入头实体向量和关系,输出约十个置信度较高(通过排名得到)的尾实体向量的预测,同时去掉数据集(包括训练集,测试集和验证集)中的负样本三元组。因此在测试集中,可以通过看真实值在预测值里的命中率来评估。
这里我们也能看出 TransE 的另一个槽点:
由于头尾实体向量(统称为实体向量)在一个集合(ent2id 即 实体-id 词典)中,负采样也是在这个词典进行。
正如从 [ h + r ≈ t ] 的二维向量空间展示图中可以看到那样,如果 h + r ≈ t 代表 h 和 t 存在父子关系,谁父谁子是体现不了的。
作者提到知识图谱中可能没有箭头指向,更多关注这种存在的关系,按我这样理解应该是这层含义。
基于翻译的模型的设计与分析:
得分函数的设计 :
注:d ( h + r,t ) = || h + r - t ||,距离公式 d ( h + r,t ) 可以取 L1 或 L2 范数,论文中的设置是 d ( h + r,t ) = || h + r - t ||( L1 / L2 可自行选择 ) = f (h,r,t),这是个小细节,我们可以看到正样本三元组距离函数值几乎为 0,负样本三元组的距离函数值较大,经过 L1 或 L2正则化确定最终的得分函数值,正则化后的值最终用于损失函数(这样可以避免训练出现过拟合),通过梯度下降朝着损失函数最小的方向更新参数(通过负采样,最小化损失函数来构建训练集,实际上,采集的样本随着参数的更新,在时序推进中,正样本的 d 会越来越小,负样本的 d 会越来越大),直至模型收敛,从而达到理想的精度。
对 L1 或 L2正则化有疑惑可以参考文首的本文相关和资源下载对应内容,以下是回忆旧知,以平方误差函数作为损失函数,分别加入 L1 正则项和 L2 正则项举例,目标是让损失函数最小,同时使得最终训练的模型避免过拟合现象,关键原理如下:
同理可得,对 r 和 t 的梯度
参数更新:
使用 minibatch SGD,如下图所示,可参考文首链接的博客,对应查漏补缺,此处不再赘述…
损失函数更新的参数,是所有 entities 和 relations 的 Embedding 数据,包括h、r、t,每一次SGD更新的参数就是一个Batch中所有embedding的值,总参数是最初我们画的那俩矩阵的所有元素的个数之和
损失函数的设计:
公式理解:
[x]+ 指的是 max (0 , x)
γ 指的是损失函数中的间隔,γ > 0,这个参数按论文,写的模糊,看其他博客,各有各的理解法,我写下自己的理解:
类似于Soft Margin SVM,下图摘自一篇博客的讲解,链接放在文首了,我把重点截图放下边:
首先,我们可以观察哪个分类边界更好,如何去取舍某些样本点?
我对 γ 的理解: 最终使得最相近的正负样本三元组的样本距离最大化
容错机制
要求 h + r ≈ t 其实是一种理想状态,比如学校对学生的成绩期望是80分以上,难免有能力强的学生,失误没达到标准,我们认为这种机制太严格了,于是设定60分为合格,容错区间长度达到20,这没话说了,即使你考试失误,能失误到20分,把你挂科也不亏(比如你有90分的专业水平,我们放宽给了20分的允许失误的范围(容错范围),60-80就算过,可是你却考出了50分的水平,把你分为差生,你也别怪谁,这个机制已经很宽容了。比如你有50分的专业水平,但你考到70分,你在60这个及格边界构建的容错范围内,恭喜你,不把你当差生看待)。这样区分课程考核是否合格的机制较为人性化,也具有普适性。
主观理解,不严谨的地方,恳请评论区指正…
Soft Margin SVM要表达的意思,即使有些样本现实中明明是A类,但在B类的容错范围内,为了整体模型的泛化性能,仍然将其划分为B类
这种设计具有合理性,比如,人们见到金典两字时会想到它是牛奶的品牌,可是确实有小伙伴的名字叫金典,当你认识到这个事实时,是否会加大它在你脑海中的印象,下次见到金典两字时,也理直气壮的说金典是人的名字?当然不会,我们会自动忽略这样的小概率事件,再次见到金典两字时,依旧认为金典是牛奶品牌。当然你会更理性,说金典也有概率是人的名字,可对于机器而言,它没有感性认识,只有理性的错觉,当下,大数据等技术为人工智能发展提供了丰富的数据资源,协助训练出更加智能化的算法模型,大量的算法都是基于概率的,训练集中存在“金典是人名”这样的现实世界中真实存在的数据时(当然很少),机器在大数据中学习到的模型在真正遇到金典本人时依然大概率判断错误,不仅如此,在遇到金典牛奶品牌时,有极小概率也判断错误,这脱离了或超出了机器本身是机器的界限…我们只能尽可能完善判别机制,而不可能达到完全的准确,正如没有绝对的100%,因此我们不为难机器了,我们设定容错范围来解决这个问题,对训练集中关于“金典(真实 label:人名)”的数据,如果这条数据在“金典(真实 label:牛奶品牌)”的分类边界构建的容错范围内,认为“金典是牛奶品牌”,【对训练集中关于“金典(真实 label:牛奶品牌)①”的数据,如果这条数据在“金典(真实 label:牛奶品牌) ②”的分类边界构建的容错范围内,认为“金典是牛奶品牌 ①”, 说明:① 虽然在整体数据分布的最外侧,但不构成分类边界,分类边界 ② 是经过多次训练得到的最佳支持向量所在直线,可以和异类进行最大的间隔划分】,这样,模型具有普适性(更好的泛化性能和判断精度),为此需要进行模型参数的调整…
个人认为 γ 是一种容错机制,下边我结合课程考核成绩与绩点的对应关系来介绍:
与之类似,来理解本论文中 γ 的含义
比如原三元组的 d ( h + r,t ), 经正则化后为85分,关系 r 代表绩点3.7以上
① 替换头实体或尾实体向量后的d ( h’ + r,t’ ),经正则化后为95分,那么此三元组是否具备关系r呢
两式差值为-10,γ 的设置在(1,10)区间,不用太多修正,最后三个式子加起来为负数, max (负数 , x)作用后为0,即损失 L 为0
这说明很容易判定你是绩点为3.7以上的学生,模型一般不会出错
② 替换头实体或尾实体向量后的d ( h’ + r,t’ ),经正则化后为87分,那么此三元组是否具备关系 r 呢
两式差值为-2,85是个界,这已经说明被分类的三元组在临界区域中了
γ 具体设置,按照我的理解:
TransE 通过不断训练、算法的优化,可以使损失函数 L 达到最小值
数据集:WordNet 和 FreeBase
评估:
1.在测试集中,不断从实体向量集中【原知识图谱中正确的三元组】替换头实体向量,我们可以通过损失函数的大小来判断新构建的三元组关系成立的可能性,给替换后的三元组的打分并升序排列,并保存可使得三元组关系成立的实体的得分。替换尾实体向量也是这个原理。
2.预测得分的平均值和和排在前10位的三元组中,关系成立的三元组的占比。
3.移除所有的训练集和验证集或者测试集中不成立的三元组,保证它们不属于数据集。
这相当于对头实体向量和尾实体向量做了预测,实验结果如图所示:
Baselines就不多介绍了,因为TransE的提出已有近十年的时间,之前的知识表示模型更早,研究价值相对较小
如果有兴趣了解,可以点击进入论文或了解TransE之前的研究现状
按照元组中关系的类型,将测试集的按结果分类更细,或者将关系细化(都可以,怎么说都行),作者展示了结果:
我针对尾实体预测中的1-TO-M,按自己理解写了一个例子:
作者给出的例子:
在划分好的测试集中验证泛化性能,左边是输入头实体和关系向量【来自于知识图谱中对应的向量或矩阵表示】,右侧的尾实体向量是在训练集中按照排名规则,最有可能是真实的一些尾实体(Top 10)。加粗的尾实体是测试集中与头实体和关系向量真正对应或者真实的尾实体,由此可验证模型的质量如何。
在少量样本中,给定头实体向量和关系,预测尾实体向量,左图表示测试集的平均排名情况(Loss),右图表示测试集Hits@top10中正确的比例(Accuracy)。可以发现当训练集越大,测试集中 TransE 的平均排名(或者说预测的平均损失值)下降的最快,右图表明,TransE模型的学习速度很快,在只有10个新关系的例子中,hits@10已经是达到约 18%,并且随着训练集中提供的样本数量的增加,效果改善明显。
TransE 的实验设置:
不多介绍了,这里直接看论文直观,实验中可以灵活调整:
再来看整个算法,就相对清晰多了:
① 解决多关系数据的处理问题,是一种简单高效的 KG 表示学习方法
② 能够完成多种关系的链接预测任务,能够自动且很好地捕捉推理特征
③ 适合在大规模复杂的 KG 上推广,是一种有效的 KG 推理手段
表达能力不足,不能够有效充分的捕捉实体对间语义关系,无法有效处理一对多、多对一、多对多的关系以及自反关系。
处理图像信息效果差、负样本三元组的质量低、嵌入模型不能快速收敛、泛化能力差、边缘识别能力…
TransE是知识图谱的向量化表示的基础,衍生出来了很多变体:
1、TransH,AAAI2014,Knowledge graph embedding by translating on hyperplanes
2、TransD,ACL2015,Knowledge graph embedding via dynamic mapping matrix
3、TransA,arXiv2015,An adaptive approach for knowledge graph embedding
4、TransG,arxiv2015,A Generative Mixture Model for Knowledge Graph Embedding)
5、KG2E,CIKM2015,Learning to represent knowledge graphs with gaussian embedding
6、TranSparse,AAAI2016,Knowledge graph completion with adaptive sparse transfer matrix
写到这里吧…
自我批评:
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。