前两天有朋友转给我这个问题下一个回答,只有一句话,说我们论文都无法复现。刚看了下这回答已经不在了,但还想借这个问题回应下。论文复现不出来可能原因有很多,而在我则一直努力带领同学们坚持开源论文算法代码,正是希望为同行复现提供便利。正好今天写了几条关于论文代码开源和可复现的想法,整理发在这里,分享下我们在这方面的努力和感受。
最近知乎上有很多AI论文可复现的讨论。我读博时就有深切体会,如果作者没有提供源码,复现前人工作是非常漫长而痛苦的历程。当时还不过是复现TextRank这种特别简单的算法,仍然有很多因素导致复现原文效果困难重重。而从发展角度看,近年来AI论文井喷固然出现很多无法复现的论文,不过与我读博的2010年以前相比,我感觉提供源码论文比例显著增加,相关机器学习平台也更加完善,复现前人工作的难度大大降低。
我做老师以来,对于组里的署名论文一直坚持在 https://github.com/thunlp 下开源。刚数了一下,这几年下来,我们组同学们已经发布了115个项目,既有OpenKE、OpenNE、OpenNRE、OpenMatch、OpenAttack、THULAC等比较精心设计的成体系的工具包,也有KRLPapers、NRLPapers、NREPapers、GNNPapers等论文列表,更多的还是发表论文的源码。可以比较自豪地说,在所有同学的努力下,我们组绝大部分论文都在此提供了源码,一般会在论文摘要的最后一句注明地址,帮助关注我们研究工作的同行更容易地进行复现或扩展。而从我们开放源码和工具的结果来看,提供论文源码能够显著增加论文的关注度和被引数,这应该也是AI界的共识。所以,纵然现在仍然有很多不如人意的地方,我们处在科研的最好时代,还是希望更多同学用积极的态度来一起推动我们领域向前进。
我们开源的代码已经得到很多人的使用和关注,累计有3.6万星标,近9千fork,让我们备受鼓舞。同时,仍有很多不尽如人意的地方,总结起来有以下几个方面:
总之,我们的论文代码开源的实践感受是,开源是很好的学术交流互相促进的方式,有业内同行帮你找bug改进改错,何乐而不为,我们就在此中受益匪浅,在此感谢、感恩所有在github上通过邮件为我们提出issues的朋友们!
其实,我们对相关任务和算法特性的认识本身也是不断改进的。拿我们2015年发表的知识表示学习方法TransR举例,当时我们在FB15K等数据集上的确发现TransR能够更好地处理复杂关系。后来,就有学者发现FB15K数据集其实本身存在某些瑕疵,而我们后来实验发现当向量维数增大,TransE就能够持续有更好的表现。这些都体现在我们不断推出的新版知识表示学习工具包KB2E、TransX以及最新的OpenKE中,大家也在算法改进中不断提升模型的效果。用这个例子是想说,开源是很好的基石,帮助AI研究社区更高效发现问题和前进。这个过程中,如果有谁出了错,建议不必诛心不要苛责,我总觉得,没有人会愿意把明知有错的东西拿出来分享。过度责备的氛围,可能反而影响开源论文代码的热情。
最后想说,如果各位朋友在使用我组代码遇到任何问题,首选方式是在github相应repo下发issue提出,负责同学绝大部分情况下会及时回复。如果长时间没有得到响应,请发邮件给我 liuzy@tsinghua.edu.cn ,我一般会比较及时对接到相关同学,一起提供解答和支持。欢迎大家批评指正!