肺研周见

You Are Not Measuring What You Think You Are Measuring

Johns Wentworth

2022 年 9 月 21 日 source


导读:你测的,并不是你以为自己在测的

作者 John Wentworth(LessWrong 用户名 johnswentworth)是近年来该站最具影响力的机器学习与 AI 安全写作者之一,长期深耕可解释性(interpretability)、抽象(abstraction)与对齐(alignment)研究,以"把模糊的直觉拆成可操作的理论"见长。本文《You Are Not Measuring What You Think You Are Measuring》发表于 2022 年 9 月,在随后的 LessWrong 年度评选(2022 Review)中高票当选为该站年度最佳文章之一,也是理解"如何(不)做实验"最常被引用的入门读物。

文章的核心,可以浓缩为两条"实验设计定律": 第一定律:你测的,并不是你以为自己在测的。 作者先讲了自己八年前的惨痛经历:团队以为在优化"用户更爱哪个按钮、更在意哪段文案",A/B 测试跑得飞起,事后扒日志才发现,真正主导点击率的其实是服务器延迟——而延迟这个因素,原本根本不在他们的假设里。我们以为自己在检验假设,其实大多时候只是在测量某个未被察觉的混杂变量(confounder)。 推论:如果你确信自己只测到了本想测的东西,那你大概率什么都没测到。 反例(比如物理实验课)之所以"成立",恰恰是因为结果本就可预测——已知结果,就没有信息量。能干净地测到目标,往往意味着你事先已经知道答案。 第二定律:如果你测得够多、且种类够杂,才有望弄清自己实际测到了什么。 单比特(是非题式)实验信息量极低,也无法暴露混杂变量(这里说的"比特"是信息量的基本单位:一个单比特实验,最终只会吐出一个"是/否""有效/无效"这样的 0 或 1 的答案——本质上只是一个二选一的开关,除此之外再无更多信息。)现代因果推断告诉我们:变量越多,越能从相关性中反推出因果。所以做实验要的是"信息洪流"(firehose of bits)——像显微镜、服务器日志那样高比特的观测,而不是仅仅报一个 p 值。 文章还把这套思路向外延伸:新的高比特测量设备(显微镜、粒子加速器、可解释性工具)比单个实验更可能是科学进步的瓶颈;预测市场上被"操作化"的问题同样会测偏;而读别人的论文时,要忽略摘要里的主张和 p 值,去直接看原始图表与数据,并和其他研究交叉印证。

正文

八年前,我在一家创业公司当数据科学家,当时我们想优化注册流程。我们做了大量不同的 A/B 测试,偶尔能找到某个改动,让点击率上下浮动个 10% 左右。

后来有周,我对每日注册量的方差里一处对不上的地方感到困惑。最后我从日志文件里扒了些数据出来,发现每当流量出现尖峰时,我们服务器的延迟就会飙到好几秒。这些尖峰期间对注册量的影响是巨大的:哪怕仅仅 300 毫秒,就足以让点击率掉 30%;而当延迟升到秒级时,点击率直接跌掉 80% 以上。而这种情况一天要发生好几次。延迟才是决定我们点击率的最重要因素,远远甩开其他一切。

回头去看我们更早的一些实验,事后诸葛亮的视角下可以清楚地看到:我们那些"最大效应值"里,有相当一部分其实来自延迟的变化——比如,如果我们调整了两个页面的先后顺序,那用户在高延迟页面之前就会多经过一个页面,于是延迟被更好地藏了起来。我们最初对这些实验的解读——比如"用户更在意某个页面的内容而非另一个"——完全错了。事后看同样清楚的是,我们之前所有实验的统计学结论都是胡扯——我们曾假设每个用户的点击行为在统计上是相互独立的,而实际上它们高度相关,所以很多我们以为显著的结果,其实基本都是噪声。

这个例子的核心要点是:我们测的,并不是我们以为自己在测的。我们以为自己在检验关于"用户在意什么信息""事情该按什么顺序呈现""用户会不会更可能去点一个更大更闪的按钮"之类的假设。但事实上,我们测的大多都是延迟。

当我回看这些年来自己跑过的实验,事后看来,绝大多数情况都和那个服务器延迟的例子一样。在大多数时候,实验并没有测到我以为它在测的东西。我把这称为实验设计第一定律:你测的,并不是你以为自己在测的

反对"单比特实验"

"单比特实验"指的是被设计来回答一个是非题的实验。这是高中统计里的典型案例:两种老鼠饲料,哪种能让体重更低?网站上两种按钮设计,哪种点击率更高?一种新的疫苗设计,是否比旧设计(或比根本不打疫苗)更能防新冠?穆里尔·布里斯托尔能不能尝出她的茶杯里是先加的奶还是先加的茶? 一个被训练去关卡末尾找金币的神经网络,如果金币不在末尾了,它还会去那个金币吗? 老鼠能不能只靠嗅觉走迷宫?

