一堵墙是测不准,另一堵墙是没有捷径(One wall is measurement; the other is that no shortcut exists)
2026-07-29 · 动力学与不可预测性
你大概以为预测不准是因为仪器不够好、数据不够多。有一半是这样。另一半完全不是——有些事情算不出来,不是因为你知道得太少,而是因为除了让它原速发生一遍,没有别的办法。
明天的天气报得挺准,下周末的就未必,两周以后的基本等于瞎猜。这条界线不是技术水平的界线——把超级计算机再快一百倍,也推不远多少。它是一堵墙。
反直觉的地方在于:这样的墙不止一堵,而且两堵墙长得完全不一样。第一堵叫测不准:系统对初始状态极度敏感,你的测量误差会指数放大,于是预报期被误差长大的速度锁死。这一堵,花钱能撬开一点。第二堵是另一回事:假设你把初始状态知道得分毫不差,规则也精确到没有一丝含糊,仍然可能没有任何办法比"让它一步一步跑完"更快地知道结果。这一堵撬不开——它不关于你知道多少,它关于捷径存不存在。
本站讲不可预测性有三期,分工不同:第 8 期讲混沌(chaos)本身(确定论不等于可预测),第 9 期讲一个参数怎么把系统一路推进混沌。本期只问一件事:既然预测不了,那"预测不了"具体是哪一种,以及各自还剩下什么能做。两种极限必须对着看——因为它们的补救措施几乎正好相反,诊断错了,钱就全花在没用的地方。
1961 年,气象学家爱德华·洛伦兹想接着跑一段已经算过的预报,就从打印稿上把中间结果抄回机器里 → 参考 · 洛伦兹系统。打印稿只保留了三位小数,机器里存的是六位。抄进去的数和原来的数差了不到千分之一——跑出来的天气却完全是另一副样子。
要紧的不是"差一点点会变很多"这句话本身,而是差多少、多久变多少。在这类系统里,两条起点几乎重合的轨迹,它们之间的距离大致按指数拉开:每过一段固定的时间就翻一倍。这段时间叫误差倍增时间(error doubling time);它对应的增长速率叫李雅普诺夫指数(Lyapunov exponent),而误差从"可以忽略"长到"不能忽略"所需的时间,叫李雅普诺夫时间(Lyapunov time)。
指数增长有一个残酷的后果,要反过来算才看得出:你想多买一个倍增时间的预报期,就得把初始误差砍掉一半。想多买十个倍增时间,得把误差砍到千分之一(2 的 10 次方大约是 1000)。测量精度的投入是乘法级的,换回来的预报期是加法级的。这就是为什么天气预报的进步是"每十年往前多推进一天左右"这种速度,而不是随算力一起翻番。
现代天气预报里,天气尺度的误差倍增时间大约是一天半。2019 年有一组人(Zhang 等)用 9 公里和 3 公里分辨率的模式专门估过这件事:现在能用的预报期大约 10 天,而把当前的初始误差整体降低一个数量级,最多再往前推 5 天——之后就撞上一条大约两周的线,那是假设模式完美时的上限,不是当前水平。天气报到两周就没了,这不是气象学家不努力。
把"重新规划的周期"按误差倍增时间来定,不要按日历定。做法:翻出你过去 20 次预测(工期、销量、容量、故障恢复时间),按"提前多久做的预测"分组,看偏差从哪个提前期开始失控——那个时间就是你这件事的倍增时间,复查周期设成它的一半。要停掉的动作:为了"一次算准"把估算会开成两小时。
EN In a chaotic system the gap between two nearby trajectories doubles every fixed interval — the error doubling time, roughly a day and a half for synoptic weather. Buying one more doubling time of forecast horizon costs a halving of initial error: precision is multiplicative, horizon is additive. Zhang et al. (2019) estimate today's useful range at about 10 days, with a further order of magnitude in initial precision buying at most 5 more, against an intrinsic ceiling near two weeks.
撞上第一堵墙之后,气象学家做的不是放弃,是换了交付物。这一步值得所有做预测的人抄。
1990 年代起,主要预报中心不再只跑一次模式。它们把初始状态微微扰动几十次——每一次扰动都在观测误差允许的范围之内,所以每一个扰动版本都同样"有资格"是真实的当前状态——然后并行跑几十条预报。欧洲中期天气预报中心(European Centre for Medium-Range Weather Forecasts,缩写 ECMWF)的做法是 51 条:1 条控制预报,加 50 条扰动成员。这套东西叫集合预报(ensemble forecasting)。
它交付的不是一个数,是一群数。而这群数散得有多开,本身就是最重要的那个产品:如果 51 条都说周六下雨,你可以相当有信心地说会下雨;如果 30 条说下、21 条说不下,正确的输出就是"降雨概率六成",而不是硬挑一个。你手机上那句"明天降水概率 70%",背后就是这么来的。
注意这不是把不确定性打包成一句免责声明。概率预报是可检验的:把一年里所有报了"70%"的日子拉出来,真正下雨的天数应该接近七成。这叫校准(calibration),是一个能打分的量。点预测没有这个性质——单独一次"明天下雨"报错了,你分不清是模型差还是运气差,于是谁也不必负责。
把交付物从"一个数"换成"一个区间加一个概率",并且给区间打分。具体:每次报数字都带 80% 区间;每季度统计真值落在区间里的比例,目标就是 80%——落进去太多说明你把区间报宽了在偷懒,落进去太少说明你在自欺。被问责的对象从"猜没猜中"换成"区间的校准率"。这一步不需要任何新模型,只需要换一张表。
EN Ensemble forecasting perturbs the initial state within observational error and runs many forecasts — ECMWF runs 51 members. The deliverable becomes a distribution, and its spread is the product: a tight ensemble licenses a statement, a wide one licenses only a probability. Crucially, probabilities are testable through calibration, while a single-point forecast can never be scored on one occasion.
第二件事更重要,也最容易被漏掉:可预测性不是系统的属性,是问题的属性。
明年 3 月 17 日北京的气温,问不出来。明年 3 月北京的平均气温、以及大概有几天会超过 25 度,能答得相当好。同一个大气,同一套方程,同一堆测量误差——差别只在于前者问的是轨迹上的一个点,后者问的是这条轨迹长期落在哪儿、以什么频率落。
这正是天气和气候的分别。气候不是"很久以后的天气",气候是天气的统计。用第 7 期的语言说:轨迹在吸引子(attractor)上乱走,走到哪一点问不出来,但吸引子的形状是稳的,稳到你换一段时间重新统计,画出来的分布几乎重合。→ 参考 · 相空间与吸引子
所以"这个系统是混沌的,预测不了"这句话是不完整的,甚至常常是偷懒。要修多高的堤、备多少冗余、下多大仓位——这些问题问的全是统计量。改问法比改工具便宜得多,而且往往是唯一有效的一步。
听到"这个算不出来"时,先追问一句:你要算的是轨迹(某个时刻的具体状态)、终态(最后停在哪儿),还是统计量(长期的分布、频率、比例)?三者的可算性完全不同。凡是能改写成统计量的问题就改写——把"下季度哪一周会出故障"换成"下季度大概几次故障、最长一次多久",后者可答,而且它才是你排班和备冗余真正需要的数。
EN Predictability belongs to the question, not the system. Tomorrow's temperature on a named date is a trajectory question and is unanswerable at long range; next March's mean and the count of days above 25 °C are statistics of the attractor and are answerable. That is the entire difference between weather and climate — and most real decisions (how high to build, how much redundancy, how large a position) ask for the statistic.
现在把第一堵墙彻底拆掉,看看后面还有什么。
假设你的系统是离散的:格子、整数、精确的规则,没有小数,没有测量误差,没有舍入。初始状态你知道得分毫不差。这时还有什么能挡住你?
试一个最朴素的系统:一维元胞自动机(cellular automaton)。一排格子,每格黑或白;每一步所有格子同时更新,新颜色只由它自己和左右两个邻居的旧颜色决定。三个格子的黑白组合一共八种,每种指定一个结果,于是一共 256 条可能的规则,编号 0 到 255。→ 参考 · 生命游戏与元胞自动机
从正中间一个黑格子出发。规则 90 长出一个谢尔宾斯基三角(Sierpiński triangle),规整得像织出来的。规整到什么程度呢:第 n 行第 k 格是黑还是白,有闭式答案——它等于杨辉三角(Pascal's triangle,也就是二项式系数)对 2 取余数,你把 n 和 k 代进去直接算,一步都不用跑。这叫可约(reducible):存在一条捷径。
规则 30 只差几个比特,长出来的东西却像撒了一把沙:左半边还有些条纹,中间那一大片至今没人找出任何规律。Wolfram 拿它当伪随机数发生器用了几十年;2019 年他还悬赏三万美元,问的是三个很基础的问题,其中一个是"中间那一列会不会最终变成周期性的"——奖金至今没人拿走。要知道第一百万步中间那格是什么颜色,目前唯一的办法就是把一百万步跑完。这个性质叫计算不可约性(computational irreducibility)。
请把它和第一堵墙的区别看清楚,这是本期最要紧的一句:不可约不是因为你测不准(这里没有测量),不是因为规则复杂(八行写完),也不是因为噪声被放大(这里没有噪声)。它说的是这个过程本身就是它自己最短的描述。你想跳到结果,得找到一条比过程更短的路;对绝大多数这样的规则,那条路不存在。
还有更硬的一层:规则 110 已经被证明是图灵完备的(Turing-complete,即能模拟通用计算机;Matthew Cook,2004)——任何计算机能算的,它都能算。于是"这条规则长远会怎样"这类一般性问题,就和停机问题(halting problem)同级:不是难算,是不可判定,不存在一个算法能对所有输入给出答案。
判定出面前是个不可约的过程之后,别再往"算得更准"上投钱——那笔钱换不回东西。改投三件事:让跑一步更便宜(缩短一次真实试验的周期)、让一步的结果可回滚、让两步之间的观测更密。在没有捷径的世界里,唯一的加速是提高试验吞吐量,不是提高预测精度。这也是"小步快跑"真正的理由——它不是文化偏好,是被这堵墙逼出来的。
EN Strip away measurement error entirely: discrete cells, exact rules, exact initial state. Rule 90 grows a Sierpiński triangle whose cell at row n, column k has a closed form (Pascal's triangle mod 2) — reducible. Rule 30, a few bits away, has no known shortcut: to know the millionth step you run a million steps. That is computational irreducibility, and Rule 110's Turing-completeness (Cook 2004) pushes general questions about such systems up to undecidability.
两堵墙的补救措施几乎正好相反,所以诊断是全部。三个问题就够。
第一问:把测量精度提高一个数量级,预报期会变长吗?会 → 精度墙,那么买观测、买数据、买传感器是有回报的(回报只是加法级的,但确实有)。不会 → 别买了,那笔预算换个地方花。
第二问:把算力提高一个数量级,能看得更远吗?精度墙下:能,因为算力让你跑得起更大的集合、更细的网格。不可约墙下:算力只让你把同样的过程跑快一点——本来要一百万步,快十倍还是一百万步,只是花的时间少了。它压缩的是常数,不是墙。
第三问:我要的是轨迹、终态,还是统计量?这一问能一次废掉很多"预测不了"的哀叹,而且它对两堵墙同时有效:混沌系统的吸引子形状是稳的;不可约的元胞自动机,它的黑格子密度往往也是稳的、能估的。问题换一个问法,墙就可能不在路上了。
还有一个组合情形要小心:现实里的系统常常两堵墙一起撞。经济、生态、组织都是既测不准又不可约的。这时候顺序是固定的——先问第三问(能不能换成统计量),再问第一问(值不值得买精度),最后才认第二堵墙。反过来做,你会先掏钱,再发现掏错了地方。
在任何"我们需要更好的预测"的会上,把这三问过一遍,并把结论写进文档:我们撞的是哪堵墙、因此不再投什么。少了最后半句,预测预算会永远沿着"买更多数据"这一条路加下去——而那条路只在第一堵墙前面有回报。
EN Three questions separate the walls. Does an order of magnitude more measurement precision extend the horizon? Does an order of magnitude more compute? Am I asking for a trajectory, an end state, or a statistic? Under the precision wall, data and compute both pay (additively); under the computation wall, precision pays nothing and compute only shrinks a constant. Real systems often hit both, so ask the third question first.
现在说反面。上面每一条都有它站不住的地方,用之前得知道。
第一,李雅普诺夫指数是个平均量,实际可预测性一天一变。"每一天半翻一倍"是沿轨迹长期平均出来的。真实大气里有些天气形势非常结实,误差长得慢,报十天都靠得住;有些形势一碰就散,三天就崩。业务预报里管这个叫流依赖的可预测性(flow-dependent predictability),而集合的离散度正是用来当场测它的。所以别把"两周"当成每天都成立的硬线,它是个量级上的天花板,不是日程表。
第二,模式误差和初值误差是两回事,而本期的框架只覆盖了后者。集合预报扰动的是初始状态;如果模式本身把物理写错了,五十个成员会一起错向同一边,而离散度看着还很小——你会得到一个自信而错误的概率。气候预测面对的主要就是这一类误差。它不是混沌问题,是结构性问题:加成员没用,得改模型。窄区间不等于可靠,这是集合预报最常被误读的一点。
第三,"计算不可约性"目前不是一条定理。Wolfram 把它挂在一个更大的猜想上(他称之为计算等价性原理,principle of computational equivalence):几乎所有非平凡的规则在计算能力上彼此等价。这个说法有大量案例支持,但它没有被证明。规则 110 的图灵完备性是严格结果,"因此任何具体问题都不可预测"却不是——图灵完备的系统里依然可以有大量具体问题是可判定的、甚至有闭式解。把"不可约"当成"所以算不出来"的通用挡箭牌,是本期最容易犯的错,也是复杂性科学被批评得最多的用法之一。
第四,也是最要紧的:这两堵墙都不为"所以别做决定"背书。可预测性的极限限制的是"说出未来某个具体状态",它不限制你去改变分布。你依然可以让坏的尾巴变薄、让恢复变快、让下注规模扛得住整条分布。放弃点预测不等于放弃干预——恰恰相反,把预测的野心收回来,干预的预算才腾得出来。
EN Four limits. Lyapunov exponents are long-run averages, so real-world predictability is flow-dependent and varies day to day. Ensembles perturb initial conditions and are blind to model error — a narrow spread is not reliability. Computational irreducibility is a conjecture resting on the principle of computational equivalence, not a theorem, and Turing-completeness does not make every specific question about a system unanswerable. And neither wall licenses fatalism: giving up point prediction is what frees the budget for changing the distribution.
因为统计量可测有一个前提:产生这些数据的规则在这段时间里没变,吸引子的形状是稳的。气候变化恰恰是吸引子本身在动的情形,市场的结构也在动。这时"用历史统计估未来分布"这一招失效,而它正是本期给出的替代方案。判据很朴素:这段时间里,规则变了吗?变了的话,你手上的分布是过去那个系统的分布。
能,而且这是最有实用价值的一类发现。整条轨迹算不出来,但某个守恒量、某个平均密度、某个"最终会不会灭绝"的判定,可能有闭式答案。规则 90 与规则 30 的差别提醒的正是这一点:可约性是问题的属性。所以比抱怨"整体不可预测"更值得做的事,是去找那些恰好可约的子问题。
能,方式很具体:如果扰动的方式选错了(只扰动了不重要的自由度),成员会挤在一起,给出一个假的高信心。所以离散度只有在扰动方案本身被检验过之后才有意义。看到很窄的区间时,第一个该问的不是"结论是什么",而是"这个区间是怎么生成的"。
不是,混起来会得出错的结论。NP 困难说的是求解代价随问题规模增长得多快,而且通常伴随着"答案容易验证"这个性质。不可约说的是即使规模固定,也没有比逐步执行更快的路径,而且答案往往不容易验证——你没法在不跑完的情况下检查它对不对。两者可以同时成立,但不是同一堵墙,对应的补救也不同。
剩下三样能训练的:判断一件事属于哪堵墙、把问题改写成可答的形式、以及给自己的区间做校准。这三样都可以被打分,也都会随练习变好。而"猜中具体结果"这项,在很多领域里练不出来——它的上限由系统定,不由你定。