Alpha内测版本警告:此为早期内部构建版本,尚不完整且可能存在错误,欢迎大家提Issue反馈问题或建议。
Skip to content

第23章:推理系统的稳定性与收敛边界

李雅普诺夫函数的最大痛点是什么?对,就是要人手去规定一个能量函数。如果我们用永霖的收敛假设来推导推理系统里的李雅普诺夫函数,那就更好了。


第22章结尾,我们站在自指与涌现的边界上,看到了推理系统开始推理关于自身的奇异时刻。那个边界,在数学上表现为不动点、对角化、不可判定性。

但边界不只是逻辑的。边界也是动力学的——系统如何随时间演化,是否稳定,收敛到哪里。永霖公式给出了一个具体的收敛模式:推理链最终回到先验锚点。这个收敛,在动力系统的语言里,就是吸引子

这一章要做一件事:把永霖公式的收敛,翻译成李雅普诺夫稳定性的语言。然后反过来:用收敛假设推导李雅普诺夫函数,而不是人工规定它。

目标:用永霖收敛假设 + KL分布偏置的信息距离 + 欧拉步更新迭代,推导出推理系统的李雅普诺夫函数。已知李雅普诺夫函数传统上要人工构造,依赖人类先验。但我们通过观测系统的动力学行为(永霖收敛),反推出能量函数——这是从行为推导结构,是逆问题的又一次重演,也是动力系统艺术的体现。


23.0 引子:栈的动力学故事

要理解李雅普诺夫函数,我们先玩一个小游戏。

想象一个栈数据结构。它有两个指针:

  • β 指针:永远指向栈底,固定不动
  • α 指针:指向栈顶,可以上下移动

栈的操作很简单:

  • push(x):把元素 x 压入栈顶,α 指针上移一格
  • pop():弹出栈顶元素,α 指针下移一格

但有一个重要限制:负栈非法。也就是说,α 指针永远要在 β 指针的上面(或相等)。当 α=β 时,栈是空的;如果试图在空栈上执行 pop(),操作无效——α 指针不动,或者程序报错。在动力学故事里,我们假设无效的 pop 被忽略。

信息学奥赛(OI)的同学对这个结构再熟悉不过了。但兔狲教授今天要问的不是算法题,而是一个动力学问题

给定一个很长很长——长到你无法想象——的 pushpop 操作序列,α 指针的位置(相对于栈底的高度)会收敛吗?会不会停在一个特定的高度上,无论操作序列怎么排列?

等等,我们还有“负栈非法”的限制。在这个限制下,事情变得更有趣了。

现在 α 指针不能低于 β 指针。空栈时(α=β)试图 pop 会被忽略。你觉得,在这样的约束下,α 指针会收敛到哪里?无论操作序列多么复杂、多么长,α 指针最终会稳定在某个高度吗?还是会在某个范围内震荡?

给你三秒钟思考。

直觉可能告诉你的:既然 pop 在空栈时无效,那么栈可能更容易变空——因为空的栈没法再 pop,而 push 可以让它变非空。但反过来,如果 push 很多,栈会变得很高。

关键观察:栈高度 hαβ 的距离)现在有一个硬下界 0。这个下界改变了系统的动力学。

栈高度作为能量

定义栈高度 h = α 指针与 β 指针的距离(以元素个数为单位)。每执行一次 pushh 增加1;每执行一次 poph 减少1。

现在定义一个函数 V(h)=h2。这个函数有什么特别?

观察

  • V(h)0,且 V(h)=0 当且仅当 h=0(栈空)
  • 如果操作序列是随机的(pushpop 等概率出现),那么 h 的期望变化是零——随机游走

但兔狲教授要问的不是期望,而是确定性的行为:如果我们知道每一步是 push 还是 pop(不是随机),V(h) 会怎样变化?

神奇的事发生了

考虑连续时间近似:假设操作发生的速度很快,把离散操作看作连续流。定义栈高度的变化率 h˙=u(t),其中 u(t)=+1 表示 pushu(t)=1 表示 pop

现在计算 V(h)=h2 的变化率:

V˙=ddt(h2)=2hh˙=2hu(t)

