NVIDIA 初创加速计划,免费加速您的创业启动 了解详情
写点什么

1000 行 Python 代码脚本 bug,或影响上百篇学术论文

  • 2019-10-15
  • 本文字数:2621 字

    阅读完需:约 9 分钟

1000行Python代码脚本bug,或影响上百篇学术论文

《Nature》杂志 2014 年的一篇论文包含了一个 Python 脚本,其中有一个模块是根据文件的排序返回值,但 Python 并没有定义查询的文件顺序。这意味着在不同的操作系统上,该脚本返回的值是不同的。这个 bug 直到最近才被发现,而这篇论文被引用了 158 次,如果这些论文使用了相同的脚本那么文章的结果很可能是错误的。

藏在《Nature》论文里的脚本 Bug

《Nature》杂志 1869 年创刊于英国,是世界上最早的国际性科技期刊,涵盖生命科学、自然科学、临床医学、物理化学等领域。对于学者而言,论文能被《Nature》收录是一种荣耀。许多自然科学、物理化学等领域的学者,在论文创作中也会使用各种编程语言或工具进行数据收集、分析等工作。


2014 年,《Nature》上发布了一篇名为《A guide to small-molecule structure assignment through computation of (1H and 13C) NMR chemical shifts》的化学论文,该论文试图找到对癌症有效的化合物。论文中包含了一个使用 Python 语言构建的脚本。


最近,夏威夷大学的一位研究生 Yuheng Luo(中国人)发现该脚本中存在一个 Bug:脚本中有一个模块是根据文件的排序返回值,但 Python 并没有定义查询的文件顺序。他在导师 Rui Sun(中国人)的指导下使用该脚本验证结果,结果发现无法匹配论文作者的结果。在测试期间,他们发现在 Mac、Windows、Linux 等不同的操作系统上返回的结果是不同的。


他将研究报告写成了论文,发布在了《Organic Letters》期刊上。5 年时间过去了,这篇包含错误脚本的《Nature》论文已经被引用了 158 次,这意味着如果这些论文使用了相同的脚本那么文章的结果很可能同样是错误的。对于学术论文来说,这是影响很严重的 Bug 了。


Yuheng Luo 在论文中写道:


原始脚本中这个简单的小错误对大量论文的结论造成了影响,这些论文涉及的话题非常广泛,很难从已发表的信息中得出结论,因为研究人员很少会提及其所使用的操作系统。使用这些脚本的作者当然应该再次检查他们的结果,以及使用 [补充资料] 中修改过的脚本得出的任何相关结论。


目前尚不清楚这种故障可能会影响多少篇论文,研究人员通常不会公开他们用于分析的操作系统,因为它应该无关紧要。根据数据显示,2014 年的这篇论文已被浏览过 1,900 余次,并被其他 158 个研究所引用。但是,并非所有引用该论文的研究都可能使用该脚本。


新西兰惠灵顿维多利亚大学的化学讲师罗伯·凯泽斯(Rob Keyzers)在今年发表的一项研究中引用了该方案,他在一封电子邮件中说,他不知道该 Bug 的存在。他补充说,他并不“过度担心”自己的结果,因为他的团队没有使用包含小故障的脚本。他说:“我当然会仔细检查我们的数据,以确保我们不会提出任何不当的论述。”

学术界的代码问题大讨论

长久以来,学术界和工业界都是互相独立的两个世界。学术界更多钻研于技术的进步与面向未来的研究,而工业界则更多关注技术的落地与商业化。学术界和工业界一直以来都很少合作,此前 AI 大神 Yann LeCun 也曾呼吁学术界、工业界紧密合作以加快 AI 的发展。


但事实上,学术界跟工业界的区别依旧明显。此次事件在 Reddit 上也引起了广泛讨论,不少用户表达了对学术界代码问题的困惑,这也从侧面印证了两个世界之间的缺乏理解与互通。

学术论文中的代码缺乏同行评审吗?

“由于很少提及操作系统,因此无法从发布的信息中轻松解析”。


