Skip to content

混沌:一个方程全都知道的系统,为什么还是算不出来 ​

「跟着 AI 学任何东西」系列第 51 篇。降水概率那篇留了一个坑没填:为什么要用几十个略有差异的初始条件各跑一遍,而不是把初始条件测准一点。这一篇填它。

顺带回答那个几乎人人吐槽过的问题:天气预报为什么总有个准头的上限。

一个因为偷懒而被发现的东西 ​

1961 年,MIT 的气象学家 Edward Lorenz 在用当时的计算机跑一个简化的天气模型。

他想重跑一段之前算过的结果,为了省时间,没有从头开始,而是从中途的一个数据点接着算。输入的时候,他把打印稿上的 0.506127 敲成了 0.506——打印输出只保留了三位小数。

在他的预期里,这点差别小到无所谓,两次结果应该几乎重合。

结果是:两条曲线一开始确实贴在一起,然后慢慢分开,在他这个模型里差异大约每四天翻一倍,到后来完全看不出它们曾经是同一条。

这不是程序出错,也不是计算机精度不够。这是一类系统的固有性质,后来被叫做混沌。

一、混沌不是随机——这是最关键的区分 ​

「混沌」这个词在日常里几乎等于「乱」,所以很容易被理解成「随机」。这个理解会让整件事失去意义。

混沌系统是完全确定的:

方程写在那里,没有任何随机项。给定完全相同的初始条件,它每一次都会给出完全相同的结果。

它的问题不在方程,在初始条件:

初始条件哪怕只差一丁点,两条轨迹也会指数式地分开。

这两句话合起来,才是混沌的定义:确定,但不可预测。

而「不可预测」的来源不是系统里有什么神秘的东西,而是一个非常朴素的现实——你永远无法把初始条件测到无限精确。观测总有误差,而在混沌系统里,误差不会老老实实待着,它会被指数放大。

不是「我们还不够聪明」,而是「误差会被系统本身放大」。这两件事的性质完全不同:前者可以靠努力解决,后者不能。

二、复杂系统才会混沌吗?不 ​

还有一个直觉需要纠正:混沌听起来像是「系统太复杂了才会有的毛病」。

不是。极其简单的规则就能产生混沌。

有一个著名的例子简单到可以在纸上算:

从一个 0 到 1 之间的数出发,每一步都做同一个运算——新值 = 3.9 × 旧值 × (1 − 旧值)。

就这一行。没有随机、没有外部输入、没有复杂结构。

但如果你取两个几乎一样的起点(比如 0.5000 和 0.5001),分别迭代下去,它们会在前二十多步紧紧贴着——贴到你在图上只看得见一条线——然后在很短的几步里分开,之后再无关系。

两个几乎相同的起点,走出两条完全不同的路

这张图值得多看两眼,因为它推翻了两个直觉:

  • 混沌不需要复杂。 一行算式就够了。
  • 分开不是渐进的,是「先稳后崩」。 前面一段几乎完全一致,然后在很短的时间里彻底失去关系——这正是「预报在某个时限之前挺准,之后突然没用」的数学原型。

三、于是「预测」这件事有了一个天花板 ​

现在可以回答开头那个问题了。

如果误差每隔一段时间就翻一倍,那么把初始观测精度提高一倍,能换来的只是多一个翻倍周期的可预测时长。

这是一笔很不划算的买卖:

精度提高 1000 倍,换来的大约只是 10 个翻倍周期。 投入是指数级的,回报是线性的。

对真实大气来说,这意味着存在一个内禀的可预测性上限——业界常引用的数量级是两周左右。这个上限不是算力问题,也不是模型问题:就算你有一台完美的计算机和一套完美的方程,只要初始观测还有哪怕极小的误差,超过这个时限之后的具体天气就是算不出来的。

(这也顺带解释了降水概率那篇里的一个数字:预报技巧大约每十年提升一天。进步是真实的,但它在朝着一堵墙走。)

而这正是集合预报存在的理由:

既然测不准初值、且误差必然被放大,那就干脆承认这件事——撒出几十个略有差异的初始条件各跑一遍,看它们分不分得开。

  • 几十条未来彼此接近 → 这几天的形势稳,可以给出高把握的预报。
  • 几十条未来早早散开 → 说明这几天正处在敏感区,这个「散」本身就是最有价值的信息。

换句话说:混沌不允许你算准天气,但它允许你算出「今天这个预报有多可信」。 概率预报不是回避问题的托词,它是对这个数学事实的正面回应。

四、蝴蝶效应被误解成了因果 ​

「巴西的一只蝴蝶扇动翅膀,可能在得州引起一场龙卷风」——这是 Lorenz 1972 年一场演讲的标题,也是被误用得最厉害的一句科学比喻。

流行版本把它读成了因果:那只蝴蝶导致了龙卷风。于是延伸出一堆「小事改变世界」的说法。

但原意不是这个。它说的是预测的极限:

一个小到你不可能观测、不可能记录的扰动,足以让几周之后的结果变成另一个样子。所以,你无法在初始条件里省略任何东西。

这两种读法的区别很实在:

  • 因果读法说:找到那只蝴蝶,就能控制龙卷风。
  • 原意说:这样的「蝴蝶」有无穷多只,它们同时在起作用,所以谁都不是原因,而这恰恰是为什么算不准。

顺带一提,龙卷风该不该出现是由大尺度环流决定的,蝴蝶改变的是具体在哪、什么时候这类细节。混沌影响的是轨迹,不是系统的整体性质——这一点直接引出下一节。

五、混沌不代表什么都不能预测 ​

这是最容易被忽略、但最重要的一条。

混沌系统的单条轨迹不可长期预测,但它的统计性质往往非常稳定。

一个直接的例子就是天气和气候的区别:

  • 天气是轨迹:某天某地下不下雨。三周以后的,算不出来。
  • 气候是统计:这个地方一年大约多少降水、平均气温多少、极端事件多久出现一次。这些可以研究,而且它们不受「三周以后算不准」这件事影响。

这个区分经常被混着用——「天气预报三天后都不准,凭什么谈几十年后的气候」这句话,逻辑上就是把轨迹和统计当成了一回事。

算不出下个月 15 号的天气,和算得出这个地区的气候,两件事完全可以同时成立。就像你算不出下一次掷骰子是几,但你很清楚一万次的平均值。

同样的结构在别处也成立:单个分子的运动不可预测,但温度和压强非常稳定;单次心跳的间隔有变异,但心率的统计特征是临床指标。

所以,混沌到底改变了什么 ​

它没有让世界变得不可知,它做的是把「可知」重新划了一次边界:

混沌之前的默认假设混沌之后
确定的方程就能算出长期结果不一定——误差会被指数放大
算不准说明模型不够好可能是系统的固有性质
预测给一个数给一个分布,外加「这次有多可信」
长期无从谈起统计性质仍然可以预测

我觉得这是这个题目里最值得带走的一点:承认不可预测,本身是一种知识的进步——它把力气从「把数算得更准」转向了「搞清楚这次的数有多可信」。

降水概率那篇说,概率预报的对错在长期频率上被判定。现在可以补上这句话的另一半了:它之所以必须是概率,不是因为气象学不够成熟,而是因为大气本身就是这么一个东西。

本文为学习笔记。文中「误差每四天翻倍」是 Lorenz 当年那个简化模型里的数量级,不同系统、不同尺度差别很大;「两周左右」是大气可预测性上限的常被引用的量级,具体数值随天气形势与变量而异。

books.sdx88.com