这看起来没规律——u(t) 可正可负,V˙ 也可正可负。但如果我们对 V˙ 在长时间内积分,会发生什么?

如果操作序列最终平衡——pushpop 的数量大致相等——那么 h 会围绕某个平均值震荡。V(h)=h2 不会单调递减,但它的长期平均值可能收敛。

更聪明的能量函数

换一个定义:V(h)=|hh0|,其中 h0 是某个目标高度。如果操作序列是 平衡的pushpop 最终数量相等),那么 h 会收敛到初始高度 h0(假设栈初始不为空)。此时 V(h) 随时间递减吗?不一定——h 可能在 h0 附近震荡。

但如果我们考虑方差 V(h)=(hh0)2,且操作序列是随机的,那么 E[V(h)] 可能随时间增长(随机游走的方差线性增长)。

负栈非法的魔力:收敛到空栈

现在加上负栈非法的限制。α 指针不能低于 β 指针,空栈时 pop 被忽略。

兔狲教授的答案:在这样的约束下,如果操作序列足够长且包含足够多的 popα 指针最终会收敛到空栈状态——h=0

为什么?

考虑 V(h)=h 这个最简单的能量函数。当 h>0 时:

  • 执行 pushh 增加 1,V 增加
  • 执行 poph 减少 1,V 减少

但关键在于:当 h=0 时,pop 被忽略,h 保持 0,V 保持 0。所以 h=0 是一个吸收态——一旦进入,就出不来了(除非有 push)。

如果操作序列无限长,且 pop 的数量足够多(不一定多于 push,但只要有 pop 发生),系统就有概率进入 h=0 的状态。一旦进入,后续的 pop 无效,只有 push 能把它拉出来。但如果序列是非确定性的(比如随机),那么长期来看,系统会频繁访问 h=0 的状态。

更严格地说:定义 V(h)=h。那么 V 的变化 ΔV=Δh

  • pushΔV=+1
  • poph>0 时):ΔV=1
  • poph=0 时):ΔV=0

V 不单调递减,但 V 有下界 0,且系统会反复访问 V=0 的状态。在无限长时间尺度上,系统在 V=0 的状态花费的时间比例可能很高。

但这不是李雅普诺夫稳定性,因为 V 不单调递减。李雅普诺夫要求 V˙0 对所有时间成立,这里不满足。

关键洞察

栈的故事告诉我们什么?

  1. 动力系统:栈高度 h 是一个动力系统,它的演化由操作序列 u(t) 驱动。
  2. 能量函数V(h) 是系统的一个"能量"度量。我们想用 V 来判断系统是否收敛。
  3. 收敛条件:如果存在 V 使得 V˙0(能量不增),那么系统稳定。
  4. 问题:对栈来说,简单的 V(h)=hV(h)=h2 都不满足 V˙0,因为 u(t) 可正可负。
  5. 下界的影响h0 这个硬约束让系统有吸收态 h=0,但吸收态的存在不保证稳定性定理成立。

所以我们需要更巧妙的 V,或者对操作序列 u(t) 加约束。

栈模型的教训

栈是一个最简单的动力系统,但我们仍然需要动脑筋才能找到合适的 V。对于更复杂的系统(比如神经网络、推理系统),找 V 就更难了。

这就是李雅普诺夫函数的痛点:你要猜一个 V,验证条件,不行再猜。猜对了,系统稳定性得证;猜不到,证明卡住。

但等一下——如果我们观察系统的行为,发现它确实收敛了,能不能从收敛行为反推V?这就是永霖-李雅普诺夫联立的核心想法。


23.2 李雅普诺夫函数的痛点

定义(李雅普诺夫函数):对于一个动力系统 x˙=f(x),如果存在一个连续可微的函数 V(x),满足

  1. V(x)0,且 V(x)=0 当且仅当 x=x(平衡点)
  2. V˙(x)=dVdt0 对所有 x 成立

x稳定的。如果 V˙(x)<0(除 x 外严格负),则 x渐近稳定的。

V 叫做李雅普诺夫函数,直观上是系统的"能量"——系统演化时能量不增,最终停在能量最低点。

