论文不公开代码,应该被直接拒稿?

技术讨论 三井 ⋅ 于 2个月前 ⋅ 486 阅读
来源:机器之心、量子位,编辑整理:极市平台

AI论文,到底该不该强制开源代码?

上周,图灵奖得主 Yann LeCun 公开质疑谷歌大脑的论文无法复现,引起了社区热议。Lecun 表示,即使是 NLP 的一些顶级研究人员也无法复现谷歌大脑的语言模型 Transformer-XL 所得到的结果。此外,有人还面向广大研发人员发出了「江湖悬赏令」,称成功复现者将获得「酬劳」。

file

去年,AI知名女学者Anima Anandkumar曾在个人博客里公开喊话,强烈反对发论文却不给代码的行为,呼吁学术会议强制要求投稿同时必须公开代码。她认为不开源代码不利于评审论文,不利于对论文造假的追责,更不利于行业开放竞争。

file

迄今为止,行业内仍有相当数量的优质研究未能复现,这也使得后来的研究工作多多少少受到影响。但由于各项研究的本质各不相同,所以这类问题需要多维度地去看待。那么研究论文的代码是否应该「开源」?我们来看开发者们的观点。

支持代码开源

观点 1:研究本来就是要共享

近日,一位网友在 Reddit 社区呼吁,希望所有研究者都能在发表论文的同时公开自己的代码,否则应该被直接拒绝。

file

发起人认为,任何形式的研究行为均可看做对知识体系的贡献,并终将造福于人类社会。在他看来,不将论文代码公开阻碍了这一进程,这样的行为不应受到鼓励。

发起人同时表示,审稿人在论文代码没有公开的情况下就接收论文,这点让他感到理解无能。难道科学领域的审稿过程不应该确保其研究结果的可复现性吗?审稿人是如何做到在论文代码未公开的情况下进行测试的呢?

观点2:不开源怎能让人信服

一名从事石油行业的网友说,他们行业的数据都是商业机密,所以不会发布任何数据和代码,甚至会在文章中丢掉一些公式来隐藏成果,还声称98%的正确率。结果怎能让人信服。

他认为不公开数据和代码,就像把一篇论文中所有的关键要素都删了,这样的研究即使发表出来也毫无价值。

还有一些人认为,强制开源会改变其他行业对机器学习的偏见。

很多其他学科的人都把机器学习看成伪科学,这是为什么?因为AI领域的论文发布过程非常不成熟。

科学方法的关键是一致性和可重复性。追逐单一的指标,每个人都对SOTA着迷,这是一个巨大的问题。

而开源是解决此问题的一种方法。

反对代码开源

观点 1:代码并没有那么重要

首先,开源代码的目的是什么?是为了让其他研究者可以复现结果。

如果一篇论文包含足够多的细节,那么别人就可以根据其中的公式自己写出代码,对于这类论文,可以不公开代码。不过前提必须是提供足够多的细节。

比如谷歌的AlphaGo就没有开源代码,但是没有人怀疑它的正确性,事实上也有很多人根据谷歌论文复现了AlphaGo。

而且作者本人的代码可能会出现错误,不开源的一个好处就是让其他研究者独立复现。

万一作者在代码里挖了个不明显的“坑”,其他人也可以规避,防止被带到沟里。

另外,也不要高估代码的价值,经典论文可以几十年长盛不衰,但是代码很可能十年后就难以运行了。

当然,还有一种观点就是,对于AI来说,数据集更重要。没有数据的代码是没有价值的,而很多数据集没法开放,这意味着你即使拿到代码,也无法复现SOTA结果。

观点2:有些数据、代码是保密的,不能也不愿公开

有一些商业公司的研究者,他们在写论文的时候用到了公司内部专有软件库,如果强制开源,他们必须从头再写一遍代码,费时费力;还有一些作者,本身并不是不想开源,而是希望能够将成果保护一段时间,如果强制开源代码,对这些人也是不公平的。

