交互版 · 改编自作者 2014 年的同名旧文 · 读原文
朋友讲过一个 RPG 外挂的做法:它不读游戏的内存,不懂伤害公式,只盯着屏幕上的一个像素。这个像素从红变灰,它就按下加血。
它没有试图弄懂整个游戏。这篇讲的就是这件事:解析可以没有尽头,但我们得带着结果回来。
上下移动指针(手机上点一下,或拖右边的 ↕ 手柄)。每往下解析一层,答案多一层,新冒出的问题多一倍。
侦测 HP 条上某一点的颜色。颜色从红变灰,说明血量掉到了某条线以下,自动输入加血;反方向变化,什么也不做。
游戏的内部逻辑是个黑匣子。但为了让人能玩,它必须给人留下输入和输出的接口。外挂就接在这两个接口上:抓住一小块输出,配一条简单明确的逻辑,替人的眼、脑、手接管这一小段流程。
观察血条,试试重击能否越过探针。
若 这一点 红 → 不是红 按下 加血否则 什么也不做
它的野心没有大到把系统内部的逻辑全部破解,只把握住一点输出。可这一点已经够用,人就能从这一小块简单的流程里解放出来,将能力发挥到更复杂更有意思的东西上面。这简直就是模块化思想的范本。
试试“让角色中毒”:血条变成绿色,外挂只认识红和灰,再也等不到“红变灰”的那一刻。它的那一点理解,只在它的边界之内成立。(中毒这一段是交互版补的。)
数据科学里,对数据的分析可以按目的分成几种,难度也不一样。最简单的是描述:目标只是把看到的数据讲清楚。最难的是机制:充分理解产生这些数据的系统里,每一个个体究竟发生了哪些变量的变化,而这些变化又究竟造成了哪些其他变化。
拿一只梨来说。从上往下点,看要回答的问题怎样变深,需要的东西怎样变多。
小字看不清时可放大,再左右滑动查看。
原文只举了两端:描述只要我记下梨的形状、颜色、大小;机制要我弄清它为什么是这样的形状、颜色、大小,三者之间又有什么关系。然后还有一个问题:换一只梨,我们建立的模型还对吗?
六种类型来自 Coursera 课程 The Data Scientist’s Toolbox(Jeff Leek)的讲义 Types of Questions。中间四级的梨子例子和机制图里的变量是交互版补的,只为示意,不是植物学结论。
理想状态下我们希望能够得到机制级别的结果:希望能从一次飓风中清晰地、精确地捕捉到一只蝴蝶的飞舞。可现实是,我们所能掌握的信息永远是极为不足的。
下面是两个一模一样的世界,只差一件事:其中一个世界里,有只蝴蝶扇了一下翅膀。
示意,不是天气预报:飓风的路线由 Lorenz(1963)的三变量对流模型驱动(σ=10,ρ=28,β=8/3,固定步长 RK4,每台设备算出的结果完全相同)。模型里的 x 落在哪个“瓣”上,被当作把飓风推向南边还是北边的引导形势;1 个模型时间单位画成 1 天,只为示意。这个系统的最大 Lyapunov 指数约为 0.906,差距平均每 0.77 天左右翻一倍。真实大气里,小尺度的误差还会一层层传到大尺度,Lorenz(1969)据此认为,逐日天气的可预报性大约有两周的上限。蝴蝶也不是飓风登陆的“原因”:Lorenz 1972 年那场演讲的题目本身就是一个问句——《可预报性:巴西一只蝴蝶扇动翅膀,会在得克萨斯引起龙卷风吗?》
即使到了现在这个数据产量超大的时代又怎样呢?数据倒是多起来了,从中提取信息的难度也变大了。在这个模型里,观测点从 12 个加到 9 000 个,误差缩小约 27 倍,可预报的时间却只从约 7.4 天延长到约 11.1 天,多出 3.7 天:误差每缩小到原来的 1/e(约 1/2.7),只多换来约 1.1 天。把蝴蝶那一点差别测出来,12 个观测点要等到第 9.2 天,9 000 个也要第 6.1 天;而两场飓风在第 14.5 天左右分道扬镳。这种时候,一定要控制住自己的贪欲,步步为营。
有时衡量过投入产出,一个问题研究到某个深度和广度就已经满足需要了,就像那个外挂。这时,更应该把剩下的资源用在别的刀口上。
下面三个问题共用一份时间和精力。每一列从上往下,是上一节的六级分析。点一格,决定这个问题解析到哪一层。
格子里的横条:解析到这一层,能多带回来多少用处。右下角的数字:这一层要花的时间和精力。
想要较好地解析一个问题系统,当然需要「打破沙锅问到底」的集中力和恒心。但我们要一直提醒自己:在粗糙的现实之中,要解决的问题必须得有一个边界,这个边界让我们不至于在深挖隧道的过程中失去回来的路径。
解析的第一原则,
便是要带有限的结果回来。
这是我们不得不面对的一个极限。