对这类实验有个明显的批评:往好了说,它们也只能给出一比特的信息。(当然,实验者在整个实验过程中观察到的信息远不止一比特,但人们通常被训练成忽略大部分有用信息,只报告原始是非题上的那个 p 值。)实验设计第一定律意味着情况要糟得多:在绝大多数情况下,单比特实验对于实验者本想测量的那个东西,给出的信息量几乎为零。最后总会发现,老鼠的体重、穆里尔·布里斯托尔的品茶、或神经网络的 coinrun 表现,实际上经过的因果路径,和我们预计的完全不同。

第一定律的推论:如果你确信除了你以为自己在测的东西之外什么都没测到,那你大概什么都没测到

好吧,但难道就没有那种情况——我们对正在发生的事理解得足够透彻,以至于确实能测到我们以为自己在测的东西?比如那个疫苗测试,或者大学物理实验课上的那些实验?

有。而在这些情况里,我们通常对实验会得出什么结果,心里已经有数得很。当我们对发生的事理解得足够好、足以真正测到本想测的东西时,我们通常也理解得足够好、足以预测结果。而如果我们已经知道结果了,那我们收获的信息就是零——用贝叶斯的话说,我们什么都没测到。

拿物理实验课的例子来说:在物理实验课上,我们知道结果"应该"是什么,如果得出别的结果,那就是我们把实验搞砸了。换句话说:要么我们知道结果是什么(因此收获零信息),要么我们意外地测到了别的东西、而非我们本意要测的。(嗯……我说"意外",但我的大学确实有个物理教授,会在大一物理实验课的摆锤上故意把螺丝拧松。)无论如何,我们肯定没有在测我们本想测的那个东西——要么测到的是别的,要么干脆什么都没测到。

……不过我猜有人会争辩说,物理实验课的结果告诉我们"有没有把实验搞砸"。换句话说,我们可以检验自己到底有没有测到以为自己在测的东西。所以,如果我们懂得实验设计第一定律,那至少我们能测出:这个推论在当前这个案例里到底适不适用。

总之,在这篇文章剩下的部分里,我假定我们处在一个还不知道答案(或答案"应该"是什么)的领域。

解法:大量地测

用统计学的行话说,问题出在混杂变量(confounders)上。我们之所以永远测不到以为自己在测的东西,是因为混杂变量无处不在、无时不有。我们没法对混杂变量做控制,因为实践中我们永远不知道它们是什么、到底哪些潜在的混杂变量才真正重要、以及哪些混杂变量在上游还是下游。经典统计学对显著性和实验规模之类的问题有一大堆说法,但当我们连混杂变量是什么都不知道的时候,其实也没什么可做的。

……或者至少,过去是这样。现代因果推断研究在很大程度上解决了这个问题——前提是我们测得够多。因果推断的一个关键洞见是:虽然我们无法从两个变量的相关性判定因果,但我们有时可以从三个或更多变量的相关性里判定因果——而且变量越多,我们越能把因果钉死。类似地,如果我们测得够多,我们常常能反推出那些潜在的隐变量,并弄清它们与其他一切事物的因果关联。换言之,如果我们测得够多,往往就能对付混杂变量。

这就是我称之为实验设计第二定律的理论基础:如果你测得够多、且种类够杂,你或许就能弄清自己实际测到的到底是什么。

费曼讲的老鼠迷宫故事是个很好的例子:

他有一条长长的走廊,一侧全是门,老鼠从那边进来;另一侧也全是门,食物在那边。他想看看能不能训练老鼠,从任意起点出发,都走到倒数第三扇门。不行。老鼠立刻就奔向了上一次放过食物的那扇门。 问题是,老鼠怎么知道的?走廊造得那么规整、那么均匀,它们怎么知道这就是之前那一扇门?显然门上有某种和其他门不同的地方。于是他把门仔细地重新刷了一遍,把门表面的纹理弄得完全一样。老鼠还是分辨得出来。接着他想,也许老鼠是闻到了食物的气味,于是他用化学药剂在每轮之后改变气味。老鼠还是分辨得出来。然后他意识到,老鼠也许像任何有常识的人一样,是靠看实验室里的灯光和摆设分辨的。于是他把走廊罩了起来,老鼠依然分辨得出来。 他最后发现,老鼠是靠跑过地板时发出的声音来分辨的。而他也只有把走廊埋进沙子里,才终于把这个因素消除。

测得够多、种类够杂,有时我们就能弄清到底发生了什么。

单比特实验(或者更广义的低比特实验)最大的问题,在于我们没测到以为自己在测的东西,而且我们测得不够多、无从弄清实际到底发生了什么。在设计实验时,我们要的是信息的水龙头般喷涌(firehose of bits),而不只是是非题。透过显微镜观察,能得到海量的信息比特。翻看服务器日志,也能得到海量的信息比特。那才是我们想要的——一股信息的洪流。

