news 2026/10/8 11:53:17

控制即推断:从概率图模型到软贝尔曼方程的统一视角

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
控制即推断:从概率图模型到软贝尔曼方程的统一视角

1. 从一个反直觉的视角说起:控制问题为什么能当成推断问题

第一次接触“Control as Inference”这个概念时,我的反应大概是“这不是在硬凑吗”。控制是控制,推断是推断,一个是让系统按照预期动起来,一个是根据观测猜隐藏变量,这两件事怎么看都不像一家人。但真正把随机最优控制的框架推一遍之后,我发现这个视角的转换不仅成立,而且相当优雅——它把控制里那些看起来各自为政的概念,比如代价、约束、鲁棒性、探索,统一到了一个概率图模型的框架下。

这篇内容我想做的事情,是把 Control as Inference 的基本理论从头捋一遍。不是那种“定义加公式”的教科书式罗列,而是按照我自己理解这个框架的顺序,把每一步的动机、推导的关键节点、以及容易卡住的地方讲清楚。适合的读者是:有强化学习或最优控制基础,想理解这个统一视角到底在干什么的人;或者做 MPC、机器人控制,想看看概率框架能带来什么新东西的人。前置知识大概需要一点概率论、变分推断的基本概念,以及对马尔可夫决策过程(MDP)的熟悉。如果变分推断不太熟也没关系,我会在用到的地方把直觉补上。

核心结论先放在这里:在 Control as Inference 的框架下,最优控制等价于在一个概率图模型里做后验推断。具体来说,我们引入一个“最优性变量”,把“采取最优动作”这件事建模成一个概率事件,然后控制问题就变成了:给定这个最优性变量为真的条件下,求动作的后验分布。这个后验分布就是最优策略。听起来有点绕,但推导下来会发现,它和经典的随机最优控制(比如线性二次调节器 LQR 的随机版本)能对上,而且能自然导出一些经典方法里需要额外假设才能得到的东西。

下面我分几个部分展开:先讲清楚这个概率图模型怎么建、最优性变量怎么定义;然后推导为什么控制问题会变成一个推断问题,这里会涉及变分推断和 KL 散度的角色;接着讨论这个框架和经典随机最优控制的关系,特别是它怎么把代价函数和概率联系起来;最后聊一下这个视角在实际算法里怎么落地,以及我踩过的一些坑。

2. 把最优性当成一个随机变量:概率图模型的搭建

2.1 为什么要引入最优性变量

经典的最优控制问题通常是这样的:给定一个动态系统,比如状态转移 (x_{t+1} = f(x_t, u_t) + w_t),其中 (w_t) 是噪声,然后定义一个代价函数 (c(x_t, u_t)),目标是找一组控制序列 (u_{1:T}) 使得期望累积代价最小。这是一个优化问题,解出来是一条确定性的轨迹或者一个确定性的策略。

但如果我们换个角度:假设存在一个二值的随机变量 (O_t),它表示“在时刻 (t),系统是否处于最优状态”。我们规定 (O_t = 1) 的概率和代价有关,代价越低,这个概率越高。具体地,可以定义:

[ p(O_t = 1 \mid x_t, u_t) \propto \exp(-c(x_t, u_t)) ]

这个定义是整个框架的基石。它的直觉是:代价小的事情,更可能发生“最优”这个事件;代价大的事情,发生“最优”的概率就低。这个指数形式不是随便选的,后面会看到它和玻尔兹曼分布、以及变分推断里的能量模型有直接联系。

有了这个定义,整个系统的联合分布就可以写成:

[ p(x_{1:T}, u_{1:T}, O_{1:T}) = p(x_1) \prod_{t=1}^T p(x_{t+1} \mid x_t, u_t) \prod_{t=1}^T p(O_t \mid x_t, u_t) ]

注意这里 (p(x_{t+1} \mid x_t, u_t)) 是系统的动态模型,也就是我们已知的物理规律或者学到的模型。而 (p(O_t \mid x_t, u_t)) 就是上面定义的最优性似然。

2.2 这个图模型长什么样

从图模型的角度看,这是一个典型的链式结构,状态 (x_t) 和动作 (u_t) 是隐变量,(O_t) 是观测变量。但和通常的推断问题不同,这里的“观测”不是来自传感器的真实数据,而是我们人为设定的“最优性事件”。我们假装观测到了 (O_{1:T} = 1),然后问:在这个条件下,(u_{1:T}) 的后验分布是什么?

这个后验分布 (p(u_{1:T} \mid O_{1:T} = 1)) 就是我们要找的最优策略。如果这个分布是一个尖峰,那就对应确定性最优控制;如果它有一定的宽度,那就对应随机最优控制,或者说考虑了探索的策略。

