如何正确提交代码,才能保证研究的可重现性,扩大传播?近日,PapersWithCode发布了一份机器学习代码完整性自检清单。该清单目前是NeurIPS2020代码提交流程的一部分。可重复性长期以来一直是科学界关注的话题,最近人工智能和机器学习社区对它投入了更多关注。ICML、ICLR、NeurIPS等顶级学术会议都在推动提交实验代码和数据作为评审材料的一部分,并鼓励作者在评审或发表过程中提交代码,以帮助获得可重现的结果。加拿大麦吉尔大学副教授、Facebook蒙特利尔FAIR实验室负责人JoellePineau曾多次讨论该领域的可重复性问题,并于去年底发布了一份可重复性检查表。但这份列表中的大部分内容都与论文本身的构成有关,对开源代码的指导较少。近日,PaperswithCode联合创始人RobertStojnic发布了一份机器学习代码完整性自检清单,可能有助于社区部分解决这一问题。PaperswithCode网站收集了大量论文实施和最佳实践。该团队将这些最佳实践提炼成机器学习代码完整性自检清单。该清单现在是NeurIPS2020代码提交流程的一部分,将可供审阅者使用。Checklist项目地址:https://github.com/paperswithcode/releasing-research-code机器学习代码完整性检查表为了鼓励可复现性并帮助社区成员更容易地基于已发布的工作构建新项目,PaperswithTheCode团队发布了一份机器学习完整性自检清单。Checklist是基于脚本来评估代码库的完整性,主要包括五个项目:依赖训练脚本评估脚本预训练模型结果在分析了NeurIPS2019论文的官方repo后,团队发现代码完整性越高,项目的GitHub越高,获得的star越多。既然如此,那我们就赶紧看看这五项的具体内容,并加以落实吧。1.依赖如果你使用的语言是Python,那么在使用pip和virtualenv时,你需要提供requirements.txt文件;使用anaconda时,需要提供environment.yml文件;使用代码库时,需要提供setup.py。最好在README.md中解释如何安装依赖项。假设用户的背景知识很少,在编写README文件时尽量给出清晰完整的说明。因为如果用户无法设置依赖项,那么他们很有可能不会继续查看您的代码。如果想提供一个整体可重现的环境,可以考虑使用Docker,将环境的Docker镜像上传到Dockerhub。2.训练脚本代码应该包括用于实现论文结果的训练脚本,即你应该展示在获取结果的过程中使用的超参数和技巧。为了最大限度地提高效用,理想情况下,您应该在编写代码时考虑到一些扩展场景:如果用户想在他们自己的数据集上使用相同的训练脚本怎么办?您可以提供一个成熟的命令行包装器(例如train.py)作为用户的入口点。3.EvaluationScript模型评估和实验往往很详细,往往无法在论文中详细解释。这就是为什么提交用于评估模型或运行实验的确切代码有助于完整描述过程的原因。此外,它还可以帮助用户信任和理解您的研究。您可以提供一个完整的命令行包装器(例如eval.py)作为用户的入口点。4.预训练模型从头开始训练模型需要大量的时间和成本。提高结果可信度的有效方法是提供社区可以评估并获得最终结果的预训练模型。这意味着用户无需重新培训即可看到可信的结果。它对于下游任务的微调也很有用。发布预训练模型后,其他人可以将其应用于自己的数据集。最后,一些用户可能想要试验您的模型是否适用于某些示例数据。提供预训练模型可以让用户了解您的研究并对其进行实验以了解论文的结果。5.结果README文件应该包括结果和重现这些结果的脚本。结果表让用户快速了解回购的期望。README.md模板中的例子(模板地址:https://github.com/paperswithcode/releasing-research-code/blob/master/templates/README.md)可以复现指令的结果,为用户提供另一个切入点,这直接有助于重现性。在某些情况下,论文的主要结果只有一张图,对于没有读过论文的用户来说很难理解。您还可以放置指向包含其他论文最新结果的完整排行榜的链接,这可以帮助用户进一步了解您的发现。具有代码完整性的项目示例此外,该团队还有多个具有代码完整性的项目和其他资源来帮助提交代码。NeurIPS2019项目示例https://github.com/kakaobrain/fast-autoaugmenthttps://github.com/bknyaz/graph_attention_poolhttps://github.com/eth-sri/eranhttps://github.com/NVlabs/selfsupervised-denoisinghttps://github.com/facebookresearch/FixRes其他资源预训练模型文件托管平台:ZenodoGitHub发布GoogleDriveDropboxAWSS3模型文件管理工具:RClone标准化模型接口:PyTorchHubTensorflowHubHuggingFaceNLPmodels结果排行榜:PaperswithCode排行榜CodaLabNLPProgressEvalAIWeights&Biases-Benchmarks生产项目页面工具:GitHubpagesFastpages生产演示和教程工具:GoogleColabBinderStreamlit