测量设备

基于实验设计这两条定律,我们能做出什么预测呢?

有一条:新的测量设备,或对测量设备的新应用——尤其是高比特的测量设备——比单个实验更可能成为科学进步的瓶颈。比如说,显微镜比詹纳(Jenner)对第一支疫苗做的对照试验更像是瓶颈。詹纳的实验只催生了那一种疫苗,而且将近一个世纪之后才有人开发出另一种。当下一支疫苗出现时,它来自巴斯德(Pasteur)在显微镜下观察细菌的工作——而那种方法迅速带来了一系列疫苗,还顺带把"巴氏消毒法"作为一种灭菌手段带了进来。

对粒子加速器、高通量测序、电子显微镜、质谱仪等等,我们也能做出类似的预测。在 AI/ML 的语境下,我们或许可以预测:可解释性(interpretability)工具是一个主要瓶颈。

预测市场

出于和"实验通常没测到以为自己在测的东西"同样的原因,一个被完全操作化(operationalized)的预测,通常也没在预测我们以为它在预测的那个东西。

举个例子,也许我真正想预测的,是关于俄罗斯政治影响力某种"质性转变"的东西。我可以把它操作化成一堆关于普京、乌克兰战争、具体法律/政策等等的问题。很可能到头来会发现,这些问题没有一个真正测到了我想触及的那种政治影响力的质性转变。另一方面,如果有一大堆问题,我也许能做某种主成分分析(PCA),反推出这些问题实际测到的那些主要因素。出于和"如果测得够多我们就能弄清一个实验实际测到什么"同样的原因,如果我们就足够多种不同的问题都开设市场,我们有时也能弄清预测市场上的那些问题实际在问什么。

读论文

当然,实验设计定律在解读他人的实验设计与结果时同样适用。

举个例子,下面是 bioRxiv 上最近一篇论文的摘要

在本研究中,我们考察了染色箭毒蛙(Dendrobates tinctorius)幼蛙的活动水平是否具有可重复性。……我们未发现个体行为具有可重复性,然而,我们检测到了家族层面活动的可重复性,这表明行为差异或可部分地由遗传因素以及共同环境来解释。

仅基于摘要,我就斗胆猜一句:这项研究其实并没有测到"遗传因素"。他们大概测到的是别的混杂变量,比如家族成员是在彼此邻近的环境中长大的。(或者整个结果就是噪声 + p-hacking,这种可能性总是存在的。)

好,来看看论文……嗯,实验规模小得可疑,他们总共只用了 17 只青蛙,测了 4 种独立行为。这听起来十足像个统计学上的"空心汤圆"!另一方面,效应量很大,他们最好的 p 值是 p < 0.001,所以也……也许……里头真有点东西?我持怀疑态度,不过就统计这关,暂且给这篇论文一点信任吧。

他们真的测到了遗传效应吗?嗯,他们肯定没有排除非遗传效应。方法部分的"饲养(husbandry)"小节,倒有一大段在讲蛙爸如何对蝌蚪展现"精细的亲代照料行为":"刚孵化的蝌蚪会被父亲背在背上,从陆地产卵窝转移到高度各异、蓄满水的植物结构里"。天哪,这听起来简直就是一个家族的蝌蚪在单一环境里长大,而这个环境很可能跟另一个家族蝌蚪的环境不同。实验者确实谈到了他们为控制测试进行时的精确环境所做的努力……但他们似乎没怎么努力去控制测试开始之前就影响小青蛙的那些变量。所以,没错,每个家族的蝌蚪之间,大有余地存在非遗传的相关性。

这是一篇相当典型的论文:作者没有系统性地控制混杂变量,而实验的比特数又低得让我们无从判断,到底是什么因素真正中介了同胞青蛙之间的相关性(假设那些相关性一开始就不是纯噪声)。很可能作者测的并不是他们以为自己在测的;可以确定的是,他们没排除自己可能还在测别的东西。

要点总结

让我们重述实验设计这两条定律:

  • 实验设计第一定律: 你测的,并不是你以为自己在测的。
  • 实验设计第二定律: 如果你测得够多、且种类够杂,你或许就能弄清自己实际测到的到底是什么。

这两条定律对实验的设计与解读都有大量启示。在设计实验时,要假定这个实验不会测到你本想测的东西。加入大量其他的测量,去尽可能多地核查其他可能。如果可能,使用能提供海量信息洪流的仪器——那种能让你注意到一大堆你没想到的事物的仪器,比如显微镜。

同样地,在解读他人的实验时,要假定他们测的也不是他们以为自己在测的。忽略摘要里的主张和 p 值,去看图表、图像和数据,与其他测了不同事物的论文交叉印证,并努力把足够多种不同的东西拼到一起,以弄清实验者实际测到的到底是什么。