1. 背景:

    最初是在看论文的过程中,发现不同论文使用相同方法在相同数据集的相同评估指标竟然不一样,一开始觉得还在想是不是实验数据造假呢,后面无意在知乎上看到一篇博文(参考资料[2])解答了我心中的困惑,也算是自己从一开始进入这个方向后,逐步学习成长的过程,很多理解也加深了。

2.问题引入:

    首先先介绍一下知识图谱外推任务的评估指标,常用的评估指标有MRR、Hit@1、Hit@3、Hit@5、Hit@10,MRR是外推默认预测正确实体排名的倒数和的均值,MRR的值范围在0-1之间,越接近1说明模型的外推性能越好,Hit@1\3\5\10是指模型的命中率,例如Hit@3,如果预测的正确实体位于top3的位置,则说明预测正确,反之,则预测错误,Hit指标的范围也是0-1之间,越高则说明预测的效果越好。
    介绍完知识图谱外推任务后,我们来讲讲为什么采用过滤策略?不采用过滤策略会怎样?不采用过滤策略,则直接用模型的原始输出结果,来计算评估指标,不做任何其他处理,也就是Raw Metric度量,但是,后面有研究人员发现不合理,因为对待同一个查询(s,r,?),假如存在(s,r,A) 和 (s,r,B)两个事实存在,对于该查询,假如该数据样本的正确标签是(s,r,A),那么预测出来的B,我们也不能说是错误预测,因为(s,r,B)也是正确预测的,但是由于B的存在,会影响最终模型评估指标的计算,从而影响我们合理的估计模型的外推能力,因此静态过滤策略在计算性能指标的时候,会将除了待预测实体之外的其他存在正确实体给移除。(Static filter: To avoid counting higher ranks from other valid predictions as errors and thus having flaws in the metrics, Bordes et al. [19] propose to remove all triples (except the triple of interest) that appear in the train, valid, and test set from the list of corrupted triples.)
    随着时态知识图谱外推任务的发展,越来越多的文章在该领域做工作。但是评估指标五花八门,也就造成了同样模型在相同数据集上结果在不同论文上却不一样,这也就为该领域发展造成了困扰,无法对比模型指标,评估模型的能力。
    这样做也有一个好处,可以防止模型记住事实,从而真正去评估模型对事实的推理补全能力。

3. 时间过滤策略是如何计算的?为什么更合理?

    研究人员发现直接将在时态知识图谱上应用外推任务是不合理的,因为他直接将候选排名中的其他“正确”预测事实(只考虑事实本身,不考虑时间属性)进行排除,忽略了时间事实的有效性,就比如如果查询是(Barack Obama, visit, India, 2015-01-25),假设训练集中存在(Barack Obama, visit, Germany, 2013-01-18),那么将这一事实过滤就是不合理的,为什么呢?因为2015-01-25这个时间点Barack Obama, visit, Germany就是一个错误的事实,因此我们不应该将这样的事实进行过滤,在**时间过滤策略(time filter metric)**中,过滤需要将时间戳也和查询事实的时间戳一致才会进行过滤。

    细细一想是不是采用时间过滤策略就相当于不用进行处理了,因为验证集和测试集的时间是大于训练集的时间的,总不可能同一时间点,发生一模一样的事情吧,如果存在的话,那也说明在知识图谱构建过程中有问题,存在信息冗余。

4. 常规时间过滤策略应该如何处理?

    在实际的评估中,应该采用的过滤策略是怎样的?仔细分析,什么样的实体是我们应该从候选实体列表中进行过滤的呢?假设第四天我同时找了A和B玩,知识图谱中肯定同时包含这两个四元组(我,一起玩,A,第四天),(我,一起玩,B,第四天),那对这两个三元组的预测都是针对查询(我,一起玩,?,第四天)的预测,但是答案分别时A和B。这样就可能出现一种情况,我在预测答案为A的四元组时B的分数更高,当然这在实际看来也是正确的,但是与答案A不匹配会被模型认为是错误的,所以我们需要采取过滤方式来避免这样的情况发生。因此我们对多个正确答案中的非目标答案进行过滤,这才是正确的在时间知识图谱推理补全任务中,应该采用的时间过滤策略。(Time-aware filter: Han et al. [20] note that the static filter setting is inappropriate for temporal link prediction because it filters out all triples that have ever appeared from the list of corrupted triples,ignoring the time validity of facts. As a consequence, it does not consider predictions of such triplesas erroneous. For example, if there is a test query (Barack Obama, visit, India, 2015-01-25) and if the train set contains (Barack Obama, visit, Germany, 2013-01-18), the triple (Barack Obama, visit,Germany) is filtered out for the test query according to the static filter setting, even though it is not true for 2015-01-25 [2]. For this reason numerous works [2, 11, 8, 3, 9, 10] apply the time-awarefilter setting which only filters out quadruples with the same timestamp as the test query. In the above example, (Barack Obama, visit, Germany, t) would only be filtered out for the given test query, if it had the timestamp t = 2015-01-25, and otherwise stay in the list of corrupted triples.)

参考资料

(1)参考论文:

时态知识图谱过滤策略论文

(2)参考知乎博文:

时态知识图谱过滤方法