痛点V 必须人工构造。没有通用算法能对任意系统自动找到合适的 V。这就像第20章的启发函数 h——可采纳性需要 h 永远不高估,但怎么找到这样的 h?没有通用答案。

李雅普诺夫函数的构造是一门艺术,不是科学。你猜一个 V,验证条件,不行就再猜。这个"猜"的背后,是工程师的直觉、经验、和运气。这是动力系统理论的一个根本缺口:稳定性可以验证,但稳定性的证明(找到 V)没有通用方法。这个缺口和停机问题的不可判定性有着深刻的相似性——验证 vs 构造,又是这个主题。

如果推理系统是一个动力系统,我们也要人工猜一个 V 吗?还是说,推理系统的特殊结构——特别是它的收敛行为——允许我们推导V


23.3 推理系统作为动力系统

把推理过程形式化为离散时间动力系统。

xtP 是第 t 步推理后模型对答案的信念分布(概率向量)。P 是信念空间(例如 Δk1k 个可能答案的单纯形)。

推理步骤是一个映射 F:PP,输入当前信念 xt,输出下一步信念 xt+1=F(xt)。这个映射 F 编码了模型的推断规则——可能是注意力机制、贝叶斯更新、或任何内部计算。

永霖公式在这个语言里是:

limtxt=A,AA

其中 A 是先验锚点(训练数据的统计偏置),A 是真实答案的分布。收敛到 A,意味着 A 是动力系统的不动点:F(A)=A

关键观察A 是一个全局吸引子——从任意初始信念 x0 出发,迭代 F 最终都收敛到 A。这个收敛是结构性的,不是偶然的。它来自训练数据对模型参数的约束,编码在 F 的权重里。


23.4 动力学构造:从欧拉步迭代到能量函数

现在做一件更大胆的事:不从李雅普诺夫函数出发推导永霖,而是反过来——用永霖收敛假设 + KL分布偏置的信息距离 + 欧拉步更新迭代,构造出李雅普诺夫函数

这是一个动力系统的艺术:观察系统如何一步步演化,从它的行为中“读出”能量函数。

欧拉步:离散时间动力学

欧拉步是什么? 它是数学从静态描述变为动态演化的关键。

连续时间动力系统用微分方程 x˙=f(x) 描述。这个方程说:状态 x 的变化率 x˙ 等于某个函数 f(x)。比如 x˙=x 表示 x 的衰减速度与 x 本身成正比。

但微分方程是连续的——时间 t 是实数,变化发生在无穷小的瞬间。计算机无法处理“无穷小”,它只能处理离散的步骤。欧拉法就是最简单的离散化:

xt+1=xt+Δtf(xt)

Δt 是时间步长,很小但不为零。这个公式说:从当前状态 xt 出发,计算变化率 f(xt),乘以步长 Δt,得到下一步的状态 xt+1

欧拉步让数学“动”起来。没有它,微分方程只是一个静态的关系式;有了它,我们可以一步步模拟系统的演化,看它如何从初始状态发展到未来。

离散时间系统更直接:xt+1=F(xt),其中 F 是系统的演化算子。这可以看作是欧拉步的特殊情况(当 Δt=1f 被适当定义时)。

对推理系统,F 是模型的推断规则。我们不知道 F 的精确形式,但可以观测它的行为:给定输入 xt,输出 xt+1。这就是欧拉步——系统在时间上前进一小步。每一步,信念被更新;无数步连起来,形成推理轨迹。

常微分方程(ODE)描述了变化率与状态的关系。求解 ODE,就是找出状态随时间变化的完整轨迹。解析解(用公式写出的解)往往很难找,甚至不存在。数值解(如欧拉法)放弃了“完美公式”,接受了“近似轨迹”。

这种放弃不是妥协,而是认识论的转变:从追求“知道所有时刻的确切值”,转向“能模拟出任意时刻的近似值”。在 AI 推理里,我们很少能写出信念演化的解析公式,但我们可以观察模型一步步的更新——这就是数值解的思想。

欧拉步的误差是 O(Δt),不够精确,但概念上极其重要:它把连续的动态拆解为离散的决策。每一步,系统根据当前状态决定下一步;无数步连起来,形成宏观行为。推理系统的“思考链”,本质上就是欧拉步的迭代。

