liuxiyang641 / RAGAT

RAGAT: Relation Aware Graph Attention Network for Knowledge Graph Completion
56 stars 16 forks source link

请问baseline为什么没有比RGHAT这篇呢 #5

Closed SsnAgo closed 2 years ago

SsnAgo commented 2 years ago

请问为什么没有比RGHAT这篇呢,在注意力方面,这篇似乎效果是最好的,并且是2020年AAAI的。但我最近看了几篇GAT的,似乎都没有比它,可以请问一下是为什么吗?

liuxiyang641 commented 2 years ago

你好,我在写论文的时候没有比较RGHAT主要原因是虽然我也采用了gat,但是我自己的实验环境下根本无法达到接近KBGAT或者RGHAT在fb15k-237上的效果,我自己得到的模糊直觉是gat带来的提升没有想象中那么大。RGHAT比起KBGAT原论文声明的效果来说,MRR提升了0.004,这个效果提升并不多。但是KBGAT的0.518的MRR是由于测试集泄露以及ConvKB的错误评估策略带来的提升,因此RGHAT到底是如何达到论文中的效果的,效果的提升是因为采用了论文中的HAT还是后面的消息聚合过程,评估过程是否正确这些都是我不能确定的。 当时我没有足够的时间复现RGHAT,我个人建议,如果想针对这篇论文做改进,要么找作者要到源代码,要么自己尝试复现。另外,顺便一提,最近的论文有EIGAT(Incorporating global information in local attention for knowledge representation learning),它的效果更好,但是它用了ConvKB作为解码器,因此EIGAT的效果我个人是不信任的。 上面的所有内容仅仅是我自己的思考,不是公开的意见,也不是要argue的内容。

SsnAgo commented 2 years ago

非常感谢您详细的回复!@liuxiyang641 最近读GAT的论文,我也与你有同样的模糊直觉,EIGAT我也有看,因为是最近的,所以在问题中没有提及。

liuxiyang641 commented 2 years ago

好的,我把issue关掉了。

jweihe commented 2 years ago

KBGAT的0.518的MRR是由于测试集泄露以及ConvKB的错误评估策略,这里能细说一下吗,因为最近我也在复现这篇文章

liuxiyang641 commented 2 years ago

你好, 详细的说明可以参考下这篇Paper《A Re-evaluation of Knowledge Graph Completion Methods》。 我简单说下个人的理解:

  1. 测试集泄露问题:在KBGAT代码里训练的时候,把测试集中的三元组也作为正确的三元组进行评估;可参见在create_batch.py文件中的代码self.valid_triples_dict = {j: i for i, j in enumerate(self.train_triples + self.validation_triples + self.test_triples)}
  2. ConvKB的错误评估策略:ConvKB会倾向于把很多的候选三元组和正确的三元组都计算为很小的值,实际上不能做很好的区分,但是由于ConvKB的评估时会首先把正确三元组插入到所有候选三元组的首位,然后再进行评估,所以最后计算出来的结果,正确三元组还是排序在靠前的位置,产生偏好的结果。
jweihe commented 2 years ago

了解了~感谢!