acm-header
登录

ACM通信

BLOG@CACM

导致封锁的软件


2020年3月底决定封锁英国的关键因素之一是伦敦帝国理工学院开发的一个计算流行病学模型。当该模型的代码发布后,立即引起了对软件质量的批评——这些批评随后为那些认为封锁是反应过度的人提供了弹药。那么,软件是什么,批评又是什么?他们是重要的吗?最关键的是,我们能从这些经验中学到什么?

在2020年3月的整个上半月,欧洲国家竞相实施封锁,试图遏制冠状病毒的传播。到3月中旬,欧洲大部分地区已经关闭了日常生活的大门。但英国似乎打算一切如常:似乎不会实施封锁。然后,几乎在一夜之间,英国政府转向了:仅仅10天后,英国也进入了封锁状态。很明显,改变观念的一个驱动因素是由伦敦帝国理工学院的尼尔·弗格森和他的团队开发的流行病学模型。以该模式为基础制作的报告成为国际头条新闻.它无疑是本世纪最具影响力和最令人恐惧的科学论文之一。报告预测,除非采取遏制措施,否则该病毒将在英国造成超过50万的额外死亡人数,超过英国在第二次世界大战中的总死亡人数。英国美国的医疗保健系统将完全不堪重负。鉴于这些可怕的预测,封锁的决定似乎是不可避免的。

弗格森模型是基于个体的流行病学模型的一个例子:它模拟了疾病在个人及其接触者水平上的传播。这种模型的核心是一个表示社会接触网络的图,顶点对应个体,边表示社会接触,因此也就意味着可能的感染途径。然后再叠加一个疾病如何通过网络传播的模型,该模型最粗略的估计可能是一种疾病从一个感染者传播到另一个他们接触过的人的概率。给定这样一个模型和网络的初始状态,在计算上模拟感染如何传播是一件相对简单的事情,当然,由于模型是随机的,不同的模拟将产生不同的结果。弗格森模型比这要丰富得多:它对疾病如何传播、无症状的个体是否会感染他人、感染如何通过个体发展到康复或死亡、感染致死率、病死率等问题进行了大量假设。在撰写本文时,大流行已经持续了7个月,其中许多基本问题仍存在很大的不确定性。鉴于这种不确定性,必须对每个假设的可能性范围进行评估。这突出了这类建模的一些基本困难:首先,假设的重量意味着很难对模拟的结果有信心:对初始假设即使是很小的改变也会对结果产生很大的影响。其次,参数的数量意味着不同组合的空间是巨大的。系统地探索整个参数空间是不可能的。

用于生成报告的软件基础大约有1.5万行代码,从弗格森实验室几十年前开发的模型改编而来.代码的一个清理版本(不是原始版本)是在GitHub上可用2020年4月。它很快吸引了国际计算社区的大量专业兴趣,不久后,代码开始招致批评,这些批评的核心是认为软件质量很差。根据一家英国报纸的报道,它是"“完全不可靠……一团乱麻……根本看不懂。“提出的主要问题似乎如下:

  • 缺乏评论!许多权威人士抓住的第一件事是,很多代码都没有注释。当然,这并不意味着代码是错误的或质量很差,但它被认为是在宽松的软件工程标准环境下开发的软件的一个指标,这反过来会削弱人们的信心。此外,注释的存在是为了帮助其他人理解代码,并给予代码正确的信心。缺乏评论不利于这种理解。
  • 编程语言的选择.在大多数情况下,代码看起来是传统的c语言。选择一种编程语言的传统智慧是选择一种允许您最好地表达您的问题的语言。虽然C语言可能是编写设备驱动程序的自然语言,但它并不是基于代理建模的明显选择——它不能自然地表达这样的模型。
  • 软件结构.代码中使用的主要软件工程技术似乎是过程和功能抽象,并且声称原始的代码库是高度统一的一个15000行文件).这被认为是在宽松的软件工程标准环境下开发的另一个指标。
  • 不透明的假设.虽然一个模型不可避免地会做出假设,但这些假设必须是明确和透明的。特别地,它们不应该嵌入到代码本身中:我们不应该从代码中“逆向工程”假设。对该模型的另一个批评是,它确实做到了这一点,这阻碍了理解(并因此质疑)潜在假设的尝试。
  • 随机性、非确定性和可重复性.以上所有的批评在某种意义上都可以被认为是肤浅的- - - - - -有关外观而不是软件的实际功能。一个更根本的问题出现了,当它声称软件是天生的不确定的:使用相同的启动参数运行代码同样的随机种子可能会产生不同的输出。然而,有消息称在美国,弗格森模型未能通过这一测试:同样的种子可能导致不同的结果。这意味着弗格森模型没有达到良好科学的关键要求:可重复性。
  • 预测.基于智能体的建模社区对基于智能体的模型的预测能力存在分歧。虽然人们普遍认为这样的模型是有用的定性洞察力,目前还不清楚这些模型能否可靠地用于提供定量预测:我们还不知道如何在规模上验证和校准这样的模型。这种观察是在弗格森模型的背景下提出的,当它声称这个模型预测瑞典的死亡人数远远高于实际观察到的死亡人数鉴于那个国家的封锁很轻
  • 开放.如上所述,发布到GitHub上的代码并不是用于生成报告的实际代码。这令人侧目,因为它没有通过标准的科学测试的公开性和透明度:例如,越来越多的科学期刊要求所有相关的数据集和软件可供同行审查。
  • 缺乏同行评审.最后,许多评论人士指出,该报告及其结论没有得到同行的审议。同行评议是良好科学实践的基石。同行评议让独立专家对研究进行审查,这是劣质科学在传播前被淘汰的主要机制。这份在国家政策中发挥了如此重要作用的报告显然缺乏独立的外部审查,因此被视为有争议的。