尽管如此,很多时候情况确实非常荒谬——「未完全解释的方法」使用「未公开的数据」在「未共享的模型」上取得了 98%的准确率。这就像是一篇删除了你想知道的所有研究重点的 Medium 文章。

神回复:

我做了一个准确率为 100% 的人脸识别项目。来源:相信我就好了,哥们儿。

file

更中立的看法

观点 1:论文本身应该包含足够多的细节,但是否开源是各人的自由

论文本身就应该包含足够多的细节,这样其他人才能了解如何复现。分享代码可以让他人轻松地复现,但如果论文作者不愿分享的话,则需要在方法部分提供更多的细节,这样读者才能自行复现。决定是否分享代码是研究者的自由,别人无权干涉。

观点 2:是否公开代码需根据研究类型而定

我是做理论研究的,甚至不知道如何创建 docker 容器。我发表了很多论文,并在 GitHub 上公开了所有的代码。有时候我会使用不同的编程语言来实现我的论文,那些方法依然有效。

如果论文所提出的方法无法从外部验证,那么它是否缺乏作为有用工具的依据?方法的设计应独立于其编程方式。在我看来,决定论文是否需要公开代码时,根据论文的具体贡献来做判断是更明智的做法,而不是一概而论。

观点 3:不会拒绝没有代码的论文,但会有疑虑

他们并不是不能写方法实现,但是「令」他们这么做可能毫无意义。你已经有了可以生成结果的脚本,为什么不直接把它们放到 GitHub 上呢?

我从未因为论文没有代码而拒绝一篇论文,但是没有代码会让我产生很多疑虑。

file

强制提交代码可能不切实际

微软研究院John Langford 曾将论文研究分为以下三种:

1. 算法:

研究目标是发现一些更好的算法以解决各种学习问题,是顶会中最典型的类型。

2. 理论:

研究目标是一般性地理解哪些学习算法是可能的,哪些是不可能的。虽然这些论文同样可能提出算法,但它们通常并不要求一定要实现,因为这会浪费作者、评审者和读者的时间。

3. 应用:

这些研究的目标是解决特定的任务。AlphaGoZero 就是一个例子,它在围棋领域中用算法击败了世界冠军。对于这类研究而言,由于计算量大、数据所有权等特点,编程的可复现性可能不切实际。

而ICML、ICLR 和 NeurIPS 等顶会也都在努力推进将实验代码和数据作为评审材料的一部分提交,并鼓励作者在评审或出版过程中提交代码以帮助结果可复现。NeurIPS 2020官方更是在近日发布了一份开源指南,同时从2019开始“强烈建议”提交论文代码。

可以看出,官方传达出了一种信号:AI学术顶会开源代码已是行业趋势

而目前依然有很多研究结果缺乏可复现性,很多优秀研究没有提供对应的代码。从可复现性层面看,每一年相较上一年都有不错的进步,同时也受到越来越多的关注。从研究角度来说,很多后来的研究者会基于先驱工作做一些新的探索,而缺乏可复现性将使其变得举步维艰。

但不公开代码就直接拒绝未免过于「一刀切」,毕竟,可复现性并不是评价论文的唯一标准。要求每一篇论文都是可编程复现,可能会降低各类研究社区的活力与创新。

另一种可行方案是将代码作为补充资料进行定位,例如像附录那样查看代码(和数据)的提交,以便于评审探究和使用。而对于作者本人而言,提供额外的代码也便于说服那些善于质疑的评审。

你觉得公开的学术论文也应该公开代码吗?可以在评论区发表你的见解。

参考链接:

https://www.reddit.com/r/MachineLearning/comments/fzss9t/d\_if\_a\_paper\_or\_project\_doesnt\_publicly\_release/

https://www.reddit.com/r/MachineLearning/comments/fzp8bu/d\_official\_neurips\_2020\_guidelines\_for\_making/

成为第一个点赞的人吧 :bowtie:
回复数量: 0
暂无回复~
您需要登陆以后才能留下评论!