【AI幽灵】超90%论文算法不可复现,你为何不愿公开代码?

简介: 过去几年发表的AI顶会论文提出的400种算法中,公开算法代码的只占6%,只有三分之一分享了测试数据,只有一半分享“伪代码”。这是今年AAAI会议上一个严峻的报告。科学家们正在通过“可复现性挑战”鼓励复现新算法,或研究依据论文自动生成代码的工具。

一个幽灵正在AI领域上空徘徊:复现的幽灵。

科研方法认为,科学研究应该可以让其他研究人员在相同的条件下重现其结果。然而,由于大多数人工智能研究人员不公布他们用来创建算法的源代码,其他研究人员很难做到复现和验证。

0d1a38186337789be7e3fd06a30e082fd440fe11

图:同一个算法训练AI走路,结果可能千奇百态

顶会论文提出的400种算法,只有6%分享代码

去年,加拿大蒙特利尔大学的计算机科学家们希望展示一种新的语音识别算法,他们希望将其与一名著名科学家的算法进行比较。唯一的问题:该benchmark的源代码没有发布。研究人员不得不从已公开发表的描述中重现这一算法。但是他们重现的版本无法与benchmark声称的性能相符。蒙特利尔大学实验室博士生Nan Rosemary Ke说:“我们尝试了2个月,但都无法接近基准的性能。”

人工智能(AI)这个蓬勃发展的领域正面临着实验重现的危机,就像实验重现问题过去十年来一直困扰着心理学、医学以及其他领域一样。AI研究者发现他们很难重现许多关键的结果,这导致了对研究方法和出版协议的新认识。法国国家信息与自动化研究所的计算神经科学家Nicolas Rougier说:“这个领域以外的人可能会认为,因为我们有代码,所以重现性是有保证的。但完全不是这样。”上周,在新奥尔良召开的AAAI会议上,重现性(reproducibility)问题被提上议程,一些团队对这个问题进行了分析,也有团队提出了减轻这个问题的工具。

最根本的问题是研究人员通常不共享他们的源代码。在AAAI会议上,挪威科技大学计算机科学家Odd Erik Gundersen报告了一项调查的结果,调查针对过去几年在两个AI顶会上发表的论文中提出的400种算法。他发现只有6%的研究者分享了算法的代码。只有三分之一的人分享了他们测试算法的数据,而只有一半分享了“伪代码”。(许多情况下,包括Science和Nature在内的期刊上发表的AI论文中也没有代码。)

针对主要会议上发表的400篇AI论文的调查显示,只有6%的论文包含算法的代码,约30%包含测试数据,54%包含伪代码。

f0f6bbb47c4b0a725b19ee7532ff8d17a13758d8

CREDITS: (GRAPHIC) E. HAND/SCIENCE; (DATA) GUNDERSEN AND KJENSMO, ASSOCIATION FOR THE ADVANCEMENT OF ARTIFICIAL INTELLIGENCE 2018

研究人员说,这些缺失的细节的原因有很多:代码可能是一项正在进行中的工作,所有权归某一家公司,或被一名渴望在竞争中保持领先地位的研究人员紧紧掌握。代码可能依赖于其他代码,而其他代码本身未发布。或者代码可能只是丢失了,在丢失的磁盘上或被盗的笔记本电脑上——Rougier称之为“我的狗吃了我的程序”问题。

假设你可以获得并运行原始代码,它仍然可能无法达到你的预期。在机器学习领域,计算机从经验中获取专业知识,算法的训练数据可以影响其性能。 Ke推测,不知道那个语音识别基准的训练数据是什么阻碍了她的团队的进展。“每跑一次的结果都充满了随机性,”她补充说,你可能“真的非常幸运,跑出一个非常好的数字。”“研究报告中通常写的就是这个。”

击败幽灵:从论文中自动生成代码

在AAAI会议上,加拿大麦吉尔大学的计算机科学家Peter Henderson表示,通过反复试验学习设计的AI的性能不仅对所使用的确切代码高度敏感,还对产生的随机数“超参数”也非常敏感——这些设置不是算法的核心,但会影响其学习速度。

他在不同的条件下运行了这些“强化学习”算法中的几个,发现了截然不同的结果。例如,运动算法中使用的一个简笔画虚拟“半猎豹”,它可以学习在一次测试中奔跑,但只会在另一次测试中在地板上徘徊。

Peter Henderson说,研究人员应该记录更多这些关键细节。 “我们正试图推动这个领域有更好的实验程序,更好的评估方法。”

Peter Henderson的实验是在OpenAI Gym强化学习算法测试平台上进行的,OpenAI的计算机科学家John Schulman帮助创建了Gym。John Schulman说,Gym有助于标准化实验。 “Gym之前,很多人都在进行强化学习,但每个人都为自己的实验做好了自己的环境,这使得大家很难比较各种论文的结果。”

IBM Research在AAAI会议上提出了另一种工具来帮助复现:一种自动重新创建未发布源代码的系统,它为研究人员节省了数天或数周的时间。这个系统是一种由小型计算单元层组成的机器学习算法,类似于神经元,用于重新创建其他神经网络。系统通过扫描一份AI研究论文,寻找描述神经网络的图表或图示,然后将这些数据解析为图层和连接,并以新代码生成网络。该工具现在已经复现了数百个已经发布的神经网络,IBM计划把它们放置在一个开放的在线存储库中。

