交互版 · 改编自作者 2014 年的同名旧文 · 读原文

问题解析的极限

朋友讲过一个 RPG 外挂的做法:它不读游戏的内存,不懂伤害公式,只盯着屏幕上的一个像素。这个像素从红变灰,它就按下加血。

它没有试图弄懂整个游戏。这篇讲的就是这件事:解析可以没有尽头,但我们得带着结果回来。

上下移动指针(手机上点一下,或拖那条横线)。每往下解析一层,答案多一层,新冒出的问题多一倍。

01 · 一个像素

外挂只看一个点

侦测 HP 条上某一点的颜色。颜色从红变灰,说明血量掉到了某条线以下,自动输入加血;反方向变化,什么也不做。

游戏的内部逻辑是个黑匣子。但为了让人能玩,它必须给人留下输入和输出的接口。外挂就接在这两个接口上:抓住一小块输出,配一条简单明确的逻辑,替人的眼、脑、手接管这一小段流程。

游戏内部 · 外挂一个也不读
外挂读到的全部信息
#E2384D
红
若 这一点 红 → 不是红    按下 加血否则    什么也不做
50%
坚持
0:00
倒下
0
用药
0
药效溢出
0

它的野心没有大到把系统内部的逻辑全部破解,只把握住一点输出。可这一点已经够用,人就能从这一小块简单的流程里解放出来,把力气花在更复杂、更有意思的东西上。这简直是模块化思想的范本。

试试“让角色中毒”:血条变成绿色,外挂只认识红和灰,再也等不到“红变灰”的那一刻。它的那一点理解,只在它的边界之内成立。(中毒这一段是交互版补的。)

02 · 看得多深

从描述,到机制

数据科学里,分析可以按目的分成几种,难度一级比一级高。最浅的是描述:把看到的数据讲清楚。最深的是机制:弄清楚产生这些数据的系统里,每个个体的哪些变量发生了变化,这些变化又引起了哪些别的变化。

拿一只梨来说。从上往下点,看要回答的问题怎样变深,需要的东西怎样变多。

小字看不清时可放大,再左右滑动查看。

    原文只举了两端:描述只要我记下梨的形状、颜色、大小;机制要我弄清它为什么是这样的形状、颜色、大小,三者之间又有什么关系。然后还有一个问题:换一只梨,我们建立的模型还对吗?

    六种类型来自 Coursera 课程 The Data Scientist’s Toolbox(Jeff Leek)的讲义 Types of Questions。中间四级的梨子例子和机制图里的变量是交互版补的,只为示意,不是植物学结论。

    03 · 飓风与蝴蝶

    信息永远不够

    理想中,我们想要机制级别的答案:从一场飓风里清晰地、精确地捕捉到一只蝴蝶的飞舞。可现实是,我们所能掌握的信息永远是极为不足的。

    下面是两个一模一样的世界,只差一件事:其中一个世界里,有只蝴蝶扇了一下翅膀。

    观测点

    即使到了数据产量超大的时代又怎样呢?数据倒是多起来了,从中提取信息的难度也变大了:观测点从 12 个加到 9 000 个,误差缩小了二十多倍,也只让人早一天多看出两个世界不一样,那时两场飓风已经快要分道扬镳。这种时候,一定要控制住自己的贪欲,步步为营。

    04 · 带回来

    够用了,就回来

    有时衡量过投入产出,一个问题研究到某个深度和广度就已经满足需要了,就像那个外挂。剩下的资源,更应该用在别的刀口上。

    下面三个问题共用一份时间和精力。每一列从上往下,是上一节的六级分析。点一格,决定这个问题解析到哪一层。

    格子里的横条:解析到这一层,能多带回来多少用处。右下角的数字:这一层要花的时间和精力。

    时间和精力 · 用了 0 / 100
    带回来的用处
    0
    同一份预算,最多
    0

    想要较好地解析一个问题系统,当然需要“打破沙锅问到底”的集中力和恒心。但我们要一直提醒自己:在粗糙的现实之中,要解决的问题必须得有一个边界,这个边界让我们不至于在深挖隧道的过程中失去回来的路径。

    解析的第一原则,
    便是要带有限的结果回来。

    这是我们不得不面对的一个极限。