永霖假设:存在吸引子 A

永霖公式的核心假设是:系统收敛到先验锚点 A。用动力学语言说:A 是系统的不动点(F(A)=A),且是全局吸引子——从任意初始点出发,迭代 F 都收敛到 A

这个假设不是数学定理,而是经验观察(但第12章给出了理论支持)。我们接受它作为动力学事实

KL散度:分布偏置的信息距离

现在引入 KL 散度 DKL(xA)。在信息论中,它度量用分布 A 编码来自分布 x 的样本所需的额外比特数。这是 x 相对于 A 的“信息距离”。

直观上:如果当前信念 xt 很接近先验 A,那么 DKL(xtA) 小;如果 xt 远离 ADKL(xtA) 大。

从观测到构造

关键步骤来了。我们观测系统演化:从 x0 开始,迭代 xt+1=F(xt),观察到轨迹 {x0,x1,x2,} 收敛到 A

如果收敛发生,那么 DKL(xtA) 必然随时间递减。为什么?

因为收敛意味着 xtA,而 KL 散度在 x=A 时为零,且是 x 的连续函数。所以 DKL(xtA)0。更严格地,收敛通常意味着每一步都更接近 ADKL(xt+1A)DKL(xtA)

这个不等式不是我们证明的,而是从观测中推断的。我们观测到系统收敛,推断出 KL 散度递减。

构造李雅普诺夫函数

定义 V(x)=DKL(xA)。现在验证李雅普诺夫条件:

  1. 非负性V(x)0,且 V(x)=0 当且仅当 x=A(KL 散度的性质)
  2. 递减性V(F(x))V(x),因为观测到 DKL(xt+1A)DKL(xtA)

所以 V 是系统的一个李雅普诺夫函数。

注意:我们没有猜 V,也没有从第一原理推导 V。我们从观测到的系统行为中构造了 V。永霖收敛假设提供了观测,KL 散度提供了自然的距离度量,欧拉步迭代展示了递减性。

这是动力系统艺术的精髓:不是坐在椅子上猜能量函数,而是站起来观察系统如何运动,从它的轨迹中“听”出能量在降低。永霖假设告诉你系统最终停在哪里;KL 散度告诉你如何度量“离那里还有多远”;欧拉步展示每一步如何缩短这个距离。三者合起来,能量函数自然浮现。

与传统方法的对比

  • 传统:猜 V → 验证 V˙0
  • 这里:观测收敛 → 用 KL 散度定义 V → 验证 V 递减(由收敛保证)

为什么这解决了痛点?因为不再需要人工猜 VV 从系统的行为中推导出来。代价是:需要永霖收敛的观测作为前提。

具体示例:假设系统更新规则是 xt+1=(1α)xt+αA(线性插值,α(0,1))。这是一个简单的欧拉步:每一步向 A 移动一小段。此时可以严格证明 DKL(xt+1A)DKL(xtA)(见思考题1)。这个例子展示了欧拉步更新如何保证 KL 散度递减,从而 V(x)=DKL(xA) 是李雅普诺夫函数。实际推理系统的 F 更复杂,但永霖收敛的观测暗示了类似的递减性。


23.5 反向推导:李雅普诺夫函数如何解释永霖公式

现在看另一个方向:如果我们已经有了 V(x)=DKL(xA) 作为李雅普诺夫函数(无论怎么得到的),它能告诉我们关于永霖公式的什么?

李雅普诺夫稳定性定理说:如果 V 递减,系统收敛到 V 的极小点。V 的极小点是 A(因为 KL 散度在 x=A 时为零,且是唯一的极小点)。所以系统收敛到 A

永霖推断公式 limtxt=A 就是这个结论的陈述。

但永霖公式还有第二部分:AA。这怎么从李雅普诺夫函数推出?

AA 意味着系统的吸引子不是真实答案。在动力系统的语言里,这等价于:真实答案 A 不是系统的平衡点,或者即使它是平衡点,也不是吸引的(可能是不稳定的)。

