thunlp / KB2E

Knowledge Graph Embeddings including TransE, TransH, TransR and PTransE
MIT License
1.4k stars 450 forks source link

transE参数设置问题 #31

Closed shanry closed 6 years ago

shanry commented 7 years ago

你好,TranE代码似乎并没有预设为最优的参数,直接跑的结果和transE论文有所差距,但是按照原论文Translating Embeddings for Modeling Multi-relational Data (2013) 中的参数来跑,结果竟然差得离谱,想请教一下参数如何设定才能跑出原论文以及TransR论文中的结果。以下是我再WN18上直接运行代码的结果; 18 40943 left:439.644 0.8028 425.411 0.9308 right:468.461 0.8108 455.947 0.9314 以及调整到原论文参数(method=unif,k=20,learning rate=0.01,margin=2)后的结果(这个显然不对): 18 40943 left:1351.67 0.1482 1340.44 0.1648 right:1475.97 0.142 1466.25 0.1548

dajunxiao commented 7 years ago

我也在看TransE和PTransE,你有跑FB15k的数据吗?

shanry commented 7 years ago

跑过了~ sharey@ubuntu:~/Downloads/KB2E-master/TransE$ ./Test_TransE bern 1345 14951 left:306.969 0.476224 187.107 0.680418 right:167.698 0.555399 90.9825 0.748591

dajunxiao commented 7 years ago

我跑的FB15k跟你的结果差不多,你有跑过PTransE里面的add吗?

shanry commented 7 years ago

还没。关键是 transE的结果都和论文有出入啊。

zhangyi85 commented 7 years ago

的确,按照林博士说的,transE在wn调整了margin为4,效果会好些,但是还是达不到readme里面的结果。 而且维度调到50,transE的测试程序会很多实体报错,程序里面看貌似是模大于1的缘故

shanry commented 7 years ago

所以论文的结果到底能不能复刻,如果不知道最优参数就无法进行对比分析啊

shanry commented 7 years ago

你跑过wn18的数据吗 @dajunxiao

dajunxiao commented 7 years ago

没有跑过,我主要是把这个跑通、看懂。在我们项目中需要用到知识图谱的表示,然后用于做其他任务。 @shanry

shanry commented 7 years ago

好的,谢谢回复 @dajunxiao

Mrlyk423 commented 7 years ago

WN18的参数可以设置为margin=4.5, 不过个人更建议设置为1使得hits更大,mean rank受少数几个测试点影响较大,个人感觉参考意义没有hits大

Mrlyk423 commented 7 years ago

在WN18的参数为margin上升使得hits下降 mean rank变好

shanry commented 7 years ago

fb15k的结果也差得不少,为什么按照原论文给的参数都跑不出来,请问一下readme里面的结果是如何得到的呢?

Mrlyk423 commented 7 years ago

FB15k你的参数设置是?跑出的结果是?

shanry commented 7 years ago

直接跑的,结果在3楼

Mrlyk423 commented 7 years ago

结果基本一样吧 你跑的是bern的训练模式 hits会稍微高一些 mean rank会稍微低一些

Mrlyk423 commented 7 years ago

另外 参数设置请参考我TransR论文中进行设置 特别是learning rate需调为0.001

shanry commented 7 years ago

好的 ,我再跑一下 ,感谢你的回复

codeants2012 commented 7 years ago

Mean rank是算left right平均吗? 还是算左右比较取最优

shanry commented 7 years ago

平均

codeants2012 commented 7 years ago

TransG模型源码谁有

sunFlower-y commented 6 years ago

@shanry 你好,打扰了,请问你最后跑出来的结果和论文一样吗?

shanry commented 6 years ago

@sunFlower-y 不好意思,之前忘了回,meanrank可以差不多,但是参数和论文给的不太一样,fb15k需要把margin设置成4

angryBird2014 commented 6 years ago

@shanry 你在WN18和FB15K上的参数能具体说下?(alpha,dimension,margin)

shanry commented 6 years ago

现在记不太清了,fb15k就是按照楼上Mrlyk423所说的,margin 设为4, alpha应该往小调, 我最后也没跑出readme的结果,勉勉强强吧。

shanry commented 6 years ago

@angryBird2014 你使用openKE的代码跑吧,有一个exampletrain文件,在fb15k的运行结果: overall results: left 243.981003 0.384199 0.173486 0.000000 left(filter) 82.931961 0.580437 0.361328 0.000000 right 162.132660 0.462444 0.226016 0.000000 right(filter) 60.069527 0.632510 0.409456 0.000000 第一个是meanrank,第二个是hit @ 10;

Xiaobenbenben commented 6 years ago

做自己的实验的时候,感觉TransE的模型对参数很敏感,效果能差很多

nxznm commented 5 years ago

In my experiment(implement TransE), my setting is embedding_dim=100; margin=4; score_func="L1"; batch_size=4800; learning_rate=0.001; max_epoch=900. Using FB15K dataset, I can achieve the results which the paper gives, I think margin=4 helps a lot, and I found as the epoch grows, the validation loss is going to be smooth, so I choose the embedding result in the 900th epoch.