作者 | Edward Raff
编译 | Mr Bear
对于每一名研究者来说,复现论文是理解一篇论文的必经之路,然而也是最令人头疼的环节。什么样的论文可以被复现?什么样的论文无法被复现?这实际上也是一个科学问题。
在 NeurIPS 2019 上,元科学研究者 Edward Raff 对此进行了深入分析,揭开了论文可复现性的神秘面纱。
300 多年以来,同行评审一直是科学研究的必要环节。但是,即使在引入同行评审机制之前,复现性也是科学方法的重要组成部分。
公元 800 年,Jabir Ibn 展示了第一批可复现实验。在过去的几十年中,许多领域都出现了引起大家关注的不可复现实验结果。美国心理学会一直在努力解决作者无法提供实验数据的问题(https://psycnet.apa.org/doi/10.1037/0003-066X.61.7.726)。2011 年的一项研究发现,仅有 6% 的医学研究可以被完全复现。2016 年,一项针对来自多个学科的研究人员的调查发现,大多数研究人员未能复现他们之前的论文。
现在,在人工智能和机器学习领域,我们也听到了一些关于“可复现性危机”的警告。
我们不禁要问:这是真的吗?这似乎很难以置信,因为机器学习技术已经渗透到了所有智能设备中,并对影响着我们的日常生活。从告诉我们如何通过电子邮件表现得礼貌的实用小提示,到 Elon Musk 承诺明年面世的自动驾驶汽车,这一切都似乎在向我们证明:机器学习确实是可复现的。
最新的机器学习研究的可复现性如何?我们是否可以开始量化分析影响其可复现性的因素?这个问题促使我撰写了论文《A Step Toward Quantifying Independently Reproducible Machine Learning Research》(https://arxiv.org/abs/1909.06674),论文现已在 NeurIPS 2019 上发表。
本着「刨根问底」的原则,在过去的八年中,我尝试从头开始实现各种机器学习算法。最终,我完成了机器学习程序库「JSAT」(https://github.com/EdwardRaff/JSAT)。我对于可复现机器学习的研究也托管在了 Mendeley(https://www.mendeley.com/)和 Github 上的个人笔记和记录中。
有了这些数据,我情不自禁地开始量化分析并验证可复现性!不久之后,我认识到自己未来将从事「元科学」研究,旨在研究科学本身。
一、什么是可复现机器学习?
图中戴眼镜的人并没有直接遵循论文中的描述:https://abstrusegoose.com/588
在我们深入讨论之前,很有必要先定义什么是所谓的「可复现性」。
理想情况下,完全的可复现性意味着阅读一篇科学论文就应该能直接让你掌握完成以下 3 个步骤所需的所有信息:
1)设置相同的实验;
2)遵循相同的方法;
3)获得类似的实验结果。
如果我们可以完全基于论文中提供的信息从上面的步骤 (1)一直完成到步骤(3),我们就将这种性质成为「独立可复现性」。在本例中,因为我们可以独立得出相同的实验结果(完全独立于原始论文的工作),所以我们的实验结果是可复现的。
但是,正如上面漫画中的人物告诉我们的那样,直接遵循论文中的内容并不总是足以复现实验结果。如果我们不能仅仅利用论文中的信息(或者根据论文引用的之前的工作)从步骤(1)一直完成到步骤(3),我们将认为论文不是「独立可复现的」。
有些人可能会感到疑惑:为什么要将「可复现性」和「独立可复现性」区分开来?
几乎所有人工智能和机器学习领域的研究都是以计算机代码为基础的。我们并不需要昂贵的劳动密集型的化学合成,不需要等待细菌在培养皿中长成,也不需要麻烦的人体实验。我们仅仅只需要从作者那里获取代码,在相同的数据上运行这些代码, 并得到相同的实验结果!
如果你以前从没有阅读过研究人员的代码,那你会少损失很多脑细胞。
我们并不喜欢找论文作者要代码并使用它们,这不仅仅是因为害怕使用没有描述文档的研究级代码。
Chris Drummond 将使用作者的代码的方法描述为「可复用性」,并提出了一个非常鲜明的论点:即我们非常需要论文能够被复现,但这对于好的科学工作来说,这仍然是不够的。一篇论文应该是具体工作的科学升华,它代表了我们所学到的和现在所理解的东西,从而使新的实验结果得以出现。如果我们不能在没有作者代码的情况下复现论文的结果,这可能表明论文本身并没有成功地囊括重要的科学贡献。在这之后,我们才会考虑代码中可能存在的错误,或者代码和论文之间可能存在的不一致的地方。
去年 ICML 上发表的论文《Unreproducible Research is Reproducible》(http://proceedings.mlr.press/v97/bouthillier19a/bouthillier19a.pdf)指出,即使我们可以复现论文的实验结果,但如果我们稍微改变一下实验设置也可能会得到非常不同结果。
出于这些原因,我们不想考虑作者的代码,因为这可能带来偏见。我们希望专注于可复现性的问题,而不是陷入复现论文的泥潭。
二、影响机器学习论文可复现性的重要因素
有些特性与可复现性无关,但我发现这些特性却最有趣。
我回顾了到 2017 年为止,我试图实现的每一篇论文,并且基于两个准则对这些论文进行了筛选:(1)这种尝试实现论文的工作是否会因为看过发布的源代码而带有偏见;(2)与作者是否有私人关系。
对于每篇论文,我尽可能多地记录信息,以创建一套可以量化的特征。有一些特征是完全客观的(论文中有多少个作者),而另一些特征则非常主观(论文看起来是否令人惊讶?)这项分析的目的是获得尽可能多的信息,这些信息可能会影响论文的可复现性。
为了做到这一点,我需要尝试复现 255 篇论文,最终我成功复现了其中的 162 篇。每篇论文都被提炼成了一个由26 个特征组成的集合,然后我对其进行统计检验从而确定哪些特征是重要的。在上面的表格中,我列出了我认为最有趣的、最重要的实验结果,以及我最初的反应。
有些结果不足为奇。例如,作者的数量对于论文的可复现性不应该特别重要,它们之间没有显著的关系。
我们可以通过调整超参数来改变算法的表现,但是算法本身并不会学习超参数。必须由人类设置超参数的值(或者想出一个明智的办法来选择该值)。
我们发现,一篇论文是否详细描述了用到的超参数是非常重要的(我们更可以凭直觉想到原因)。如果你不向读者说明超参数的设置,读者必须自己猜测。这需要付出大量的工作、时间,并且很容易出错!因此,我们的一些研究成果已经证实了研究社区为了使论文更具有可复现性而在追求的理念。
而更重要的是,我们现在可以量化说明为什么这些是值得我们追求的。其它的发现也遵循基本的逻辑,比如可读性强的论文更容易被复现,这可能是由于它们更易于理解。
想更深入的探讨这一问题的读者可以阅读论文原文,并且论文中还有一些我认为非常有趣的附带的实验结果:要么是因为它们挑战了我们所「了解」的关于一篇好论文的设想,要么是它们产生了一些惊人的结论。所有这些结果都非常微妙,在本文中无法对它们进行详细解释。
而本文提出以下这些发现是为了激发大家对此进行更加深入的研究,并且回答存在的问题。
发现 1:论文每一页中的公式越少,论文的可复现性就越高。
数学对于审稿人来说就是「猫薄荷」!让他们不能自已!https://xkcd.com/982/
这似乎是因为最具可读性的论文使用的公式往往最少。我们经常看到论文出于各种各样的原因,列举出了许多的公式和导数。然而谨慎而合理地使用公式,似乎会让观点更易读。这主要是因为作者可以有选择性地使用数学进行更有效的交流。
这一结论与论文发表的激励机制有所冲突。我曾经不止一次地遇到审稿人要求我在论文中加入更多的数学论证,这也许是数学本身就能让论文更具有科学性或更客观。尽管令论文更规范似乎更好,但是它并不等同于可复现性。这是研究社区需要解决的文化问题。
发现 2:实证论文可能比面向理论的论文更容易复现
关于社区中哪些地方以及需要在多大程度上实现规范化,机器学习社区内存在大量的争论。现在遵循的指导思想是:作为一个社区,我们关注的重点应该是针对给定的对比基准,获得最好的实验结果。
然而,在对对比基准进行优化的过程中,我们会有失去对实际发生的事情以及这些方法为什么有效的理解的风险。通过理论分析和形式证明并不能严格解释术语所表达的所有内涵。
人们普遍认为详细的数学证明可以确保对给定的方法有更好的理解,但有趣的是,实际上更好的数学描述并不一定能让研究工作更容易被复现。需要指出的是,将理论和实证研究相结合的论文与仅仅包含实证研究的论文总体上的可复现率是相近的。从可复现性的角度来看,倾向于做实证研究是有益的,但也有可能由于产生了不正当的激励效果或意想不到的副作用,而阻碍研究的进展(https://openreview.net/pdf?id=rJWF0Fywf)。
发现 3:共享代码并不是灵丹妙药
我们的讨论已经涉及到了这样一个观点:通过作者发布的代码进行复现与独立复现并不是一回事。
我们能够区分出这种差别吗?我的研究表明,将代码开源充其量只是可复现性的一个较弱的指标。随着学术会议开始越来越鼓励将代码提交和代码检查作为评审过程的一部分,我相信弄清楚这一点是很关键的。
作为一个研究社区,我们需要了解我们这样做的目的是什么,我们实际上在完成什么工作。如果我们被强制要求提交代码以及向审稿人提供评价这些代码的指南,我们应该仔细思考和考虑上述二者的区别。
从其他人的反应来看,我发现上述研究结果尤为值得注意。当我在 NeurIPS 上展示论文时,现场许多人对此进行了评论。
其中一半的人认为发布代码与可复现性是相关的,另一半人则认为二者之间显然无关。这些旗帜鲜明的观点形成了强烈的对比,这也正是我之所以进行这项研究的最佳示例。在我们真正坐下来对这些观点进行评估时,我们其实并不知道谁对谁错。
发现 4:论文中有没有详细的伪代码对可复现性没有影响
步骤式伪代码,它非常简洁,但需要论文中其它部分的上下文对其进行解释。
标准伪代码:相对详细,基本上是自包含的,通常是数学符号
类似实际代码的伪代码:几乎都是自包含的,很容易转换为真实代码。
这项发现挑战了我之前对于构成一篇好论文的组成部分的设想,但当我对这个结论进行思考时,我发现这越来越有意义。
在论文中的某个地方,我们必须描述工作的过程。作为一名受过训练的计算机科学家,我总是偏爱所谓「伪代码」的描述方式。但是伪代码可以采用许多不同的形式。
我把论文分为四类:没有伪代码、有步骤式伪代码、有标准伪代码、有类似实际代码的伪代码。我汇总这四类中被广泛复现的具有代表性的论文,我这项研究中也使用了其中一部分论文。
当我看到「标准伪代码」和「类似实际代码的伪代码」具有大致相同的可复现率时,我震惊了。我惊讶地发现,没有一种伪代码有很好的效果。
然而,逻辑清晰、有说服力的写作对于交流工作流程还是很有效的。不那么有效的是所谓的「步骤式伪代码」,这种伪代码列举出了一些步骤的条目,每一个步骤都与论文中的另一节有关,然而这种步骤式伪代码实际上会让读者对论文的阅读理解更加困难,因为读者必须在不同的章节之间来来回回地切换,而不是沿着统一的顺序流阅读。
发现 5:给出简化的示例问题似乎对可复现性没有帮助
这是另一个令人惊讶的发现,我仍然在研究它。
我一直很欣赏那些能够将复杂的思想深入浅出地浓缩成更简单易懂的形式的作者。我也很欣赏那些给出了“游戏问题”(toy problem)的论文。“游戏问题”通过一种很容易可视化并进行实验的方式举例说明了某些性质。
从主观上说,我总是发现简化的示例对于理解论文想要实现的是什么,是很有帮助的。在创建一个可以用于调试的的较小测试用例时,复现这种“游戏问题”是一种非常有用的手段。
但是从客观的角度来看,简化示例似乎并不能使论文更具有可复现性。事实上,它们甚至不能使论文更具可读性!我仍然很难理解并解释这个结果。
这就是为什么对于研究社区来说,量化这些问题是很重要的。如果我们不做这些量化的工作,我们就永远不会知道我们所需要做的,就是处理与手头的研究问题最相关的问题。
发现 6:请查收你的电子邮件
最后,我想讨论的发现是:回答问题对于论文的可复现性有巨大的影响。这个结果是意料之中的,因为并不是所有论文都对他们的方法进行了完美的描述。
我们给 50 个不同的作者发了电子邮件,询问如何复现它们的实验结果。在我没有收到回复的 24 个案例中,我仅仅复现了其中一篇论文的实验结果(成功率约为 4%)。
对于剩下的 26 篇论文,作者给予了回复,我得以成功复现了其中的 22 篇论文(成功率约为 85%)。我认为这样的实验结果是很有趣的,因为它对论文发表的过程提出了挑战。
如果我们允许已发表的论文随着时间的推移被不断更新,而不是成为某种「新」的论文,将会怎样?
通过这种方式,作者可以在原始论文中将各种普遍存在的反馈和问题考虑进去。将论文刊登在 arXiv 上的机制已经让这种做法成为了可能,而在会议上发表的论文也应该如此。这些做法可以通过提升可复现性潜在地推动科学的发展,但前提是我们要落实它们。
三、我们获得了哪些启示?
专家将其称之为「超参数调优」。https://xkcd.com/1838/
这项工作受到了《人工智能正面临可复现性危机》一文的启发。这种说法是炒作吗?还是它确实指出了人工智能领域的系统性问题?在完成这项工作之后,我倾向于该领域仍然存在改进空间的观点。
但是,人工智能和机器学习领域的科学家在这方面做的比其它领域的科学家要好。人工智能领域 62% 的复现成功率要高于其它科学领域的元分析中的复现成功率,实际上我认为 62% 的成功率比实际还要低一些。其他那些对我专业领域之外的研究领域更为熟悉的人,也许能够在我失败的案例上取得成功。因此,我认为 62% 的估计是一个下限。
我想说清楚的一点是:前文给出的所有实验结果都不应该被看做对于什么是可复现的,或者什么是不可复现的明确声明。有大量潜在的偏见可能会影响这些结果。最显而易见的是,这 255 次对于可复现性的尝试都是同一个人完成的。元分析师们之间对于内部一致性并没有社区统一的标准。
我认为容易复现的工作对于别人来说可能就很难,反之亦然。例如,我不能复现基于贝叶斯或公平性的论文,但我不相信这些领域的工作是完全不可复现的。我个人在背景、教育、资源、兴趣等方面的偏见,可能都与最终获得的实验结果密不可分。
也就是说,我认为这项工作为我们的研究社区当前面临的一系列挑战提供了强有力的证据,同时验证了社区中目前有许多关于可复现性的研究工作。最大的因素是,我们不能把所有关于所谓的可复现机器学习的假设都当真。这些假设需要被检验,我希望这项工作能够激励其它人开始量化和收集这些数据。
在元科学研究社区中,我们人工智能研究者处于很特殊的位置,我们复现的成本要比其它任何科学领域都要低得多。我们从这项研究中获得的启示,其带来的影响可能会超出人工智能和机器学习的范畴,延伸到计算机科学的其它领域。
最重要的是,我认为这项工作强调了评估科学研究的可复现性到底有多难。孤立地考虑每个特性是实现这类分析的一种相当简单的方法。这种分析已经给出了一系列潜在的发现、意想不到的结果以及复杂度。
然而,它并没有开始基于作者考虑论文之间的相关性,并将数据表征为一个图,或者甚至只是分析一下当前特征之间的非线性相互作用!这就是我试图将大部分数据公开,以便其他人能够进行更深入分析的原因。
数据公开地址:https://github.com/EdwardRaff/Quantifying-Independently-Reproducible-ML
最后,有人向我指出,我这项研究本身可能就是有史以来最不可复现的机器学习研究。但实际上,它引出了一系列关于我们如何进行元科学研究的问题,研究了我们该如何实现和评估我们的研究。
因此,如果读者想要了解更多的细节和讨论,请参阅论文《A Step Toward Quantifying Independently Reproducible Machine Learning Research》,论文地址:https://arxiv.org/abs/1909.06674
试想一下,你自己的工作是如何融入人类知识和科学的宏伟蓝图中的呢?随着人工智能和机器学习研究不断取得新的进展,我们利用这些工作并从中学习的能力,也将高度依赖于我们将越来越多的知识提炼成易于理解的形式的能力。
与此同时,我们的工作流程和系统必须产生不会误导我们的可复现工作。期待大家加入元科学研究领域!
via https://thegradient.pub/independently-reproducible-machine-learning/