我是一名新手研究员,当我开始阅读深度学习领域的论文时,我注意到通常不会添加实现,需要在其他地方搜索,我的问题是为什么会出现这种情况?这篇论文的作者无论如何都需要实现他们的模型才能进行他们的实验,那么为什么不发布实现呢?另外,如果没有添加实现并且没有可重复性,那么是什么阻止了作者伪造结果?
为什么大多数深度学习论文不包含实现?
这篇论文的作者无论如何都需要实现他们的模型才能进行他们的实验,那么为什么不发布实现呢?
一些论文和作者实际上提供了指向他们自己实现的链接,但大多数论文(我已经阅读过)没有提供它,尽管一些第三方实现可能已经在 Github(或其他代码托管站点)上可用当你阅读论文时。论文作者不提供参考实现的原因可能不同
- 他们使用一些封闭源代码的软件,或者它利用了其他无法共享的资源
- 他们的实施是一团糟,因此,从教学的角度来看,它毫无用处
- 这可能会鼓励其他人尝试使用不同的实现来重现他们的结果,因此它可能会间接鼓励人们对同一主题进行研究(但也许不提供参考实现实际上可能会产生相反的效果!)
另外,如果没有添加实现并且没有可重复性,那么是什么阻止了作者伪造结果?
我有一些作为研究人员的经验,但不足以准确回答这个问题。
尽管如此,从我读过的一些论文的评论中(例如在OpenReview上),在大多数情况下,审稿人对结果的一致性、工作的新颖性、论文的清晰度和结构等感兴趣。我认为,在大多数情况下,他们可能相信所提供的结果,也是因为,通常,为了可重复性,研究人员需要详细描述他们的模型和参数,提供图表等,但我不排除有人的案例试图愚弄审稿人。例如,观看此视频,Phil Tabor 评论了 Siraj Raval 的荒谬企图愚弄他人和剽窃。
有人可以对一些人为的充分理由进行争论,但深度学习研究论文中存在伪造结果的不良趋势,这些论文提出了一些新的解决方案,甚至更新了最先进的模型性能。这不仅仅是几篇说谎的论文,而是其中很大一部分。而其中的原因更让人难过——大部分所谓的深度学习研究论文只是描述一些经验性实验,没有任何数学和证明任何定理,因此很容易作弊。
所以客观地说,如果你在论文中提出的唯一内容是你的经验结果——你必须通过共享源代码来确认它们是正确的。否则,您的工作将被忽略。
nbro的回答中描述的第一个原因绝对是一个重要的原因;作者可能使用他们无法共享的代码来实现他们的软件。有很多来自公司(大小)的研究,他们可能使用公司内部构建的各种专有库,不能在外部分发。
如本答案所述,有时研究人员更愿意将代码留给自己,因为这可能使他们在同一领域的未来工作/后续研究中比其他研究人员具有“优势”。我并不是说我相信这是一个很好的理由,这听起来绝对不利于科学的整体利益……但在一个“出版或灭亡”的世界中,这可能是可以理解的,那里有很多如果您希望自己的学术生涯能够生存下去,那么您需要经常发表文章。
在我上面链接的答案中也有更详细的描述,研究代码通常很混乱,而且不漂亮。Nbro 也提到了这一点,尽管我个人并不觉得理由是“它太乱了,没用”,更多的时候是“它太乱了,我不好意思分享它”。
一些研究人员,尤其是大型团队中的研究人员,并非一次只研究一篇论文。他们可能同时处理多篇论文,如果它们密切相关,将它们全部放在一个代码库中通常会很方便。审查时间较长的情况尤其如此;在提交论文(论文及其相关的任何内容(例如源代码)必须保持私密)和接受通知之间的时间里,有足够的时间开始着手下一个项目。如果上一个项目的代码与下一个项目的代码混合在一起,并且您还不能/不想发布下一个项目的代码……那么不发布任何东西可能会更容易.
在某些情况下,作者可能会觉得发布他们的源代码(或经过训练的模型)是“危险的”。这可能相对不常见,但可能会发生。例如,考虑围绕 OpenAI 的 GPT-2 语言模型的情况。
不是直接回答您的问题,但请记住,有时并非所有论文的作者都可能同意是否将其开源。从法律上讲,我认为通常所有的作者(或源代码的所有贡献者)都是版权所有者,并且只有在他们都同意发布的情况下才能发布。因此,如果其中一个人觉得(基于上面列出的任何原因,或者可能是其他原因)不应该发布它,它就不会发布。在实践中,我认为这通常主要是论文中更资深的作者/主要调查员/主管的呼吁。
另外,如果没有添加实现并且没有可重复性,那么是什么阻止了作者伪造结果?
就我个人而言,我不会像仅仅......“意外”误报那样担心伪造结果。是的,这是可能的,而且会发生。但是,与你的学术生涯结束的风险相比,成功伪造错误结果和发表论文的回报似乎真的很低。如果你真的必须伪造你的结果才能让你的论文被接受,并且它的其他有意义的贡献为零(没有“不可伪造”的贡献,如理论结果或真正新的和有用的见解)......它不太可能成为一篇真正有影响力的论文,a被广泛引用的一篇。真正具有高度影响力的实证论文只会变得具有高度影响力,因为无论如何人们都会立即尝试重新实现和复制它,如果结果证明这是不可能的,它就会变成死胡同。
也就是说,我并不是说共享源代码不重要。尤其是在深度学习中,尤其是在深度强化学习中,确实已经证明微小的实现细节对经验性能非常重要,而这些微小的实现细节很少在论文中全部可用。鼓励发布源代码肯定是有推动力的,这很重要——但不幸的是,这并不总是一个非黑即白的故事,有时也有充分的理由使这样做变得困难/不可能. 如果这是一项很好的研究,我个人还是宁愿没有源代码,也不愿完全没有。