这篇论文是去年看的论文,但是不太了解对比学习,导致看这篇论文感觉没啥特色(当时比较菜)。最近由于找工作相对了解一下对比学习相关内容,重新回顾了这篇论文,特此记录一下。
摘要
目前,比较流行的知识图谱补全模型,通常喜欢使用结构化的信息即(h,r,t)的这种形式进行知识图谱补全。但是这种方式其实可以使用的特征有限,增加额外信息-实体描述(或者叫文本信息,我习惯性交实体描述,差不多一个意思,不要纠结),可以提高模型的表达或者特征。目前在WN18RR数据集上评分最高的模型,就基于实体描述信息,为什么只提WN18RR,因为在FB15k-237上,效果不咋地,后面细说。
开始进入正题,讲一下论文SimKGC,这篇论文就是基于实体描述的知识图谱补全模型,这篇论文相比于之前的模型,在模型结构上并没有什么创新。主要创新点为一下三个方面:
- 结合三种负采样:in-batch、pre-batch Negatives、Self-Negatives
- 损失函数进行优化:采用对比损失函数InfoNCE
正文
模型结构
目前,利用文本描述,通常利用bert作为基础的模型,通常模型的输入为实体和关系的文本信息,将文本信息替换为三元组的实体和关系。如KG-bert:
但这这么做的时间复杂度较高,因为bert的时间复杂度是
O
(
n
2
)
O(n^2)
O(n2),一些论文如StAR则是拆开hrt为,hr 和t。如下图所示:
在这篇论文中SimKGC同样采用
e
h
r
e_{hr}
ehr=bert(h, r),
e
t
e_t
et=bert(t), 进行余弦相似度,计算得分。
优化目标为:
负采样
In-batch Negatives(IB)
本质上就是采用同一个Batch中的其他实体作为负样例
Pre-batch Negatives (PB)
因为IB和Batch size 大小有关,所以如何想要更大的负采样数量,要么采用其他方式,要么就是增大Batch size,但是增大batch size有的模型可能会影响模型性能,所以提出Pre-batch Negatives (PB)。它则是记录之前的1-2batch,根据需要,或许可以记录更多的batch的数据作为负样例。
Self-Negatives (SN)
除了增加负采样的数量,挖掘hard negatives对于提高对比表征学习也很重要。对于尾部实体预测(h, r, ?),基于文本的方法倾向于给头部实体h分配高分,这可能是由于高度的文本重叠。为了缓解这个问题,我们提出使用头部实体h作为hard negatives的自我否定,可以减少模型对虚假文本匹配的依赖即认为(h, r, h)是错误的。
采用以上三种方式作为负采样的结果,进行模型训练。
Re-ranking
知识图谱通常表现出空间局部性,距离较近的实体比距离较远的实体更有可能相互关联。基于文本的KGC方法擅长捕获语义相关性,但可能无法完全捕获这种归纳偏差。提出了一种简单的基于图的重新排序策略:基于训练集的图,如果候选尾实体
t
i
t_i
ti在头部实体h的k-hop邻居
E
k
(
h
)
\mathcal{E}_k(h)
Ek(h)中,则将候选尾实体ti的得分提高
α
\alpha
α≥0。公式如下:
损失函数
损失函数采用InfoNCE:
实验
数据集:
实验结果:
从整体上看负采样其实IB就可以了,对于常规的推理方式增加另外两种其实影响不大,但是对于wikidata5M-ind影响比较大。
结果分析
可以看出来大量负样例数量和InfoNCE是模型变好的关键。并且负样例数量多效果更好。其实损失函数变好的原因一定程度是超参数
τ
\tau
τ引起的。
但是应该是在一个范围内增多,我猜测或者根据常识超过一定阈值效果应该会变差。
进一步分析re-ranking 的影响,发现其实影响有限
结论
这篇文章主要的想法从实体描述方面,进行负采样角度和损失函数方面提出的一个模型,其实我理解可以看作一种策略的尝试。填一下坑,就是基于实体描述的方式补全知识图谱,通常在FB15k-237上的效果很差,我猜测因为FB15k-237的文本描述质量差或者与bert训练的语料不适配。有个论文基于大模型进行FB15k-237实体描述进行总结重要信息,Hits@10指标提升至56左右。