2020年3月底决定封锁英国的关键因素之一是伦敦帝国理工学院开发的一个计算流行病学模型。当该模型的代码发布后,立即引起了对软件质量的批评——这些批评随后为那些认为封锁是反应过度的人提供了弹药。那么,软件是什么,批评又是什么?他们是重要的吗?最关键的是,我们能从这些经验中学到什么?
在2020年3月的整个上半月,欧洲国家竞相实施封锁,试图遏制冠状病毒的传播。到3月中旬,欧洲大部分地区已经关闭了日常生活的大门。但英国似乎打算一切如常:似乎不会实施封锁。然后,几乎在一夜之间,英国政府转向了:仅仅10天后,英国也进入了封锁状态。很明显,改变观念的一个驱动因素是由伦敦帝国理工学院的尼尔·弗格森和他的团队开发的流行病学模型。以该模式为基础制作的报告成为国际头条新闻.它无疑是本世纪最具影响力和最令人恐惧的科学论文之一。报告预测,除非采取遏制措施,否则该病毒将在英国造成超过50万的额外死亡人数,超过英国在第二次世界大战中的总死亡人数。英国美国的医疗保健系统将完全不堪重负。鉴于这些可怕的预测,封锁的决定似乎是不可避免的。
弗格森模型是基于个体的流行病学模型的一个例子:它模拟了疾病在个人及其接触者水平上的传播。这种模型的核心是一个表示社会接触网络的图,顶点对应个体,边表示社会接触,因此也就意味着可能的感染途径。然后再叠加一个疾病如何通过网络传播的模型,该模型最粗略的估计可能是一种疾病从一个感染者传播到另一个他们接触过的人的概率。给定这样一个模型和网络的初始状态,在计算上模拟感染如何传播是一件相对简单的事情,当然,由于模型是随机的,不同的模拟将产生不同的结果。弗格森模型比这要丰富得多:它对疾病如何传播、无症状的个体是否会感染他人、感染如何通过个体发展到康复或死亡、感染致死率、病死率等问题进行了大量假设。在撰写本文时,大流行已经持续了7个月,其中许多基本问题仍存在很大的不确定性。鉴于这种不确定性,必须对每个假设的可能性范围进行评估。这突出了这类建模的一些基本困难:首先,假设的重量意味着很难对模拟的结果有信心:对初始假设即使是很小的改变也会对结果产生很大的影响。其次,参数的数量意味着不同组合的空间是巨大的。系统地探索整个参数空间是不可能的。
用于生成报告的软件基础大约有1.5万行代码,从弗格森实验室几十年前开发的模型改编而来.代码的一个清理版本(不是原始版本)是在GitHub上可用2020年4月。它很快吸引了国际计算社区的大量专业兴趣,不久后,代码开始招致批评,这些批评的核心是认为软件质量很差。根据一家英国报纸的报道,它是"“完全不可靠……一团乱麻……根本看不懂。“提出的主要问题似乎如下:
当然,大多数研究软件的开发确实没有专业软件开发的繁文缛节和严谨性。研究软件通常不被第三方理解,也不被重用。开发它的唯一目的通常是生成一组结果,然后就放弃了。弗格森的立场很简单,只是没有时间做更多的事情:高级软件工程会推迟报告的发布。他随后猜测,如果英国提前一周实施封锁,这样就能挽救两万人的生命.如果是正确的,那么即使是一天的延迟也会导致生命损失的显著增加。
虽然科学界的许多成员支持封锁是控制疾病的唯一现实方法的观点,但这一观点绝不是普遍持有的。一个呼声很高的群体认为,封锁是一种过度反应,随之而来的毁灭性的经济和社会后果是可以避免的。该组织抓住了对弗格森模型的批评,把它们作为证据,证明封锁是基于他们所称的低质量科学。英国国会议员大卫·戴维斯质疑他所谓的“秘密且有潜在缺陷的计算在命运的奇异转折中,软件工程质量成了一种政治武器。
随后的分析似乎表明,虽然对宽松的软件工程实践的广泛批评可能是合理的,但它并没有根本的缺陷。代码并不漂亮- - - - - -但这并不意味着它是错误的。
虽然我们将不得不等待正式的调查来真正理解弗格森模型在英国政府的决策中发挥的作用,以及对它的各种批评的真实程度,我相信,我们可以,已经确定了一些教训,以向前学习,这将使我们更好地应对不可避免的未来大流行:
客人的博客迈克尔·里奇是英国牛津大学计算机科学的教授和系主任
没有发现记录