由 Heart 编译
同步编辑部
从编译器到 arXiv 预印本库,这些计算机代码和平台已经改变了科学。
2019年,事件视界望远镜团队拍摄了第一张黑洞照片。这张照片并不是传统意义上的照片,而是对美国、墨西哥、智利、西班牙和南极洲的多个射电望远镜捕捉到的数据进行计算——数学变换。团队将使用的代码公开,以便科学界可以看到它并在此基础上进行进一步的探索。
这正在成为一种普遍模式。从天文学到动物学,每一项伟大的现代科学发现背后都有计算机的身影。斯坦福大学计算生物学家、2013 年诺贝尔化学奖获得者表示,如今的笔记本电脑的内存和时钟速度是他 1967 年实验室电脑的 10,000 倍。“今天,我们拥有强大的计算能力。但问题是,它仍然需要人类的思考。”
不管计算机有多强大,如果没有能够处理研究问题的软件,没有懂得编写和使用软件的研究人员,计算机也是一无是处。“现在研究与软件密切相关,软件已经渗透到科研的方方面面。”软件可持续性研究所(SSI)所长 Neil Chue Hong 说。
最近,一篇论文试图揭示科学发现背后的重要代码,这些发现在过去几十年中改变了科学研究领域。本文介绍了十个对科学界产生重大影响的软件工具,其中包括编译器、arXiv、等与人工智能领域密切相关的软件工具。
语言先驱:编译器(1957)
第一批现代计算机并不易于使用。编程完全是手工完成的,一排排电路通过电线连接起来。后来的机器语言和汇编语言允许用户使用代码对计算机进行编程,但这两种语言仍然需要对计算机架构有深入的了解,这使得许多科学家无法使用它们。
20 世纪 50 年代,随着符号语言的发展,尤其是 IBM 的 John 团队开发的“公式翻译”语言破译代码的物理学家,情况发生了改变。有了这些语言,你可以使用人类可读的指令(如 x = 3 + 5)对计算机进行编程,然后编译器会将其转换为快速、高效的机器代码。
这台使用编译器编程的 CDC 3600 计算机于 1963 年被移至美国国家大气研究中心。(图片来源:大气科学研究大学联盟/科学图片库)
早期,程序员使用穿孔卡片输入代码,而复杂的模拟可能需要数万张穿孔卡片。然而,编程语言让非计算机科学家也能编程。“这是我们第一次自己编程,”普林斯顿大学的一位气候科学家说,他和他的同事使用该语言开发了第一个成功的气候模型之一。
60 多年后,它仍然广泛应用于气候建模、流体动力学、计算机化学和其他涉及复杂线性代数并需要强大的计算机快速处理数字的学科。代码运行速度很快,仍然有许多程序员知道如何编写它。旧的代码库仍然活跃在世界各地的实验室和超级计算机中。
信号处理器:快速傅里叶变换(1965年)
当天文学家扫描天空时,他们会捕捉到随时间变化的复杂信号。为了了解这些无线电波的性质贝语网校,他们需要了解信号随频率的变化情况。一种称为傅里叶变换 ( ) 的数学过程使科学家能够做到这一点。但问题是傅里叶变换效率不高;对于大小为 N 的数据集,它需要 N 次运算。
1965 年,美国数学家詹姆斯和约翰·图基开发了一种加速傅里叶变换过程的方法。快速傅里叶变换 (FFT) 使用递归(一种可以重复使用算法的“分而治之”编程方法),将计算傅里叶变换的问题简化为 N log_2(N) 步骤。速度也会随着 N 的增加而增加。对于 1,000 个点,速度提高约 100 倍;对于 100 万个点,速度提高约 50,000 倍。
牛津大学数学家尼克表示,FFT 的发现其实是一次“重新发现”,因为德国数学家卡尔·弗里德里希·高斯早在 1805 年就完成了这一发现,但从未发表过。不过,詹姆斯和约翰·图基开拓了 FFT 在数字信号处理、图像分析和结构生物学等领域的应用。他认为 FFT“是应用数学和工程领域的伟大发现之一”。FFT 已在代码中多次实现,一种流行的变体是 FFTW(“西方最快的傅里叶变换”)。
默奇森望远镜使用快速傅里叶变换来收集数据。
劳伦斯伯克利国家实验室分子生物物理和综合生物成像部门主任保罗·亚当斯回忆说,当他在 1995 年完善细菌蛋白 GroEL 的结构时,即使使用 FFT 和超级计算机,也需要“很多、很多小时甚至几天”的计算。但如果没有 FFT,很难想象这是如何做到的,而且所花费的时间将是无法估量的。
BLAS(1979)
科学计算通常涉及使用向量和矩阵的数学运算,这些运算相对简单但计算量大。在 20 世纪 70 年代,没有一套普遍接受的工具来执行此类运算。因此,研究人员不得不花时间设计高效的代码来执行基本的数学运算,这使他们无法专注于科学问题本身。
编程世界需要一个标准。1979 年,基本线性代数子程序 (BLAS) 诞生。直到 1990 年,该标准仍在不断发展,并定义了数十个涵盖向量和矩阵运算的基本程序。
田纳西大学计算机科学家、BLAS开发团队成员杰克介绍说,BLAS实际上把矩阵和向量运算简化为加减等基本计算单元。
Cray-1 超级计算机。(图片来源: /Alamy)
德克萨斯大学奥斯汀分校的计算机科学家 van de Geijn 表示:“BLAS 可能是有史以来为科学计算定义的最重要的接口。”除了为常用函数提供标准名称外,研究人员还可以确保基于 BLAS 的代码在任何计算机上都以相同的方式运行。该标准还使计算机制造商能够优化 BLAS 实现,使其在其硬件上快速运行。
40 多年来,BLAS 一直是科学计算堆栈的核心,推动着科学软件的持续发展。乔治华盛顿大学机械和航空航天工程师 Barba 称 BLAS 为“五层代码中的核心机制”。
预印本平台:(1991)
20 世纪 80 年代末,高能物理领域的研究人员经常出于礼貌将他们提交的论文邮寄给同行评审,但仅限于少数人。物理学家保罗在 2011 年的一篇文章中写道:“食物链底层的人依靠顶层的人施舍,这通常会将非精英机构的有抱负的研究人员完全排除在特权圈子之外。”
1991 年,洛斯阿拉莫斯国家实验室编写了一款电子邮件自动回复程序破译代码的物理学家,以创造公平的竞争环境。订阅者每天都会收到一份预印本清单,每篇论文都有一个标识符。这样,世界各地的用户就可以通过一封电子邮件从实验室的计算机系统中提交或检索论文。
最初的计划是将文章保留三个月,将范围限制在高能物理界,但同事说服他取消这些限制。“从那时起,它就从公告牌变成了档案馆,”他说。此后,大量论文开始涌入,涉及的学科范围远远超出了预期。1993 年,他将该系统移植到互联网上。1998 年,他正式将该系统命名为 。
如今,已有 30 年历史的 arXiv 包含 180 万份预印本,全部免费阅读,每月有超过 15,000 份论文提交和 3000 万次下载。“很容易看出为什么 arXiv 如此受欢迎,”编辑曾说,“该系统为研究人员提供了一种快速便捷的研究方式,告诉所有人你在做什么以及何时做,而不需要传统期刊繁琐的同行评审。”
该网站的成功也激发了生物学、医学和社会学等其他学科建立类似的知识库,例如发布了数千份冠状病毒相关研究的预印本。
数据探索者:(2011)
2001 年,还是研究生的佩雷斯决定“探索拖延症”,并决定使用其核心组件。
它是一种解释型语言,这意味着程序是逐行执行的。程序员使用一种称为读取-求值-打印循环 (REPL) 的计算调用和响应工具,他们输入代码,然后由解释器执行。REPL 允许快速探索和迭代,但 Pérez 指出,它不是为科学而构建的。例如,它不允许用户轻松预加载代码模块或保持数据可视化打开。因此,Pérez 创建了自己的版本。
2001 年 12 月,Pérez 发布了交互式解释器,该解释器只有 259 行代码。十年后,Pérez 与物理学家 Brian 和数学家 Evan 合作,将该工具移植到网络浏览器并创建了 ,彻底改变了数据科学。
与其他计算项目一样,它将代码、结果、图形和文本整合到一个文档中。但与其他此类项目不同的是,它是开源的,欢迎广大开发者社区为其开发做出贡献,并支持科学家常用的语言。2014 年,它发展成为支持大约 100 种语言,并允许用户像在自己的计算机上一样轻松地探索远程超级计算机上的数据。
“对数据科学家来说,已经成为事实上的标准”,Pérez 在 2018 年指出。当时,数据库中有 250 万条记录,现在已有近 1000 万条,其中包括 2016 年发现引力波和 2019 年拍摄黑洞照片的记录。“我们能为这些项目贡献一点力量,非常有意义”,Pérez 说。
快速学习者:(2012)
人工智能 (AI) 可分为两类,一类使用编码规则,另一类让计算机通过模拟大脑的神经结构进行“学习”。图灵奖获得者、多伦多大学计算机科学家说:“几十年来,人工智能研究人员一直认为第二种方法‘荒谬’。” 2012 年,研究生 Alex 和 Ilya 证明事实并非如此。
在这项年度竞赛中,研究人员被要求在包含 100 万张日常物品图像的数据库上训练 AI,然后在另一组图像上测试该算法。“当时,最好的算法也会对 1/4 的图像进行错误分类,” 说道。并开发了一种基于神经网络的深度学习算法,将错误率降低到 16%。“我们几乎将错误率降低了一半,” 说道。
他认为,该团队在 2012 年的成功反映了足够大的训练数据集、良好的编程以及图形处理单元(最初为提高计算机视频性能而开发的处理器)的新功能。“突然之间,我们能够将算法速度提高 30 倍,或者从 30 倍的数据中学习,”他说。
他说,真正的算法突破其实发生在三年前,当时他的实验室创建了一个神经网络,可以比经过几十年完善的传统人工智能更准确地识别语音。虽然准确率只是略有提高,但值得铭记。
人工智能和相关研究的成功推动了深度学习在实验室和诊所等许多领域的兴起。它使手机能够理解语音查询,图像分析工具能够轻松地从微观照片中挑选出细胞。这就是为什么它在改变科学和世界的工具中占有一席之地。