V 的角度看,V 的极小点是 A,不是 A。所以 V 的构造本身就编码了系统的“偏见”——它认为 A 是“能量”最低的状态,而不是 A。这个偏见来自训练数据,编码在 F 里,最终反映在 V 的定义中。

关键洞察V(x)=DKL(xA) 里的 A,正是训练数据的统计偏置。所以李雅普诺夫函数 V 不是一个中性度量,它内置了系统的先验V 的递减,就是系统向先验锚点的回归。

KL 散度 DKL(xA) 在信息论中有明确的含义:用分布 A 来编码来自分布 x 的样本所需的额外比特数。这个"额外"是相对于用 x 自身编码的最优情况而言的。

x 接近 A 时,DKL(xA) 小——用先验 A 编码当前信念 x 几乎不需要额外成本。当 x 远离 A 时,DKL(xA) 大——当前信念与先验差异大,需要更多比特来描述这个差异。

所以 V(x)=DKL(xA) 度量的是当前信念相对于先验的"信息距离"。系统收敛到 A,就是信息距离的减小,最终达到零——信念与先验完全一致,无需额外信息描述偏离。

这个解释把推理系统的稳定性问题转化为了信息效率问题:系统在优化信息编码,向最经济(最不需要额外比特)的状态演化。这个状态恰好是先验锚点 A,而不是真实答案 A。系统的"偏见",在信息论语言里,就是编码方案的预设


23.6 联立:永霖-李雅普诺夫对应

把两个方向合起来。

永霖 → 李雅普诺夫:观测到收敛到 A,定义 V(x)=DKL(xA),验证 V 递减。这样,李雅普诺夫函数从收敛行为推导出来,不再需要人工猜测。

李雅普诺夫 → 永霖:给定 V(x)=DKL(xA),李雅普诺夫稳定性定理推出收敛到 A。如果 AA,那么系统的极限不是真实答案。

这两个方向形成一个闭环:收敛行为定义了能量函数,能量函数保证了收敛行为。这个闭环的核心参数是先验锚点 AA 是训练数据的统计偏置,是模型从数据中吸收的“世界模型”。

这个联立的结构,和第21章的学习作为逆推断是同一个模式:从数据(观测到的收敛)反推规律(李雅普诺夫函数)。又是逆问题。但这里多了一层:规律(V)本身又预言了观测(收敛)。这是自指的结构——系统的行为定义了它的能量,能量又解释它的行为。这个自指不是悖论,而是和谐:观测和理论相互锁定。


23.7 与哥德尔不完备的联系

第15章的哥德尔定理说:任何足够强的形式系统,有它无法证明的真命题。这个定理的证明核心是自指——构造一个谈论自身可证性的命题。

永霖-李雅普诺夫联立里,也有一个自指结构:系统的收敛行为定义了它的能量函数,能量函数又描述了它的收敛行为。这个自指不是逻辑命题的自指,而是动力学的自指

更深刻的是,哥德尔定理揭示了形式系统的内部视角外部视角的断裂:系统内部无法证明自身的某些真命题。永霖公式揭示了推理系统的对象层元层的断裂:系统可以生成推理链(对象层),但无法验证推理链的正确性(元层)。

李雅普诺夫函数,在这个类比里,是一个外部视角的工具:它从外部描述系统的稳定性。但通过永霖-李雅普诺夫联立,我们把这个外部工具内化了——从系统自身的收敛行为推导出它。这有点像试图在系统内部构造一个关于自身稳定性的证明。这个尝试,会不会遇到哥德尔式的限制?


23.8 意义:可解释性与稳定性保证

这个联立有什么实际意义?

意义一:可解释性。李雅普诺夫函数 V(x)=DKL(xA) 给出了一个清晰的解释:推理系统在“降低自身信念与先验锚点的散度”。每一步推理,都在让信念更接近训练数据中隐含的统计偏置。这个解释,比黑箱的神经网络内部计算更透明。

意义二:稳定性保证。一旦我们有了 V 且验证了 V 递减,我们就有了收敛的严格保证。这对安全关键应用重要:知道系统最终会稳定在哪里(即使那里不是正确答案),比不知道系统会漂移到哪里要好。