我第一次看到这个构造的时候,最大的疑惑是:凭什么把 (O_t) 当成观测?它又不是真实测到的。后来想明白了,这其实是一种“逆向工程”的思路:我们不直接优化代价,而是先定义“什么是最优”,然后反推什么样的动作最可能导致最优。这个反推的过程就是推断。代价函数被编码进了 (p(O_t \mid x_t, u_t)) 里,所以优化代价的信息没有丢,只是换了一种表达方式。

2.3 和标准 MDP 的区别在哪里

标准 MDP 里,我们通常只关心 (p(x_{t+1} \mid x_t, u_t)) 和策略 (\pi(u_t \mid x_t)),代价函数是外挂的,用来评估策略好坏。而在 Control as Inference 里,代价函数被内化到了概率模型里,变成了 (p(O_t \mid x_t, u_t))。这个区别看起来小,但影响很大。

一个直接的好处是,现在整个问题变成了一个纯粹的概率推断问题,可以用变分推断、消息传递、或者蒙特卡洛方法去解。另一个好处是,它天然处理了不确定性和探索:后验分布本身就是一个分布,不是一条确定的轨迹,所以它自带随机性。这在强化学习里很重要,因为探索和利用的权衡在概率框架下变得自然。

还有一个不太直观但很重要的点:在这个框架下,动态模型和代价函数是对称的,都是概率分布的一部分。这意味着如果我们对动态模型不确定,也可以把它建模成概率分布,然后一起推断。这就把模型学习和控制统一起来了,虽然这超出了基本理论的范围,但方向是清晰的。

3. 从联合分布到最优策略:变分推断怎么登场

3.1 精确推断为什么不可行

理论上,我们想要的是 (p(u_{1:T} \mid O_{1:T} = 1))。根据贝叶斯规则:

[ p(u_{1:T} \mid O_{1:T} = 1) = \frac{p(O_{1:T} = 1 \mid u_{1:T}) p(u_{1:T})}{p(O_{1:T} = 1)} ]

分母 (p(O_{1:T} = 1)) 需要对所有可能的 (x_{1:T}) 和 (u_{1:T}) 积分,这个积分在高维连续空间里基本算不出来。分子里的 (p(O_{1:T} = 1 \mid u_{1:T})) 也需要对状态轨迹积分。所以精确推断不可行,必须用近似方法。

这里就是变分推断发挥作用的地方。变分推断的核心思想是:找一个简单的分布 (q(u_{1:T})),让它尽可能接近真实后验 (p(u_{1:T} \mid O_{1:T} = 1))。接近的程度用 KL 散度衡量。然后我们优化 (q) 的参数,使得 KL 散度最小。

3.2 KL 散度最小化等价于什么

KL 散度的定义是:

[ \text{KL}(q(u_{1:T}) | p(u_{1:T} \mid O_{1:T} = 1)) = \int q(u_{1:T}) \log \frac{q(u_{1:T})}{p(u_{1:T} \mid O_{1:T} = 1)} du_{1:T} ]

直接最小化这个 KL 散度不行,因为 (p(u_{1:T} \mid O_{1:T} = 1)) 里有那个难算的分母。但我们可以做一个变换,把 KL 散度写成:

[ \text{KL}(q | p(\cdot \mid O)) = \log p(O) - \mathcal{L}(q) ]

其中 (\mathcal{L}(q)) 是证据下界(ELBO):

[ \mathcal{L}(q) = \mathbb{E}{q(u{1:T})} \left[ \log p(x_{1:T}, u_{1:T}, O_{1:T} = 1) - \log q(u_{1:T}) \right] ]

因为 (\log p(O)) 和 (q) 无关,所以最小化 KL 散度等价于最大化 ELBO。这个变换是变分推断的标准操作,但在这里有一个很漂亮的解释:ELBO 里的 (\log p(O_{1:T} = 1 \mid x_{1:T}, u_{1:T})) 项,根据定义就是负的累积代价。所以最大化 ELBO 就等价于在期望意义下最小化代价,同时还要考虑熵项 (-\log q),这个熵项鼓励探索。

我第一次推导到这里的时候,有一种“原来如此”的感觉。经典最优控制里的代价最小化,在变分框架下变成了 ELBO 最大化,而 ELBO 里自然包含了熵正则项。这意味着探索不是额外加进去的,而是推断框架自带的。这解释了为什么在强化学习里,熵正则化的策略梯度方法效果通常更好——它其实是在做近似推断。

3.3 平均场近似和消息传递

为了实际计算 ELBO,通常需要对 (q) 做因子分解假设。最简单的是平均场近似:

[ q(u_{1:T}) = \prod_{t=1}^T q(u_t) ]

这个假设忽略了动作之间的相关性,但在很多问题里够用。有了这个假设,ELBO 可以分解成每个时间步的项,然后可以用坐标上升法迭代优化每个 (q(u_t))。

