⾃然语⾔处理(NLP )-知识图谱:知识表⽰学习(知识图嵌⼊)---->知识推理
【Trans 。。。
⼀、知识表⽰学习简介
表⽰学习⼜称表征学习( Reprentation learning) , 主要是利⽤机器学习技术⾃动获取每个实体或者关系的向量化表达, 旨在将描述对象表⽰为低维稠密向量( 即分布式向量) 。
分布式表⽰的对象均被表⽰成⼀个低维的稠密、实值向量, 利⽤对象在空间的相对距离, 反映它们之间的语义关系。两个对象离得越近,说明关系越紧密, 两个对象离得越远, 说明它们之间没有太强的关系。
将表⽰学习应⽤于知识表⽰中称之为知识表⽰学习或知识图嵌⼊。
知识表⽰学习是将知识库中的实体和关系嵌⼊到连续的向量空间中, 以便简化操作, 同时保持知识图谱的结构。从形式上知识表⽰学习主要可以分成两类:⼀种是基于结构的表⽰学习⽅法, 主要是从三元组的结构出发学习知识图谱中实体和关系的表⽰;
⼀种是基于语义的表⽰学习⽅法, 通过考虑⽂本语义来学习实体和关系的表⽰;
从发展来看, ⽬前知识表⽰学习的研究进程主要可以分成两个阶段, 以 2013 年 Borders 等⼈受Mikolov 发现的词向量空间中存在的平移不变性这⼀有趣现象的启发, 从⽽提出的 TransE 模型为分割。在 TransE 之前主要包括结构表⽰、能量模型、矩阵分解模型等。
谁和谁好在 TransE 之后, ⼈们陆续提出了在其基础上加以改进的新Trans系列模型以及ConvE、ConvKB 和添加卷积的新模型优势:⽣成知识表达时能够充分利⽤知识图谱已有的结构化信息
缺点:建模⽅法着眼于实体间的直接关联关系,难以引⼊并利⽤⼈类的先验知识实现逻辑推理
⼆、“知识表⽰学习”经典⽅法:TransE
1、TransE 简介
TransE 是知识表⽰翻译模型中⾮常经典的⽅法,Trans 系列⽅法是在 TransE 的基础上扩展的。 在 TransE 中,实体和关系被映射到向量空间,实体和关系的表⽰变成了向量之间的表⽰。 TransE 的主要思想是将三元组 中的关系等价于从头实体向量到尾实体向量的操作过程,这种操作过程称为翻译。
在这⾥插⼊图⽚描述
同时,TransE 还对三元组 中的实体和关系映射到向量空间作了⼀些假设,如上图 所⽰。 假设每⼀个三元组 都能表⽰为 ,其中: 是指头实体的向量表⽰; 是指关系的向量表⽰; 是指尾实体的向量表⽰;其表⽰的含义是:在向量空间中,头实体向量 加上关系 应该等于尾实体向量 。 如果在向量空间上述关系成⽴,就说明三元组在 KG 中是成⽴的。
2、TransE 模型的训练
TransE 在训练中根据三元组已经定义好的关系, 将实体和关系训练成分布式向量表⽰。作为给定的训练样本, 头实体的向量加上关系向量最接近尾实体向量:根据这种假设,TransE 模型的训练需要满⾜以下条件:
(h ,r ,t )(h ,r ,t )(h ,r ,t )(,,)h r t h r t h r t (h ,r ,t )(+h )=r t
风吹来的沙
1. 对正样本三元组:;
2. 对负样本三元组:;
其中, 与 的关系表⽰近似等价于向量相似度。 对于向量相似度,TransE 采⽤的⽅法是计算欧⽒距离,得分函数为:
在这⾥插⼊图⽚描述
得分函数值越⼩,对正样本三元组越有利;
得分函数值越⼤,对负样本三元组越有利。
接着,TransE 通过损失函数测试表⽰学习的效果,设计的损失函数为:
在这⾥插⼊图⽚描述
其中:
指的是三元组 正样本集合;
指的是三元组 的负样本集合。
KG 中三元组 的负样本是通过随机替换头实体 或者尾实体 进⾏⼤量训练得到的。
指的是 ;
指的是损失函数中的间隔,这个参数需要满⾜⼤于零的条件;在向量空间中, TransE 经过训练,不断调整 、 和 , 使 尽可能等于 , 最后使得损失函数 达到最⼩值:
在这⾥插⼊图⽚描述
3、TransE 的局限性
TransE 的提出是为了解决多关系数据的处理问题,是⼀种简单、⾼效的 KG 表⽰学习⽅法,并且能够完成多种关系的链接预测任务。TransE 的简单⾼效说明了 KG 表⽰学习⽅法能够⾃动且很好地捕捉推理特征,⽆须⼈⼯设计,很适合在⼤规模复杂的 KG 上推⼴,是⼀种有效的 KG 推理⼿段。
虎年新年贺词
TransE的局限性:
尽管有效,TransE 依然存在着表达能⼒不⾜的问题,按照关系头尾实体个数⽐例划分,KG 中的关系可以分为⼀对⼀、⼀对多、多对⼀、多对多的四种关系。但是 TransE ⽆法有效处理⼀对多、多对⼀、多对多的关系以及⾃反关系。
TransE 通过最⼩化所有关系路径共享的余量损失函数来确定实体、关系和多步关系路径,此设置⽆法考虑不同关系路径之间的差异。TransE模型还存在处理图像信息效果差、负例三元组的质量低、嵌⼊模型不能快速收敛、泛化能⼒差、边缘识别能⼒差等问题
4、TransE 的优化⽅案
TransE 主要⽤来学习实体之间存在 1-1 关系的数据, 在描述⼀对多和多对多关系时具有⼀定的局限性, 例如⼀个头实体能够同时映射到两个尾实体上的情况难以准确描述。为了解决 TransE 在处理复
杂关系上存在的不⾜, 研究者在此基础上开发出许多扩展模型, 如⽤以解决 1-N 和 M-N 关系数据的 TransH, 解决跨空间的 M-N 关系数据的 TransR, 区别如下图所⽰:
在这⾥插⼊图⽚描述
5、TransE 的常⽤数据集
为了科学、⼀致地评价各类基于 TransE 的表⽰学习⽅法的性能, 需要使⽤标准 的 实 体 关 系 数 据 集 进 ⾏ 测 试 和 对⽐。 ⽬前,常⽤的实体关系数据集如下表所⽰:
(+h )≈r t (+h )=r t (+h )r t S (h ,r ,t )S h ,r ,t ′
(h ,r ,t )(h ,r ,t )h t [x ]+max (0,x )γh r t (+h )r t L
1. WN18,是 WordNet 知识库的⼀个⼦集,有关系 18 个,实体40943个;
2. FB15K,是 FreeBa 中⼀个相对稠密的⼦集,有关系 1345 个,实体 14951 个;周计划家长配合的工作
3. WN11,是 WordNet 知识库的⼀个⼦集,有关系 11 个,实体 38696 个;
4. FB13,是 FreeBa 中⼀个相对稠密的⼦集,有关系 13 个,实体 75043 个;
5. FB40K,是 FreeBa 中⼀个相对稠密的⼦集,有关系 1336 个,实体39528个;
6. MPBC_20, 有 关 系 20 个, 实 体 175624 个;
7. FB15K-237,是 FreeBa 中⼀个⼦集,有关系 237 个,实体14541个。
在这⾥插⼊图⽚描述
胜字开头的成语
6、基于 TransE 表⽰学习算法的评价指标量化表⽰学习的指标分为:正确实体的平均排名(衡量链接预测的效果)正确实体排在前10名的概率(衡量链接预测的效果)准确率的评价指标(衡量三元组分类的效果)
运⾏时间。 运⾏时间 主要⽐较不同⽅法的效率,此值越⼩越好
其中,正确实体的平均排名的评价指标、正确实体排在前10 名的概率评价指标主要是衡量链接预测的效果,准确率的评价指标主要衡量三元组分类的效果。正确实体的平均排名。 正确实体的平均排序得分简称MeanRank,此值越⼩越好,这是衡量链接预测的重要指标。
正确实体排在前 10 名的概率。 正确实体排在前 10 名的概率简称 Hits@10,此值越⼤越好,这是衡量链接预测的重
要指标。准确率。 三元组分类任务使⽤准确率作为评价指标,计算⽅法为
在这⾥插⼊图⽚描述其中: 表⽰预测正确的正例三元组个数; 表⽰预测正确的负例三元组个数;
和 分别表⽰训练集中的正例三元组和负例三元组的个数。
ACC 越⾼,表⽰模型在三元组分类这⼀任务上的效果越好
三、Trans
系列的各种表⽰学习算法的分析与⽐较在这⾥插⼊图⽚描述
在这⾥插⼊图⽚描述实验的参数设置为:
学习速率 ,
差距 ,
表⽰维度 ,
权重 ,
训练批次的⼤⼩ 四、TransE 案例
t T p T n N pos N neg α={0.002,0.005,0.01}γ={0.25,0.5,1,2}κ={50,75,100}η={0.05,0.0625,0.25,1.0}B ={20,75,200,1200,4800}
transE知识图谱补全,FB15K-237数据集
transE.py训练程序
graph.py绘制损失函数折线
test.py验证测试集
1、⽬的
知识图谱补全是从已知的知识图谱中提取出三元组(h,r,t),为实体和关系进⾏建模,通过训练出的模型进⾏链接预测,以达成知识图谱补全的⽬标。
本⽂实验采⽤了FB15K-237数据集,分为训练集和测试集。利⽤训练集进⾏transE建模,通过训练为
每个实体和关系建⽴起向量映射,并在测试集中计算MeanRank和Hit10指标进⾏结果检验。
刘丁2、数据集
使⽤FB15K-237数据集,分为以下四个⽂件:
<(实体和id对)
<(关系和id对)
<(训练集三元组(实体,实体,关系))
<(测试集三元组(实体,实体,关系))
3、TransE模型构建
3.1 原理
TransE将起始实体,关系,指向实体映射成同⼀空间的向量,如果(head,relation,tail)存在,那么h+r≈t
⽬标函数为:
3.2 算法
六时吉祥3.2.1 初始化
根据维度,为每个实体和关系初始化向量,并归⼀化
def emb_initialize(lf):
relation_dict ={}
entity_dict ={}
for relation lation:
r_emb_temp = np.random.uniform(-6/ math.bedding_dim),
6/ math.bedding_dim),
relation_dict[relation]= r_emb_temp / (r_emb_temp,ord=2)
for entity ity:
咳嗽可以吃什么
e_emb_temp = np.random.uniform(-6/ math.bedding_dim),
6/ math.bedding_dim),
entity_dict[entity]= e_emb_temp / (e_emb_temp,ord=2)
3.2.2 选取batch
设置 nbatches 为batch数⽬,batch_size = iple_list) // nbatches
从训练集中随机选择batch_size个三元组,并随机构成⼀个错误的三元组S’,进⾏更新