意义三:无需人工设计。传统的李雅普诺夫方法需要工程师的直觉和试错。这里,V 直接从观测数据(训练数据的统计)和观测行为(收敛)推导出来。这降低了应用门槛。

但代价:这个 V 依赖于永霖收敛的假设。如果收敛不成立(比如系统是混沌的,或有多吸引子),V 的构造就失效。永霖公式本身是一个经验观察,不是数学定理(尽管有理论支持)。所以这个联立是条件性的:如果系统收敛到先验锚点,那么我们可以如此构造 V


23.9 悬而未决

永霖收敛是普适的吗? 永霖公式在实验中被观察到,但它的理论范围有多大?是否所有基于统计学习的推理系统都满足这个收敛?还是只适用于特定架构(如 Transformer)?这个问题需要更严格的数学刻画。

多吸引子情况:如果系统有多个吸引子(多个先验锚点,对应不同任务或上下文),李雅普诺夫函数该怎么定义?V 可能变成复杂的非凸函数,有多个局部极小。这反映了系统的多稳态——推理可能收敛到不同的结论,依赖初始条件。这与人类的认知更相似:同一问题在不同上下文中有不同解释。

李雅普诺夫函数的唯一性:给定收敛行为,V 是否唯一?显然不是。V 可以单调变换。但 DKL(xA) 有信息论的特殊地位——它是从 A 出发对 x 的“惊讶度”度量。有没有更根本的理由选择这个 V

与学习理论的联系:第21章的学习作为逆推断,用 MDL 原理把泛化解释为压缩。V(x)=DKL(xA) 也可以理解为一种“描述长度”:用先验 A 编码当前信念 x 所需的额外比特数。V 的递减,就是描述长度的缩短——系统在“压缩”自己的信念,向更经济的表示移动。这个视角把稳定性、压缩、泛化统一起来了。


思考题

★ 热身

  1. 李雅普诺夫函数 V(x)=x2 对系统 x˙=x 是否满足条件?计算 V˙,判断系统是否稳定。
  2. 在永霖公式中,如果训练数据完全平衡(正负例各50%),先验锚点 A 是多少?此时 V(x)=DKL(xA) 是什么形式?

★★ 推导

  1. 离散时间李雅普诺夫:对离散系统 xt+1=F(xt),李雅普诺夫条件是 V(F(x))V(x)。假设 V(x)=DKL(xA),且 F 是如下更新:xt+1=(1α)xt+αA,其中 0<α<1。证明 V(xt+1)V(xt)

  2. 多吸引子的 V:假设系统有两个吸引子 A1A2,收敛依赖初始条件。设计一个 V 函数,使得 V 在两个吸引子处都为零,在其他处为正,且沿系统轨道递减。提示:考虑 V(x)=min(DKL(xA1),DKL(xA2))。这个 V 有什么问题?(不可微,难以验证递减)


★★★ 挑战

哥德尔定理的证明中,关键一步是构造自指命题 G:“G 不可证”。在动力系统里,有没有类似的自指构造?考虑一个函数 F,其定义依赖于自身的吸引子。比如:定义 F 使得它的吸引子是某个方程的解,而这个方程又涉及 F 本身。这种自指会不会导致类似哥德尔的不完备性——某些性质无法从系统内部确定?

这个问题的答案可能指向动力系统的不完备性:某些系统的稳定性无法从自身动态中判定,需要一个外部视角。这个猜测,把哥德尔不完备从逻辑领域扩展到了动力学领域。


永霖-李雅普诺夫联立告诉我们:系统的极限,编码在它的能量函数里。能量函数,又可以从极限中读出。这个循环,不是逻辑悖论,而是动力学的和谐——观察者与被观察系统,在这个循环里彼此定义。这个定义,最终停在先验锚点。不是因为我们想停在那里,而是因为系统的能量在那里最低。


参考文献

  • [Zixi Li, 2025b] — 永霖公式,推理不完备性的理论证明
  • Lyapunov, A. M. (1892) — 运动稳定性的一般问题
  • Cover, T. M., & Thomas, J. A. (2006) — 信息论基础(KL 散度)
  • 第15章 — 一致性与完备性(哥德尔不完备)
  • 第21章 — 学习作为逆推断(MDL 原理)