尧图网站设计 尧图网站设计YAOTU DESIGN
ARTICLE DETAIL

资讯详情

深耕网站设计与一线实操的经验洞察。

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

控制即推断:从概率图模型到软贝尔曼方程的统一视角 1. 从一个反直觉的视角说起控制问题为什么能当成推断问题第一次接触“Control as Inference”这个概念时我的反应大概是“这不是在硬凑吗”。控制是控制推断是推断一个是让系统按照预期动起来一个是根据观测猜隐藏变量这两件事怎么看都不像一家人。但真正把随机最优控制的框架推一遍之后我发现这个视角的转换不仅成立而且相当优雅——它把控制里那些看起来各自为政的概念比如代价、约束、鲁棒性、探索统一到了一个概率图模型的框架下。这篇内容我想做的事情是把 Control as Inference 的基本理论从头捋一遍。不是那种“定义加公式”的教科书式罗列而是按照我自己理解这个框架的顺序把每一步的动机、推导的关键节点、以及容易卡住的地方讲清楚。适合的读者是有强化学习或最优控制基础想理解这个统一视角到底在干什么的人或者做 MPC、机器人控制想看看概率框架能带来什么新东西的人。前置知识大概需要一点概率论、变分推断的基本概念以及对马尔可夫决策过程MDP的熟悉。如果变分推断不太熟也没关系我会在用到的地方把直觉补上。核心结论先放在这里在 Control as Inference 的框架下最优控制等价于在一个概率图模型里做后验推断。具体来说我们引入一个“最优性变量”把“采取最优动作”这件事建模成一个概率事件然后控制问题就变成了给定这个最优性变量为真的条件下求动作的后验分布。这个后验分布就是最优策略。听起来有点绕但推导下来会发现它和经典的随机最优控制比如线性二次调节器 LQR 的随机版本能对上而且能自然导出一些经典方法里需要额外假设才能得到的东西。下面我分几个部分展开先讲清楚这个概率图模型怎么建、最优性变量怎么定义然后推导为什么控制问题会变成一个推断问题这里会涉及变分推断和 KL 散度的角色接着讨论这个框架和经典随机最优控制的关系特别是它怎么把代价函数和概率联系起来最后聊一下这个视角在实际算法里怎么落地以及我踩过的一些坑。2. 把最优性当成一个随机变量概率图模型的搭建2.1 为什么要引入最优性变量经典的最优控制问题通常是这样的给定一个动态系统比如状态转移 (x_{t1} 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_{t1}^T p(x_{t1} \mid x_t, u_t) \prod_{t1}^T p(O_t \mid x_t, u_t) ]注意这里 (p(x_{t1} \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_{t1} \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_{t1}^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 这些方法会觉得它们都是同一个框架的特例。这种统一感是我觉得这个方向最吸引人的地方。如果你也在做相关的工作我的建议是先把基本理论的推导亲手推一遍不要只看结论。推导过程中遇到的每一个疑惑都可能是理解框架的关键。推完之后再去看具体的算法会发现很多设计选择变得理所当然。
返回列表