本文中 Python 脚本出现的 bug 背后,折射出了这样的问题。ID:compsky 的用户十分困惑,同行评审本应是学术论文发表前的一个重要因素,但他所看到的几篇论文很少有关于如何重现他们声称已运行的程序的说明。


ID:Objective_Mine 的用户跟帖评论道:


我读过许多 NLP 相关内容的论文,其中描述了一种算法,但未提供源代码。你还必须至少猜测一些细节,并且想要做到复制精确的实验是不可能的。任何依赖实验而不是形式证明的东西都应该真正具有可用的确切程序,这背后就是源代码和环境细节。

科学家是糟糕的程序员

代码质量通常不是学术界关注的重点。一般意义上,学术论文中的代码唯一消费者就是研究人员,所以诸如稳定性和易用性之类的东西并不比简单地完成工作更重要。此外,研究代码必然是实验性的,并且规范变化比其他类型的代码更加剧烈,所以最终的代码将会有许多变更移植到它上面。


但最重要的因素只是因为学者们不认为自己是专业程序员(确实也不是),编程只是他们工作的一小部分。因此,根本没有能够维持代码审查过程的护理或激情水平。


在这样的情况下,计算机学术界也好,其他学界需要使用计算机代码的学者也好,代码质量通常达不到工业级的标准,也常常因此为工业界的程序员所惊讶。

如何看待科技公司从学术界挖角现象?

从前,学术界的大牛们分布在各个知名的研究院里:微软亚洲研究院、贝尔实验室、雅虎研究院等等不一而足。研究院通常来说不差钱,比如贝尔实验室长期以来总是用不需为经费发愁这一条理由来吸引优秀的科学家到该实验室工作。


但在近两年,科技公司越来越多地开始从学术界挖角,并成立自己的实验室网罗天下英才为己用。比如吴恩达加入百度(已离职)、李飞飞加入谷歌(已离职)、Yann LeCun 加入 Facebook(已离职)、颜水成加入 360(已离职)、贾扬清加入阿里巴巴、贾佳亚加入腾讯等等。


2017 年 10 月云栖大会上,阿里巴巴高调宣布成立达摩院,进行基础科学和颠覆式技术创新研究,并将在未来 3 年投入 1000 亿元进行基础科学研发。而在阿里以外,腾讯也有自己的优图实验室、玄武实验室,360 也有自己的研究部门。


为什么科技公司纷纷从学术界挖来众多大牛,收归己用?理由可能有很多,但最共通的一点就是:利用知名学者的名人效应,打造公司的技术品牌,凭着多年在学术圈积累下来的名望与成绩,为公司招徕人才,组建一支技术强军。


但这背后存在一个悖论:研究院通常需要大量的经费支持,但科技公司却是以盈利为目的,如果研究院光有研究没有产出,其存在的地位会非常尴尬。阿里巴巴成立达摩院时,马云就曾直言:达摩院未来要自己挣钱,还要比阿里巴巴活得更久。


InfoQ 的一位消息人士给出的观点,更是工业界技术人的一个普遍观点:


腾讯某实验室在研究的东西,我们自己团队也在搞,而且我们造出来的轮子性能还比他们的更好。每年花那么多钱养这么多博士、教授,最后做出来的东西还不如工程团队自己的。


在你看来,科技公司和学术大牛之间的关系应该是怎样的呢?科技公司的研究部门地位尴尬吗?

作者介绍

小智,InfoQ 编辑。关注架构、开源、泛互联网科技领域,个人公众号小智的互联网观察,个人微信:ryantz,添加请备注来意。


公众号推荐:

跳进 AI 的奇妙世界,一起探索未来工作的新风貌!想要深入了解 AI 如何成为产业创新的新引擎?好奇哪些城市正成为 AI 人才的新磁场?《中国生成式 AI 开发者洞察 2024》由 InfoQ 研究中心精心打造,为你深度解锁生成式 AI 领域的最新开发者动态。无论你是资深研发者,还是对生成式 AI 充满好奇的新手,这份报告都是你不可错过的知识宝典。欢迎大家扫码关注「AI前线」公众号,回复「开发者洞察」领取。