荷兰埃因霍芬理工大学(Eindhoven University of Technology in the Netherlands)的计算机科学家Joaquin Vanschoren为创建了另一个存储库:OpenML。它不仅提供算法,还提供数据集和超过800万个实验运行及其所有相关详细信息。 “你运行实验的确切方式充满了无证的假设和决定,很多这些细节从来没有成为论文。”Vanschoren说。

心理学通过创造一种有利于复现的文化来处理它的再现性危机,AI也开始这样做。 2015年,Rougier帮助启动了一个致力于复现的计算机科学杂志ReScience,NIPS已经开始从其网站链接到论文的源代码(如果有的话)。

Nan Rosemary Ke正在邀请研究人员尝试复现提交给即将举行会议的论文,以实现“可复现性挑战”。Nan Rosemary Ke说,近100个复现项目正在进行中,大多数是由学生完成的,他们可能因此获得学分。

然而,人工智能研究人员表示,目前的激励措施仍然不符合可复现性。他们没有足够时间在每种条件下都测试算法,或者在文章中记录他们尝试过的每个超参数。因为他们面临发论文的压力——许多论文每天都在网上发布到arXiv上,而且也没有同行评审。

此外,许多人也不愿意报告失败的复现。例如,在ReScience,所有公布的复现项目迄今为止都是正面的。Rougier说,他也尝试过发表一些失败的项目,但年轻的研究人员往往不希望批评别人,失败的项目也就无人问津了。这就是为什么Nan Rosemary Ke拒绝透露她想用作基准的语音识别算法背后的研究人员的原因之一。

Gundersen说这种文化需要改变。 “这样做不是羞愧”他说, “这只是说实话。”

如果我们想要信任AI,必须能够复现它

Gundersen说,随着人工智能领域的发展,打破不可复现性将是必要的。

复现对于证明实验产生的信息能够在现实世界中一致地使用,并且得到非随机的结果是必不可少的。一个仅由其创建者测试过的AI在另一台计算机上运行时或者如果输入不同的数据时,可能不会产生相同的结果。

当涉及到机器学习算法时,可复现性问题会变得尤其突出。有很多原因导致人们不会共享源代码或数据:代码可能正在完成中,或属于公司的专有信息,再加上研究人员担心竞争,因此机器学习算法的可复现性较差。在某些情况下,代码甚至可能完全丢失:电脑破损或被盗、硬盘丢了,或者被狗吃掉(可以找这种借口)。

这种情况对行业的未来不是好消息。人工智能一直在产生令人难以置信的繁荣,并且很可能我们会在未来几年拥有超智能的AI,它将在社会中扮演越来越重要的角色。如果我们想让这种美好的未来持续繁荣,我们必须信任我们实施的每一个AI,如果我们想要信任它,就必须能复现它



原文发布时间为:2018-02-17

本文作者:克雷格、Marvin

本文来自云栖社区合作伙伴新智元,了解相关信息可以关注“AI_era”微信公众号

原文链接:【AI幽灵】超90%论文算法不可复现,你为何不愿公开代码?

相关文章
|
1月前
|
机器学习/深度学习 算法 PyTorch
RPN(Region Proposal Networks)候选区域网络算法解析(附PyTorch代码)
RPN(Region Proposal Networks)候选区域网络算法解析(附PyTorch代码)
232 1
|
1月前
|
机器学习/深度学习 人工智能 监控
AI算法分析,智慧城管AI智能识别系统源码
AI视频分析技术应用于智慧城管系统,通过监控摄像头实时识别违法行为,如违规摆摊、垃圾、违章停车等,实现非现场执法和预警。算法平台检测街面秩序(出店、游商、机动车、占道)和市容环境(垃圾、晾晒、垃圾桶、路面不洁、漂浮物、乱堆物料),助力及时处理问题,提升城市管理效率。
AI算法分析,智慧城管AI智能识别系统源码
|
1月前
|
算法 安全 C语言
使用C语言实现DES算法代码
使用C语言实现DES算法代码
|
2月前
|
人工智能 算法 数据可视化
路径规划最全综述+代码+可视化绘图(Dijkstra算法+A*算法+RRT算法等)-2
路径规划最全综述+代码+可视化绘图(Dijkstra算法+A*算法+RRT算法等)-2
212 0
|
2月前
|
机器学习/深度学习 存储 监控
yolov5单目测距+速度测量+目标跟踪(算法介绍和代码)
yolov5单目测距+速度测量+目标跟踪(算法介绍和代码)
189 1
|
23天前
|
机器学习/深度学习 算法 搜索推荐
Machine Learning机器学习之决策树算法 Decision Tree(附Python代码)
Machine Learning机器学习之决策树算法 Decision Tree(附Python代码)
|
1月前
|
机器学习/深度学习 算法 Python
傅里叶变换算法和Python代码实现
傅立叶变换是物理学家、数学家、工程师和计算机科学家常用的最有用的工具之一。本篇文章我们将使用Python来实现一个连续函数的傅立叶变换。
30 8
|
2月前
|
机器学习/深度学习 监控 算法
yolov8+多算法多目标追踪+实例分割+目标检测+姿态估计(代码+教程)
yolov8+多算法多目标追踪+实例分割+目标检测+姿态估计(代码+教程)
127 1
|
2月前
|
存储 人工智能 算法
路径规划最全综述+代码+可视化绘图(Dijkstra算法+A*算法+RRT算法等)-1
路径规划最全综述+代码+可视化绘图(Dijkstra算法+A*算法+RRT算法等)-1
70 0
|
7天前
|
算法
代码随想录算法训练营第六十天 | LeetCode 84. 柱状图中最大的矩形
代码随想录算法训练营第六十天 | LeetCode 84. 柱状图中最大的矩形
18 3