当然,大多数研究软件的开发确实没有专业软件开发的繁文缛节和严谨性。研究软件通常不被第三方理解,也不被重用。开发它的唯一目的通常是生成一组结果,然后就放弃了。弗格森的立场很简单,只是没有时间做更多的事情:高级软件工程会推迟报告的发布。他随后猜测,如果英国提前一周实施封锁,这样就能挽救两万人的生命.如果是正确的,那么即使是一天的延迟也会导致生命损失的显著增加。

虽然科学界的许多成员支持封锁是控制疾病的唯一现实方法的观点,但这一观点绝不是普遍持有的。一个呼声很高的群体认为,封锁是一种过度反应,随之而来的毁灭性的经济和社会后果是可以避免的。该组织抓住了对弗格森模型的批评,把它们作为证据,证明封锁是基于他们所称的低质量科学。英国国会议员大卫·戴维斯质疑他所谓的“秘密且有潜在缺陷的计算在命运的奇异转折中,软件工程质量成了一种政治武器。

随后的分析似乎表明,虽然对宽松的软件工程实践的广泛批评可能是合理的,但它并没有根本的缺陷。代码并不漂亮- - - - - -但这并不意味着它是错误的。

虽然我们将不得不等待正式的调查来真正理解弗格森模型在英国政府的决策中发挥的作用,以及对它的各种批评的真实程度,我相信,我们可以,已经确定了一些教训,以向前学习,这将使我们更好地应对不可避免的未来大流行:

  • 更好的建模环境.我们需要能够更好地直接捕获弗格森模型中使用的基于代理的模型的软件环境。合适的编程环境将使假设变得明确,并允许开发人员关注模型本身,而不是模型在低级编程语言中是如何表达的。一个合适的软件环境需要扩展到拥有数百万甚至数十亿代理的国家模型,理想情况下是全球模型。
  • 国家流行病模型.如果事先开发出一个合适的、经过精心设计的全国流行病模型,对弗格森研究工作的许多批评本可以避免。与大流行和政府停摆造成的每日国家成本相比,开发和公开测试国家大流行模型的成本为零。
  • 验证和校准.我们需要了解如何验证和校准像弗格森团队那样的模型,这样我们才能对他们建模的内容和如何解释他们产生的模拟有信心。
  • 数据.在过去二十年中,开放国家数据来源的趋势日益明显,例如与旅行和健康有关的数据来源英国的开放数据研究所就是一个很好的例子).这次大流行表明,这些数据对于制定国家应对措施是多么有价值。
  • 开放。人们显然不愿公布该模型的原始代码,这助长了大量阴谋论,并违背了既定的科学最佳实践。模型需要开放,并接受同行评审- - - - - -和批评- - - - - -其他专家。

客人的博客迈克尔·里奇是英国牛津大学计算机科学的教授和系主任


没有发现记录

登录为完全访问
»忘记密码? *创建ACM Web帐户
Baidu
map