5D Library › 沙盘、宿命与主动推理 · English
第六章 决定论、混沌与能动性
拉普拉斯的妖与洛伦茨的计算机
如果宇宙严格遵守物理定律,一个知道此刻所有粒子位置和速度的智者,就能算出全部的未来——这是拉普拉斯在 19 世纪初表达的决定论图景。很多人由此推论:既然一切都已注定,「改变命运」就无从谈起。
1963 年,气象学家洛伦茨在一组只有三个变量的简化对流方程中发现了一件事:方程完全是确定的,没有任何随机项,但两个起点几乎完全相同的解,经过一段时间后会走向完全不同的方向 (Lorenz 1963)。这就是后来所说的对初始条件的敏感依赖,通俗地叫作「蝴蝶效应」。
取 ,,。
推导
用四阶龙格–库塔法积分两条相距 的轨迹,并用反复重新归一化的方法估计最大李雅普诺夫指数 (Benettin et al. 1980)。
# The Lorenz (1963) system, sigma = 10, rho = 28, beta = 8/3, integrated with fourth-order Runge-Kutta.
# Two runs start 1e-9 apart. Their separation grows roughly as exp(lambda t); lambda (the largest
# Lyapunov exponent) is estimated by repeatedly renormalising a nearby trajectory (Benettin's method).
import math
S, R, B = 10.0, 28.0, 8.0 / 3.0
def deriv(p):
x, y, z = p
return (S * (y - x), x * (R - z) - y, x * y - B * z)
def rk4(p, h):
k1 = deriv(p)
k2 = deriv([p[i] + h / 2 * k1[i] for i in range(3)])
k3 = deriv([p[i] + h / 2 * k2[i] for i in range(3)])
k4 = deriv([p[i] + h * k3[i] for i in range(3)])
return [p[i] + h / 6 * (k1[i] + 2 * k2[i] + 2 * k3[i] + k4[i]) for i in range(3)]
def dist(p, q):
return math.sqrt(sum((a - b) ** 2 for a, b in zip(p, q)))
H = 0.01
a = [1.0, 1.0, 20.0]
for _ in range(2000): # settle onto the attractor
a = rk4(a, H)
b = [a[0] + 1e-9, a[1], a[2]]
print("time | separation of the two runs")
for step in range(1, 4001):
a, b = rk4(a, H), rk4(b, H)
if step % 500 == 0:
print(f"{step * H:4.0f} | {dist(a, b):.2e}")
p = a[:]; q = [p[0] + 1e-8, p[1], p[2]]; total = 0.0; T = 0
for step in range(1, 100001):
p, q = rk4(p, H), rk4(q, H)
if step % 10 == 0:
d = dist(p, q); total += math.log(d / 1e-8); T += 10 * H
q = [p[i] + (q[i] - p[i]) * 1e-8 / d for i in range(3)]
lam = total / T
print(f"largest Lyapunov exponent ~ {lam:.3f} per unit time")
for err in (1e-9, 1e-6, 1e-3):
print(f"initial error {err:.0e}: grows to size 1 after about {math.log(1 / err) / lam:4.1f} time units")
# time | separation of the two runs
# 5 | 6.16e-09
# 10 | 2.70e-07
# 15 | 2.47e-05
# 20 | 1.44e-03
# 25 | 4.96e-02
# 30 | 1.02e+01
# 35 | 2.14e+01
# 40 | 8.30e+00
# largest Lyapunov exponent ~ 0.917 per unit time
# initial error 1e-09: grows to size 1 after about 22.6 time units
# initial error 1e-06: grows to size 1 after about 15.1 time units
# initial error 1e-03: grows to size 1 after about 7.5 time units两条轨迹的距离大约每过一个时间单位放大 倍。程序估计的最大李雅普诺夫指数约为 0.92,与文献中常见的约 0.906 接近。由此得到可预测期限:初始误差 约 23 个时间单位后长到与吸引子同一量级,误差 只需约 7.5 个时间单位。初始测量每精确一千倍,可预测期限只增加约 7.5 个时间单位:精度的提升只换来线性的预测延长。
证据
莱特希尔在 1986 年代表力学界公开承认:牛顿力学中普遍存在的混沌意味着,早先关于「确定性系统原则上可长期预测」的信念是错误的 (Lighthill 1986)。
混沌说明了什么
混沌动力学为本书的论题提供了一个有用但有限的类比。
它说明,决定论不等于可预测。即便一个系统完全服从确定的规则,有限精度的知识也只能支撑有限时间的预测。一个看起来被「注定」的轨迹,在足够长的时间尺度上,其走向取决于当下极小的差异。
它也说明,敏感依赖是双向的。小的差异可以放大成大的差异,但放大的方向不受控制:在混沌系统中,一个微小的改变既可能把轨迹推向更好的区域,也可能推向更坏的区域,而且无法事先知道。把蝴蝶效应理解为「一个小小的善念必然带来大的福报」,是对它的误读。
注
核对后的修正。 最初的设想认为混沌动力学说明了决定论与能动性的相容。需要说清楚:混沌不能证明自由意志。一个混沌系统仍然是完全确定的;它的不可预测来自我们知识的有限,而不是系统本身的「选择」。混沌只说明,即使在决定论的世界里,长期结果对当前状态(包括我们自己的决定)高度敏感,「一切早已写定、个人的选择无关紧要」这种推论不成立。
相容论
关于决定论与自由意志,哲学上有一个长期的立场叫相容论:自由不在于行为没有原因,而在于行为由行动者自己的理由、欲望和反思所引起。法兰克福认为,人的自由意志在于能对自己的欲望形成「二阶欲望」,即想要拥有某种欲望 (Frankfurt 1971);丹尼特则论证,我们值得想要的那种自由,与决定论完全相容 (Dennett 1984)。
在本书的框架里,相容论可以这样理解:一个人的先验和行为模式是由过去塑造的,这是决定论的一面;但他的生成模型本身也包含对自己的模型,可以把自己的模式当作观察对象,并据此改变行动——这种改变同样有原因,原因就是他对自己的觉察和新的经验。第二章的智能体在沙盘里坚持敞开,这一行为也是被引起的,却改变了它此后的整个轨迹。
假说 · 尚未验证
尚未确立。 在一段时间内反复出现的行为模式中,个人对模式的明确觉察(能够在事前说出「我现在又要设防了」)是行为改变的预测因子,而且这种预测作用独立于改变的意愿强度。该假说预测:在一项为期八周的日记研究中,事前觉察的频率可以预测此后两周设防行为的减少,控制改变意愿后仍有至少 0.2 的标准化效应。如果控制意愿后效应接近零,假说就被推翻。
小结
混沌不给人以自由,但它拆掉了一个常见的宿命论推理:「世界是决定论的,所以未来已经定了,所以我的选择无关紧要。」在一个对当前状态敏感的世界里,当前状态包括我们自己,以及我们对自己的认识。
参考文献
Fan, Y. (2026). The Sandbox, Determinism and Active Inference: Markov Blankets, Variational Free-Energy Minimisation, Exploration-Exploitation Trade-offs and East Asian Causality in Computational Neuroscience [沙盘、宿命与主动推理] (Version 1.0.0). 5D Library. https://doi.org/10.5281/zenodo.23738794 · Licensed under Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International (CC BY-NC-ND 4.0).