01:如何阅读本书
《数字生命》是一项科学研究,表层是可读的叙事,底层是可复现的实验记录。本章说明如何在论证、证据与底层代码之间穿行。
这是一本科学书,但你不需要复现每一个实验也能读它。你只需跟随这场研究:看着某种奇怪的东西出现,注意到我们随手拈来的解释,看看实验如何检验它,再问一句:什么存活了下来。
如果这就是你想要从本书得到的一切,正文就足够了。但每一个重要结果都立在一份更深的记录之上,而那份记录是开放的,你想检查,随时可以往下走。
本书存在于几个深度上。
| 深度 | 它承载什么 |
|---|---|
| 本书 | 论证 |
| 网络版 | 图形、动画与活的呈现 |
| 实验记录 | 代码、报告、对照与原始材料 |
只要问题变得足够有趣,你随时可以在它们之间穿行。
本书有一个网站
《数字生命》的网络版在这里:
https://programmer.ie/books/digital-life/
如果你在 Kindle 上阅读,有些实验在网站上更容易理解。会动的系统可以动起来,大图可以按原尺寸检查,在电子书上变成静态图像的一段序列,可以作为它本该呈现的过程来观看。
因此网络版不是另一本书。它是同一项研究的另一种视图。
公开的源仓库在这里: https://github.com/ernanhughes/Digital-Life
在那里,你可以沿着这场研究一路下潜到代码与实验材料。散文告诉你我们认为发生了什么;代码与实验记录让你检查我们是否配得上那个结论。
你不必以同样的深度读完一切
接下来的内容,大致有三种读法。
跟随论证
大多数读者可以完全停留在正文里。重要的问题是:
我们看到了什么?
我们认为它意味着什么?
我们如何检验那个解释?
什么存活了下来?
你不需要知道每一个参数,也不必复现每一个置信区间,就能理解论证为什么改变了。
跟随证据
有时一个结果重要到让你想知道:我们究竟为什么接受了它。那时请注意干预(intervention)、比较、对照(control)、测得的效应、替代性解释,以及论断的边界。
叙事中的科学,大多运行在这个层次上。
审计实验
如果你想走得更远,就跟随实验进入仓库。在那里,你可以检查实现、脚本、生成的结果、研究报告与支撑材料。
原则很简单:
每一个重要的概念论断,都应有一条能一路回溯到可检查之物的踪迹。
你不必走完每一条踪迹。但踪迹应当存在。
本书的规则
大多数章节都从一个诱惑开始。一个模式在动。一个受损的结构恢复了。一种形态似乎繁殖了。一个区域开始像一个个体。早先的事件似乎留下了一段记忆。
写一本关于数字生命的书,最快的办法就是保留这些词。本书几乎反其道而行之。反复出现的流程是:
看到某种现象
↓
命名假设
↓
判定什么算作证据
↓
测量它
↓
攻击那个解释
↓
构建更好的对照
↓
保留存活下来的东西
有意思的部分,往往是途中消失的东西。一种现象可以在附着其上的解释失败之后仍然存活,而这个区分贯穿全书。
观测
↓
解释
↓
对照
↓
解释失败
↓
观测留存
一个结构可以真的在连贯地移动,即便群集(flocking)已不再是一个站得住脚的解释。一个空位可以真的被重新填满,即便修复已成了一个过于强大的词。一个区域可以真的比周围包含更多属于自身的因果影响,即便个体在更好的对照之下失败了。
名词的失败并不抹掉测量。它常常恰恰告诉我们:那次测量测的到底是什么。
对照在做什么
对照不是实验周围的装饰。它是对某个特定解释的攻击。
假设两个结构看起来很像。那可能是共同祖先的证据,也可能是"同一条局部规则倾向于独立地产生同一形状"的证据。第二种可能性是一个混杂因素(confound):另一种同样能产生我们正试图解释的观测的机制。
下一个实验的任务,不只是为那个诱人的解释收集更多证据,而是让那个更廉价的解释越来越难维持。
这就是为什么对照有时会在一章之内不断变强。第一个对照可能失败。第二个可能揭示出另一个混杂因素。偶尔,连实验本身都是错的。那是研究的一部分,而不是被剪掉的东西。
结果的边缘
科学散文听起来常常谨慎得奇怪。你会反复遇到这样的措辞:
在这一测量之下
在这一构型中
在受测窗口内
相对于这一对照
尚未确立
仅为描述性
这些措辞不是在为薄弱的结果道歉。它们告诉你证据在哪里停止。
比较:
系统记得。
与:
在受测协议下,经实验写入的隐状态(hidden state)改变了系统对同一后来扰动的响应。
第二句话不那么刺激,但也难得多地被误解。
有用的论断有边缘。本书的核心纪律之一,就是拒绝为了让句子更大而擦掉那些边缘。
数字属于它们的实验
本书中有很多数字。不要因为两个量的名字相似,就假定它们可以直接比较。
一个相似度分数在一次实验中可能用一种归一化,在别处用另一种。对照基线可能来自不同总体。一次祖先分析可能把旋转视为等同,另一次却要求精确复制。一次因果估计回答的可能是方向性问题,另一次检验的则是效应是否超过某个预先声明的有意义幅度。
所以默认规则是:
一个数字首先属于定义它的那个实验。
跨实验比较必须给出理由。因此全书不会有一个终局的:
生命分数 = 0.83
本书要发现的是区分。把那些区分压成一个数字,会违背本书的目的。
失败也是证据
打磨过的科学故事常常看起来顺理成章、势在必然:问题、方法、结果、结论。
这场研究很少是那样的。它更像:
问题
↓
有希望的测量
↓
意外结果
↓
混杂因素
↓
更好的实验
↓
更小的论断
↓
新问题
书中最重要的一些实验,并没有确立它们为之设计的那个东西。那不使它们无用。
一个失败的实验可能告诉我们:干预无效。它可能告诉我们:测量不够灵敏。它可能让问题悬置。也可能摧毁一个解释,同时留下一个更小的现象完好无损。这些可能性各不相同,而在本书后面,我们会把这本账明确地算清楚。
现在,一条规则就够了:
不要让一个失败的解释,带走比实验实际击败的更多的证据。
实验记录胜出
正文的存在,是为了让这场研究可理解。它应当告诉你问题、干预、重要的对照、结果,以及因它而改变的东西。
更深的记录的存在,是为了让那个叙述可检查。它容纳那些若一一复现在叙事中会摧毁全书节奏的东西:实现细节、参数、种子、阈值、次级测量、失败的设计、校验检查、生成的报告与来源。
那些细节不是因为不便而被藏起。它们被分开,是因为阅读与审计是两种不同的活动。
而有一条高下关系是要紧的:
如果散文与实验记录冲突,实验记录胜出。
散文是我们对一次实验的解释。实验不是为装饰散文而制造的证据。
一本允许你挑战的书
你没有被要求信任这些页面里的每一个解释。恰恰相反。本书建筑在这样一个假设上:一个有趣的解释,应当招来更强的打破它的尝试。
如果一个结果看起来令人惊讶,就沿着它往下走。检查对照。看代码。试另一个解释。再跑一次。
公开记录之所以存在,部分正是因为:一个科学论断在作者之外的人能攻击它时,会变得更有用。
所以按对你有用的深度读。如果你要的是旅程,就跟随论证。如果你要的是理由,就跟随证据。如果你想挑战结果,就跟随实验。
论证
改变了什么
证据
为什么改变
仓库
我们如何检验它
它们不是这项工作的三个不同版本。它们是同一项工作的三个深度。
开始之前最后的警告
下一个问题,比"实验做得对不对"更难。在问证据有多强之前,我们必须先决定:证据会是关于什么的证据。
当主题是生命时,这个问题格外困难。生物学立刻给了我们词语——生物体、记忆、修复、繁殖、个体、演化——而软件让这些词危险地容易实现。我们的眼睛让它们危险地容易被看见。
所以研究从一个约束开始:
名称不是证据。
相似不是机制的证据。无论生物学多么宝贵,它也不能直接递给我们一份计算生命必须包含的规格书。我们必须发现系统实际能配得上什么。
所以下一章从贯穿后面一切的那个问题开始:
数字生命意味着什么?