2019-10-15 10:076908
用户头像
小智 让所有人认同的文字称不上表达

发布了 408 篇内容, 共 377.4 次阅读, 收获喜欢 1972 次。

关注

评论 1 条评论

发布
用户头像
OMG
2019-10-21 10:09
回复
没有更多了
发现更多内容

游戏引擎中的实时渲染和在V-Ray中渲染有什么区别?

3DCAT实时渲染

渲染引擎 游戏引擎 渲染服务 游戏开发引擎

建筑、工程和施工产业中的3D可视化

3DCAT实时渲染

可视化 云渲染 实时云渲染 云渲染平台

数据治理体系建设与数据资产路线图规划

用友BIP

优化 20% 资源成本,新东方的 Serverless 实践之路

阿里巴巴云原生

阿里云 Serverless 云原生

OSCS开源安全周报第22期:NuGet 仓库中被发现 13.5 万个包含钓鱼地址的组件包

墨菲安全

“2022混合云TOP50”重磅发布 天翼云问鼎榜首

Geek_2d6073

在霍格沃兹测试开发学社学习是种怎样的体验?

测吧(北京)科技有限公司

测试

【深入浅出Spring原理及实战】「源码原理实战」从底层角度去分析研究PropertySourcesPlaceholderConfigurer的原理及实战注入机制

洛神灬殇

spring 12月日更 12 月 PK 榜 Spring 配置解析

前端程序员培训学习需要学多久?

小谷哥

参加java培训对学习程序员有用吗?

小谷哥

如何通过 NFTScan 发掘 NFT 项目的内在价值

NFT Research

区块链 NFT

【电路设计】避开元器件的这些“坑”,多年的心梗都治好了!

华秋PCB

工具 PCB PCB设计

第五届“强网”拟态防御国际精英挑战赛精彩落幕!——网络空间安全大赛再立新标杆

科技热闻

商密SIG月度动态:文件加密支持SM4算法、Anolis 8.8将默认集成 | 龙蜥 SIG

OpenAnolis小助手

开源 算法 龙蜥社区 商密 SM4

行业认可|墨菲安全登信息通信软件供应链安全社区优秀榜单

墨菲安全

皮皮App发起爱心捐赠,让城市里的荧荧之光,给乡村孩子带去一片暖冬

联营汇聚

调试3D渲染和3D可视化的五个好处

3DCAT实时渲染

可视化 3D渲染 云渲染 实时渲染

WhaleDI数据治理利器之“低成本数据质量管理”

鲸品堂

12 月 PK 榜

Transformer:让ChatGPT站在肩膀上的巨人?

Baihai IDP

AI Transformer

学习大数据培训和自学哪个比较好

小谷哥

大数据开发技术培训班怎么选

小谷哥

GitHub标星已达26K+,鹅厂技术总监手写分布式架构体系笔记

小小怪下士

Java 程序员 分布式

MegEngine Windows Python wheel 包减肥之路

MegEngineBot

深度学习 开源 MegEngine

为什么数字化时代需要 BizDevOps?

阿里云云效

DevOps 数字化转型 数字化 BizDevOps

一文读懂于Zebec生态中的潜在收益方式

EOSdreamer111

前端编程学习有没有必要参加?

小谷哥

YonBuilder移动开发平台 AVM框架 封装省市区级联选择弹框

YonBuilder低代码开发平台

开发者 AVM

AI与低代码的结合及应用

力软低代码开发平台

Spring中11个最常用的扩展点,你知道几个?

JAVA旭阳

Java spring

如何提升工作效率--工具篇(60/100)

hackstoic

工具 工作效率

一文读懂于Zebec生态中的潜在收益方式

股市老人

1000行Python代码脚本bug,或影响上百篇学术论文_文化 & 方法_小智_InfoQ精选文章