另一种思路是消息传递。在链式图模型里,后验分布可以通过前向-后向算法计算。前向消息对应“从过去到现在的信息”,后向消息对应“从未来到现在的信息”。在 Control as Inference 里,后向消息特别有意思,因为它编码了“未来最优”的信息,可以解释为值函数。实际上,后向消息的对数就是软值函数(soft value function),这是最大熵强化学习里的核心概念。

我试过在一个简单的线性二次问题上手动推导消息传递,发现后向消息的递推公式和 Riccati 方程非常像,只是多了一个与噪声协方差相关的项。这个对应关系让我确信这个框架不是花架子,它和经典控制理论是深度兼容的。

4. 和随机最优控制的对应:代价、值函数与软贝尔曼方程

4.1 软贝尔曼方程的推导

在标准强化学习里,贝尔曼最优方程是:

[ V(x) = \min_u \left[ c(x, u) + \mathbb{E}_{x'} V(x') \right] ]

在 Control as Inference 框架下,对应的软贝尔曼方程是:

[ V(x) = -\log \int \exp(-c(x, u)) \exp(V(x')) p(x' \mid x, u) du dx' ]

或者写成更常见的形式:

[ V(x) = -\log \mathbb{E}_{u \sim p(u)} \left[ \exp(-c(x, u) - V(x')) \right] ]

这个方程和标准贝尔曼方程的区别在于:min 变成了 log-sum-exp,也就是软最小值。当温度参数趋于零时,软最小值退化为硬最小值,软贝尔曼方程就退化为标准贝尔曼方程。所以标准最优控制是 Control as Inference 的一个极限情况。

这个软贝尔曼方程不是凭空来的,它直接从 ELBO 的递推形式推出来。具体推导涉及把 ELBO 按时间步分解,然后对每个 (q(u_t)) 做变分优化。推导过程有点长,但关键步骤是:对 (q(u_t)) 求导并令其为零,得到最优的 (q(u_t)) 正比于 (\exp(-c(x, u) - V(x'))),然后归一化就得到软贝尔曼方程。

4.2 软值函数和经典值函数的关系

软值函数 (V(x)) 和经典值函数 (V_{\text{hard}}(x)) 的关系是:

[ V(x) \leq V_{\text{hard}}(x) ]

而且当温度参数趋于零时,两者相等。这个不等式说明软值函数总是更乐观,因为它考虑了多个动作的加权组合,而不是只取最好的那个。这个乐观性在探索阶段是有益的,因为它鼓励尝试不同的动作。

在实际算法里,软值函数通常用神经网络参数化,然后用软贝尔曼方程的残差作为损失函数来训练。这就是软演员-评论家(SAC)算法的核心。SAC 在连续控制任务上表现很好,部分原因就是它的软更新规则天然带有探索性。

4.3 和 LQR 的对应

对于线性二次问题,软贝尔曼方程有解析解。假设动态是线性的,代价是二次的,那么软值函数也是二次的,软 Q 函数也是二次的。推导下来,最优策略是高斯分布,均值是线性反馈,协方差和噪声有关。这个结果和经典的随机 LQR 完全一致,但推导路径不同:经典 LQR 是直接解 Riccati 方程,而这里是解软贝尔曼方程。

我对比过两种推导,发现软贝尔曼方程的推导更直观,因为它不需要预先假设策略是线性的。策略的高斯形式是推导出来的,不是假设的。这一点在非线性问题里更有优势,因为我们可以用神经网络近似软值函数,然后策略自然就是高斯的。

5. 实际落地时的几个关键选择

5.1 温度参数怎么定

温度参数(也就是 (p(O_t \mid x_t, u_t) \propto \exp(-c(x_t, u_t) / \alpha)) 里的 (\alpha))控制探索的程度。(\alpha) 大,探索多;(\alpha) 小,接近确定性最优。在 SAC 里,(\alpha) 通常是自动调节的,通过一个约束优化问题:让策略的熵不低于某个目标值。这个自动调节机制很实用,因为手动调 (\alpha) 很麻烦。

我自己的经验是,如果任务对精度要求高,(\alpha) 要小一点;如果任务需要探索,(\alpha) 要大一点。自动调节通常比手动好,但在某些任务上自动调节会震荡,这时候可以固定 (\alpha) 并手动调。

5.2 变分分布的选择

平均场假设最简单,但忽略了动作之间的时间相关性。如果动作序列很重要,比如需要平滑控制,那么平均场假设可能不够。这时候可以用结构化变分分布,比如让 (q(u_{1:T})) 是一个高斯过程,或者用自回归模型。代价是计算更复杂,但效果可能更好。

我在一个机械臂控制任务上试过平均场和自回归变分分布,发现自回归版本的动作更平滑,但训练更慢。如果任务对平滑性要求不高,平均场就够了。

5.3 和 MPC 的结合

Control as Inference 和 MPC 的结合是一个很自然的方向。MPC 的核心是在每个时间步求解一个有限时域的最优控制问题,然后只执行第一步。在 Control as Inference 框架下,这个有限时域问题可以变成一个推断问题,用变分推断或者消息传递来解。好处是推断方法可以处理不确定性,而且可以并行化。

我试过在一个简单的倒立摆任务上用推断代替 MPC 的优化求解,发现推断方法在噪声大的时候更鲁棒,但在噪声小的时候精度不如传统 MPC。所以选择哪种方法取决于任务特性。

6. 我踩过的坑和几点体会

第一个坑是混淆了 (p(O_t \mid x_t, u_t)) 和奖励函数。虽然它们形式相似,但 (p(O_t \mid x_t, u_t)) 是一个概率密度,必须归一化,而奖励函数不需要。如果忘了归一化,ELBO 的推导会出错。我一开始就犯了这个错误,导致推导出来的软贝尔曼方程多了一个常数项。

第二个坑是忽略了动态模型的不确定性。在基本理论里,我们假设动态模型已知。但在实际应用里,动态模型通常是学出来的,有误差。如果直接把学到的模型当成真模型用,推断结果会有偏差。解决办法是把模型不确定性也建模进去,比如用贝叶斯神经网络,但这会增加计算量。

第三个坑是变分推断的收敛问题。ELBO 的优化是非凸的,可能收敛到局部最优。我试过用不同的初始化,发现结果差异很大。后来用了一个技巧:先用一个简单的策略(比如随机策略)收集数据,然后用这些数据初始化变分分布,收敛会稳定很多。

最后一个体会是:Control as Inference 最大的价值不是替代经典方法,而是提供了一个统一的视角。在这个视角下,控制、推断、学习、探索这些概念不再是割裂的,而是同一个概率模型的不同侧面。理解了这个视角,再看 SAC、最大熵 RL、概率 MPC 这些方法,会觉得它们都是同一个框架的特例。这种统一感是我觉得这个方向最吸引人的地方。

如果你也在做相关的工作,我的建议是:先把基本理论的推导亲手推一遍,不要只看结论。推导过程中遇到的每一个疑惑,都可能是理解框架的关键。推完之后,再去看具体的算法,会发现很多设计选择变得理所当然。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/10/8 11:52:47

GPU推理并发数计算器:显存、算力、带宽约束下的容量规划

1. 从一张显卡到八张显卡:并发估算为什么总让人心里没底 做模型推理服务的人,几乎都绕不开一个问题:手上这几张卡,到底能扛住多少路并发?这个问题看起来简单,实际上一旦认真算起来,变量多到让人…

作者头像 李华
网站建设 2026/10/8 11:51:37

单元测试推广为何总是半途而废?测试团队落地指南

1. 先想清楚一件事:为什么单元测试推广总是以“半途而废”收场我见过太多测试团队在单元测试这件事上栽跟头。最常见的一幕是:领导拍板“全员写单测”,培训做了两场,工具装好了,覆盖率阈值也定了,结果三个月…

作者头像 李华
网站建设 2026/10/8 11:50:34

JavaScript网页编程高频场景实战:类型判断、性能优化与跨端交互

JavaScript这个语言,放在网页编程的语境里,几乎就是“动态页面”的代名词。我见过很多人拿HTML和CSS搭好静态页之后,不知道下一步该学什么;也见过一些刚工作的前端,一遇到运行时报错就懵。其实只要你自己动手写过几个网…

作者头像 李华
网站建设 2026/10/8 11:48:43

ponytail插件开发实战:浏览器注入式增强与网页自动化

1. 从“ponytail”这个标题说起:它到底是什么第一次看到“ponytail”这个词,很多人脑子里蹦出来的画面是扎起来的马尾辫。但在开发者和效率工具圈子里,ponytail 早就不是发型的意思了。它是一类轻量级浏览器增强脚本/插件的统称,核…

作者头像 李华
网站建设 2026/10/8 11:47:33

大模型Context Mode实战指南:三种上下文管理方案与工程落地

我最早被“Context Mode”这个词折腾到半夜,是在给一个客服问答机器人做多轮对话升级的时候。当时用户连续追问了三轮,机器人把第一轮的关键信息忘得干干净净,客户直接在群里炸了。排查到最后,发现根本不是模型不行,而…

作者头像 李华
网站建设 2026/10/8 11:46:26

Agent时代Skills能力封装范式与工程实践

1. “Skills”不是功能按钮,而是Agent时代的能力封装范式 最近两周,我连续被三拨不同背景的朋友问到同一个词:“skills”——前端工程师在调试GKE集群时突然看到控制台里跳出“Enable Skills”,AI产品经理在设计Gemini Agent工作流…

作者头像 李华