[译]机器学习代码完整性检查清单

  • 2020 年 12 月 17 日
  • AI

动机

去年,Joelle Pineau 发布了可重复性清单,以促进在主要机器学习领域会议(NeurIPS,ICML等)上进行可重复性的研究。 清单上的大多数要素都集中在论文的组成结构上。

该清单上的一项是“提供论文源代码的链接”,但除此之外,几乎没有给出任何指导。 我们在 Papers with Code 网站中收集到了最多的论文实现代码,因此我们整理了最受欢迎的研究论文代码中使用的最佳做法。

我们将这些最佳做法总结为 机器学习代码完整性检查清单,现在它已成为 NeurIPS 2020 代码正式提交过程的一部分,可供审阅者酌情使用。

机器学习代码完整性检查清单

为了增强可重复性,并使其他人更容易地基于已发布的项目开展工作,我们引入了机器学习代码完整性检查清单。

检查清单根据其中提供的代码、模型和数据集来评估代码仓库。它检查项目代码仓库是否包含以下内容:

  • 1.依赖说明-代码库是否具有有关依赖关系的信息或有关如何设置项目环境的说明?
  • 2.训练代码-代码库中是否包含训练或调整论文所述模型的方法?
  • 3.评估代码-代码库中是否包含用于评估已训练模型的性能,以及在模型上进行实验的代码?
  • 4.预训练模型-代码库是否提供对预训练模型权重的免费访问权?
  • 5.结果展示-代码库中是否包含展示主要结果的表或图,以及用于复现这些结果的代码?

每个代码库可以得到从0(完全不满足)到5(全部满足)的评分。关于清单各个要素的更多详细信息,请参见我们的 Github项目

有什么证据表明检查清单有利于帮助代码仓库更受欢迎?

社区通常使用 GitHub stars 这一指标作为评判代码仓库受欢迎程度的依据。 因此,我们假设,在机器学习代码完整性检查清单中得分较高的代码仓库也应该倾向于拥有更多的 GitHub stars。

为了验证这一假设,我们选择了 884 个 GitHub 代码仓库(这些仓库被提交给 NeurIPS 2019,作为论文代码的官方实现)。 我们从这884个代码仓库中随机选择了 25% 的子集,并根据机器学习代码完整性检查清单上对它们进行了手动评分。

我们根据机器学习代码完整性检查清单上的得分数(满足某一要素则得1分),对上述 NeurIPS 2019 会议的 GitHub 代码仓库样本进行了分组,并绘制了每个组中的 GitHub stars 中位数。 结果如下:

得分为 0 的 NeurIPS 2019 代码仓库获得 GitHub stars 个数的中位数为1.5。 相比之下,得分为 5 的代码仓库的中位数为196.5 星。 只有9%的代码仓库获得5分,大多数(七成)代码仓库仅获 3 分及更低的分数。

我们还对结果进行了 Wilcoxon秩和检验,发现除5分对4分(p值是临界值0.015)的情形以外,5分代码仓库的 GitHub stars 个数比其他所有等级都高(p.value <1e-4)。 您可以在我们的 Github 代码仓库 中看到此图背后的数据和代码。

为了检查这种关系是否具有普适性,我们创建了一个脚本来自动执行对于论文代码仓库的 用前须知.md 及其关联代码的完整性检查。然后,我们对 884个NeurIPS 2019会议 代码仓库,以及在2019年发布的所有机器学习论文的更广泛的 8926 个代码仓库进行了再一次分析。在两种情况下,我们都得到了相同的定性的结果, GitHub stars 个数跟随完整性得分显著性单调增加(p.value <1e-4)。最后,使用稳健线性回归算法进行拟合,我们发现“预训练模型”和“结果展示”这两个因素对于 GitHub stars 个数具有最大的正面影响。

因此,我们认为可以有力的证明,完整性得分较高的论文代码仓库能获得更多的好评,进一步的,我们鼓励研究人员创作符合完整性检查清单规定的代码仓库,这将有助于其他研究者复现论文的研究,且能收获更多关注和好评。
目前,我们还不能说清单中的5个要素是导致代码仓库影响欢迎程度的唯一因素,甚至最大因素。其他因素也可能会影响受欢迎程度,例如:科学贡献的规模,市场营销(例如博客文章和 Twitter ),文档(综合“用前须知,教程和 API 文档”等方面),代码质量和以前的工作。
一些得分为 5 的 NeurIPS 2019 代码仓库如下所示:

我们承认,虽然我们旨在使清单尽可能通用,但它可能并不完全适用于所有类型的论文,例如理论或数据集论文。 但是,即使论文的主要目标是介绍数据集,它仍然从发布基线模型,训练代码,评估代码和结果展示的工作中受益。

开始使用吧

为了使评审者和用户更容易理解代码仓库中包含的内容,并为我们能够正确打分,我们提供了围绕 用前须知.md文件 编写的模板,它集合了依赖说明,发布预训练模型,数据集和结果展示的最佳实践工作。

我们的建议是,在您的代码仓库中清楚地列出这5个要素,并链接到任何相关的外部资源,例如论文和排行榜,以此为您的用户提供更清晰的研究背景和说明。

现在这项工作已成为 NeurIPS 2020会议 的官方代码提交建议。

单击此处查看 用前须知.md 模板,并开始使用吧。

让我们共同努力,提高我们领域的可重复性,并帮助推动科学发展吧!

编译: @白小鱼

来源:[转]ML Code Completeness Checklist / medium 原文地址