确定的世界,仍然算不出来(A deterministic world you still cannot compute)
2026-07-26 · 动力学与不可预测性
"蝴蝶效应"几乎总被读成"小事也能改变世界"。它的原意差不多是反的:你永远不可能知道那只蝴蝶在哪儿——所以哪怕世界完全由铁律运行、一丝随机都没有,长期预测照样出局。
天气预报能报到一周,报不到一个月。你大概会想,这是数据不够、算力不够、模型不够细。三样全补上,答案还是一周多一点。
反直觉的地方在这儿:这个上限不来自我们不知道的东西,恰恰来自我们知道的东西。大气服从的方程是确定的——同样的初始状态输进去跑一万次,得到一万条一模一样的轨迹,中间没有掷过一次骰子。确定,然后算不出来。把这两件事拆开,是这门学科最贵的一课。
本站讲"预测不了"的有好几期,机制各不相同:本期讲敏感依赖(sensitive dependence)——初值里的微小差异被指数放大;第 9 期讲一个参数怎么把系统一路推进混沌;第 11 期把预测的极限分成两类(精度极限 vs 计算不可约性);第 12 期讲噪声本身能干什么。本期只回答一个问题:为什么"确定"不蕴含"可预测"。
1961 年冬天,麻省理工的气象学家爱德华·洛伦兹(Edward Lorenz)在一台叫 Royal McBee LGP-30 的机器上跑一个玩具天气模型。那机器每秒只算得动几十次乘法,慢到你可以盯着结果一行行打出来。
他想把之前的一段结果重看一遍,就没有从头开始,而是从中途起跑——把上一次打印出来的那行数字重新敲了进去。按理说,接下来的走势应该和上次分毫不差。
不是。新旧两条曲线一开始还贴着,然后慢慢分开,几个模拟"月"之后已经完全是两种天气了。
排查了半天,问题出在打印机上:为了省纸,它把内存里的 0.506127 印成了 0.506。洛伦兹敲进去的,是一个在千分之一位上被截断的初值。他后来把这件事整理成 1963 年的论文《Deterministic Nonperiodic Flow》——"确定性的非周期流"。标题本身就是那个发现:确定的,而且永不重复。
这张图的关键不是"它们最后分开了",而是前面那一段有多像。误差从第一秒起就在,只是还小;它一直在长,长到和系统本身一样大的那一刻,预报就变成了瞎猜。
所以"确定论不等于可预测"这句抽象的话,具体含义就是这张图:方程完全决定一切,可你对初值的了解永远只有有限的精度——而有限的精度只能买到有限的时间。
EN In 1961 Edward Lorenz restarted a toy weather model from a printout that had been rounded from 0.506127 to 0.506. The two runs tracked each other, then drifted apart into completely different weather. Nothing random was involved: finite knowledge of the initial state buys only a finite span of prediction.
上一节说"误差被放大",这一节把它变成一个能算的量——本期最有用的一步就在这里。
在混沌系统里,两条邻近轨迹的距离大致按指数拉开:d(t) ≈ d₀ · eλt。这里 d₀ 是初始的那点差别,λ 是这个系统放大误差的速率,叫李雅普诺夫指数(Lyapunov exponent)。λ 大于零,就是"混沌"这个词最核心的技术含义。洛伦兹那组方程 λ ≈ 0.9,也就是误差每过大约 0.77 个时间单位翻一倍。
现在把这条式子倒过来解一次。设你能容忍的最大误差是 D,那么你的预测能维持多久:
T ≈ (1/λ) · ln(D / d₀)
注意 d₀ 在对数里面。这一个细节决定了一切:把初值精度提高 10 倍,可预测的时间只增加 ln10/λ ——一个常数。再提高 10 倍,再加同样一小段。精度是指数级的投入,时间是线性的回报。
换成大气的数字:误差大约 1.5 天翻一倍。即便初始场完美到只剩仪器噪声,中纬度天气的可预测上限也就在两周上下。按这个翻倍速度算一下:想把 5 天预报做成 10 天,得把初始误差压到大约十分之一;想再往后推 5 天,再压十分之一——而这已经贴着上限了,两周之后压多少都没用。这不是工程难度的问题,是兑换率的问题。
给你依赖的每一个预测标一个有效期:它的误差多久翻一倍 × 你能容忍几倍误差。超过有效期的点预测,从仪表盘上撤掉——不是改进它,是撤掉它,换成区间或情景。同样,别再为"提高精度"追加投入之前不问回报:在混沌系统里,投入是指数的,买回来的时间是线性的。
EN Nearby trajectories separate as d(t) ≈ d₀eλt, so the horizon is T ≈ (1/λ)ln(D/d₀). Because d₀ sits inside a logarithm, a hundredfold gain in initial precision buys only a fixed extra span. Atmospheric errors double in roughly 1.5 days, capping midlatitude weather at about two weeks.
这是最容易混过去的一步,也是这个词在实践中唯一值钱的地方:乱,不等于随机。
把一段混沌信号和一段噪声并排画成曲线,多数时候你分不出来——两条都在毫无规律地上下窜。可它们的差别在另一种画法下一目了然。
换一种坐标:不画"某个量随时间怎么变",而是画状态。取信号在时刻 t 的值当横坐标,取它在稍晚一点(比如 0.1 个时间单位之后)的值当纵坐标,每个时刻落一个点。这叫延迟嵌入(delay embedding),是拿一条一维的记录去反推系统状态的标准手法。
左边那个形状就是奇怪吸引子(strange attractor):系统的状态被约束在一个维数很低的形状上,永远绕,永不重复,也永不离开。→ 参考 · 洛伦兹系统 → 参考 · 相空间与吸引子
右边没有形状可言。噪声的"下一个值"和"这一个值"之间没有任何约束,所以它把方框填满。
这个区别落到操作上就是一条判据:在历史里找到与当前最像的几个状态,看它们接下来一小段是不是走向一致。一致,说明有确定性骨架,短期可预测,建模有回报;不一致,说明你面对的是噪声,再复杂的模型也只是在拟合过去。
一句话记住这两者的分别:混沌是短期高度可预测、长期完全不可预测;随机是两头都不可预测。
在为一堆"看起来有规律"的数据立项建模之前,先做这一个测试:取历史上与当前最相似的 k 个状态,看它们随后一小段的走向是否一致。一致 → 有骨架,短期预测值得投入。不一致 → 停掉建模预算,改做对冲和容错,因为你要预测的东西在这个分辨率下就是噪声。
EN A chaotic time series and a noise series look alike. Re-plot them in state coordinates — value now against value slightly later — and the chaotic one collapses onto a thin surface while the noise fills the box. The operational test: do the nearest historical analogues go on to do the same thing for a short while? If yes there is deterministic structure worth modelling; if no, it is noise.
不可预测的是轨迹,不是统计。这句话是本期全部实用价值的来源。
上一节那个形状有两叶(洛伦兹那只著名的蝴蝶,完整的样子在参考页上)。你说不出第 3000 步落在左叶还是右叶;但你可以相当准地说出:长期看落在左叶的比例是多少、数值的分布长什么样、极端值多久出现一次。这些量对初值不敏感——恰恰相反,它们正是把初值的差别抹平之后剩下来的东西。
天气和气候的关系就在这儿。气候不是"很长的天气预报",它问的是另一个问题:不是"那天下不下雨",而是"这套系统的雨量分布往哪儿移"。所以"连下周都报不准,凭什么报 2100 年"这个诘难,把两类问题混为一谈了——一个问轨迹,一个问吸引子的统计。
第二件还能做的事,是把"一条预测"换成"一群预测":集合预报(ensemble forecast)。既然初值必然带误差,那就别只跑一条轨迹;在初值附近撒一小片云,跑几十条,看它们什么时候散开。欧洲中期天气预报中心和美国国家气象中心从 1992 年起把这件事做成了日常业务。
把预算从"一个更好的模型"挪到"同一个模型的一群初值"。汇报格式随之改:不给一个数,给一个扇形——外加一句"我们的集合在第几步散开"。离散度本身是要报的第一项,因为它是你今天这次预测到底可不可信的唯一诚实度量。
EN Trajectories are unpredictable; the attractor's statistics are not. That is the difference between weather and climate — one asks which path, the other asks how the distribution shifts. Hence ensemble forecasting: perturb the initial state, run many members, and report the spread. How fast the ensemble diverges is itself the measure of today's predictability.
"混沌"是复杂性科学里被借用得最随便的词之一。用它之前,四条边界。
第一,"蝴蝶效应"的流行读法基本是反的。1972 年洛伦兹在美国科学促进会做报告,题目叫"巴西一只蝴蝶扇动翅膀,会不会在得州掀起一场龙卷风?"——这个标题还是会议召集人替他起的。它想说的是:既然如此微小的扰动都足以改写后果,那么任何一次天气都无法被追溯到某个具体的原因。而流行版把它读成了"你的小小善举可以改变世界",方向正好拧了:混沌不保证任何单个扰动可以被识别、被瞄准、被用来达成什么。它保证的是不可归因。
第二,在真实数据里"发现混沌"极难,而且当年发现的大多没站住。1980 年代末到 90 年代,经济、生态、心电、脑电里都曾冒出大量"找到低维混沌"的论文。等到替代序列检验(surrogate data test)这类严格方法普及之后,相当一部分结论撑不住——短序列、非平稳、带噪声的数据会让那些指标给出假阳性。癫痫发作预警是最有代表性的例子:早期基于混沌指标的算法在严格的盲测里大多没能超过随机基线。能看出"有确定性结构",和"能预测",是两件事。
第三,混沌不等于不可控——这一条最反直觉。1990 年 Ott、Grebogi 与 Yorke 提出:正因为系统对扰动极其敏感,用非常小的扰动就能把它稳住。奇怪吸引子里嵌着无数条不稳定的周期轨道,只要在合适的时刻轻轻推一下,就能让系统一直沿着其中一条走。这套方法后来在激光、电路、心律实验里都实现过。所以"反正是混沌的,认命吧"是个错误结论:不可预测与不可干预是两回事。
第四,"两周极限"不是每天都成立的承诺。李雅普诺夫指数是长时间的平均值。实际的可预测性随系统当前所处的位置剧烈变化——有的天气型能报十天,有的三天就散。所以真正该报的从来不是"我们的模型能报几天",而是"今天这一次能报几天"。集合的离散度正是拿来回答这个问题的。
EN Four limits. The popular butterfly effect inverts the original claim: chaos means causes cannot be traced, not that small deeds matter. Most 1980s–90s discoveries of low-dimensional chaos in real data failed once surrogate-data tests arrived. Chaos is not uncontrollable — OGY control exploits sensitivity to stabilise unstable periodic orbits with tiny nudges. And λ is a long-run average, so the horizon varies from day to day.
由你能容忍的误差定,不由系统定。同一个系统,要求"误差不超过 1%"和"不超过 50%",可预测时间差着一个常数倍(就是那条 ln(D/d₀) 的公式)。这带来一个实际的操作:与其去改进模型,不如先去谈判可容忍的误差——后者常常便宜得多,而且效果是同一个量级的。
因为在有限精度下,两者的可用信息是一样的。这提示一件事:确定与随机的区别不是关于世界的,而是关于模型的分辨率。同一条河流,在分子尺度上是确定的力学,在工程尺度上用湍流的统计描述更划算。选哪一种不看"世界本来是什么",看你手上的测量精度和你要回答的问题。
不能直接当。集合只覆盖了初值的不确定性,模型本身的误差(物理过程的近似、分辨率不够)不在里面,所以集合常常过于自信——散得比真实的不确定性小。业务上的做法是拿历史检验去校准它(可靠性图、分级技巧评分)。一句可迁移的话:任何自产的不确定度都要拿现实校一遍,否则它量的是模型的自信,不是世界的模糊。
意义在于它规划的应该是另一类对象。轨迹不可规划,但约束、边界条件、系统的结构参数是可规划的——它们改变的是吸引子的形状与统计,而那正是长期唯一可预测的东西。判断一份长期计划的质量,看它承诺的是"三年后我们会到达某个点",还是"三年后我们的分布会移到哪儿"。