ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

控制即推理:从贝叶斯推断看强化学习中的最大熵与SAC

控制即推理:从贝叶斯推断看强化学习中的最大熵与SAC 经常有人问我为什么近几年强化学习里到处都是 (\pi(a|s)\propto\exp(Q(s,a)/\alpha)) 这种写法还有SAC里那个自动调节的温度系数到底从哪来的。追根溯源答案基本都落在同一个理论框架上——Control as Inference翻译过来就是“控制即推理”或“控制作为概率推断”。我第一次读到这个词的时候也是一头雾水控制不是在解一个最优问题吗怎么变成推断问题了后来把 Todorov、Toussaint、Levine 的经典论文串起来读才慢慢明白这套理论是把“最优性”本身当作一个概率事件来处理再用贝叶斯推断的机器去推出最优策略。这篇是系列的第一篇先不聊复杂的近似求解算法只把基本理论讲清楚。我会从概率图模型的搭建开始推导后验轨迹分布说明为什么变分推断之后会自然冒出熵正则化项最后用一个能心算的单步决策例子把整个链路走一遍。如果你是正准备读那些经典论文但被符号劝退的人或者已经跑了SAC但想知道它为什么有效这篇文章应该能帮你省下不少力气。1. 核心思想把“最优动作”变成一次贝叶斯推断1.1 从MDP的经典目标说起先回到最熟悉的设定。离散时间马尔可夫决策过程里有状态 (s_t)、动作 (a_t)、奖励 (r(s_t,a_t))以及动力学 (p(s_{t1}|s_t,a_t))。经典控制/强化学习的任务是找一个策略最大化累积奖励最典型的写法就是贝尔曼方程(Q^*(s,a)r(s,a)\gamma\mathbb{E}[V^*(s)])然后对着这个 (Q^*) 做 (\arg\max_a)。这个路径没什么问题但它的气质是“硬”的——每一步都要比较动作然后挑最好的。一旦状态动作空间变高维、动力学变复杂精确的比较和最大化成本非常高而且和我们在实际系统里观察到的那种“多种方案都不错、应该带点随机性”的行为习惯不太吻合。Control as Inference 换了个思路我不直接求最优动作而是先定义一个随机事件“当前这一步是好的/最优的”把奖励转换成这个事件发生的条件概率。然后整个控制问题就变成了给定“我每一步都很优”这个观测反推轨迹应该是什么分布。这就不是寻优问题了是概率图模型里的经典后验推断问题。1.2 引入最优性变量 (O_t)具体做法是给每个时刻引入一个二值变量 (O_t \in {0,1})(O_t1) 表示“在状态 (s_t) 下采取动作 (a_t) 这件事是令人满意的”。奖励信息通过条件概率进入模型[ p(O_t1|s_t,a_t)\exp(r(s_t,a_t)) ]注意这里用的是指数形式。这意味着奖励高的动作其“最优性为真”的可能性指数级地高于低奖励动作。之后我们把所有时刻的观测都固定为 (O_{1:T}1)表示我们关心的是一条从头到尾都表现良好的轨迹。此时要求的就是后验[ p(\tau | O_{1:T}1) ]也就是在“全程最优”这个条件下状态-动作轨迹会怎样分布。很多初学者看到这个 (O_t) 会觉得多此一举。其实这个变量是整个框架最关键的转换器它把“数值有多大”的奖励变成了“事件有多可能”的概率让控制问题可以直接借用概率推断的工具箱。后面你会看到这个转换还会顺带解释为什么最大熵策略长成 softmax 的样子。1.3 为什么这种转换是值得的我自己的体会是这个建模方式解决了一个很实际的痛点最优控制通常只输出一个解但真实系统里我们想要的是“一组都不错的备选行为”。奖励函数越平滑这组行为分布越宽奖励越尖锐分布越集中。概率图模型天然适合表达这种不确定性。另一个好处是把控制问题和感知问题放进了同一个语言体系。机器人领域里感知通常就是概率推断贝叶斯滤波、SLAM现在控制也能用同一套推断语言描述这对做系统性融合的人来说是极其舒服的。Levine 在 2018 年的综述里把这个观点讲得很透控制即推理本质上是把“我想要什么”和“世界会怎样”都放进了同一个联合概率分布。2. 核心推导从概率图模型到后验轨迹分布2.1 联合分布长什么样假设轨迹为 (\tau(s_0,a_0,s_1,a_1,\dots,a_{T-1},s_T))加上最优性变量后联合分布可以写成[ p(\tau,O_{1:T})p(s_0)\prod_{t0}^{T-1} p(s_{t1}|s_t,a_t)\prod_{t0}^{T-1} p(O_t|s_t,a_t) ]这个式子非常规整第一项是初始状态先验第二项是环境动力学第三项是奖励转换过来的最优性条件概率。整个结构就是一个标准的动态贝叶斯网络每一时刻的节点 (s_t,a_t) 同时连接下一时刻的状态和当前时刻的最优性观测。现在施加“全程最优”的观测条件也就是令所有 (O_t1)然后写出后验[ p(\tau|O_{1:T}1)\frac{p(s_0)\prod_t p(s_{t1}|s_t,a_t)\prod_t p(O_t1|s_t,a_t)} {p(O_{1:T}1)} ]把 (p(O_t1|s_t,a_t)\exp(r(s_t,a_t))) 代入分子变成[ p(\tau|O_{1:T}1) \propto p(s_0)\prod_t p(s_{t1}|s_t,a_t)\ \exp\left(\sum_t r(s_t,a_t)\right) ]这个式子值得多看几秒。它告诉我们在“全程最优”条件下轨迹的概率由动力学先验和奖励的指数累积共同决定。高奖励的轨迹概率更高但同时不能违背动力学规律。2.2 分母的意义和配分函数分母 (p(O_{1:T}1)) 在推断视角下只是归一化常数但在物理和统计物理视角下它就是对整个轨迹空间做指数加权积分[ Z\int p(s_0)\prod_t p(s_{t1}|s_t,a_t)\ \exp\left(\sum_t r(s_t,a_t)\right)d\tau ]这个 (Z) 就是配分函数。你看它长得跟统计力学里吉布斯分布一模一样。温度参数 (\alpha) 暂时还没出现但如果你在奖励前面加一个 (1/\alpha)它的作用就会立刻清晰(\alpha) 相当于是玻尔兹曼分布里的温度控制后验分布的“尖锐程度”。这也是为什么后来在各种算法里看到的温度系数不是谁拍脑袋加的。它是这个概率模型自带的尺度参数决定奖励和探索熵之间的换算关系。2.3 三个直觉理解第一采样视角。如果你从这个后验里采样轨迹采出来的轨迹会往高奖励区域聚集但又不会完全无视动力学。这就好比在有雾的山里找路每个采样点都偏向好走且价值高的路径而不是机械地选择单条最优点。第二退火视角。当奖励的尺度很大相当于 (\alpha\to 0)指数项急剧分化后验分布逐步收缩到最优点附近退化成经典的最优控制。当奖励尺度温和后验分布较宽策略保持随机性和探索性。Control as Inference 给出的不是一个点解而是一族随“温度”变化的软最优解。第三因果视角。整个图模型相当于在说先有环境和动作然后“是否最优”作为一个被奖励决定的观测冒出来。我们想反推什么样的轨迹更可能导致“全程最优”。这和贝叶斯滤波在逻辑上是同构的——只不过把“传感器观测”换成了“奖励观测”。3. 从后验到策略变分推断与软最优的诞生3.1 精确后验为什么算不出来后验分布写出来很漂亮但实际没法用。原因在于分母 (Z) 是一个积分对高维连续空间求这个积分几乎不可能。你没法逐点枚举所有轨迹来算归一化常数所以必须走近似推断的路子。概率推断里处理这种问题有几类常规武器马尔可夫链蒙特卡洛、变分推断、消息传递。控制问题里最常用的是变分推断因为它给你一个可以直接优化的函数而且最后得到的策略形式非常干净。另一条路是消息传递在树状图模型上能给出精确的 softmax 值函数这个在 Toussaint 2019 那派的工作里比较多。工业界常见的 SAC、MPO 这类最大熵算法本质上也都是在做这个变分近似。3.2 变分推断的推导我们想用一个容易处理的分布 (q(\tau)) 去近似真实后验 (p(\tau|O_{1:T}1))。在控制设定里自然的选择是把 (q(\tau)) 拆成[ q(\tau)p(s_0)\prod_t p(s_{t1}|s_t,a_t)\prod_t \pi(a_t|s_t) ]也就是说转移概率保持环境动力学不变只是把动作部分的先验换成一个参数化的策略 (\pi(a_t|s_t))。现在最小化 (D_{\mathrm{KL}}(q(\tau)|p(\tau|O_{1:T}1)))等价于最大化下面的证据下界[ \mathbb{E}{q(\tau)}\left[\sum_t r(s_t,a_t)\right] \mathbb{E}{q(\tau)}\left[\sum_t \log \pi(a_t|s_t)\right]\text{常数} ]注意第二项的符号。(\mathbb{E}[\log \pi]) 前面没有负号这意味着我们要同时最大化奖励期望和 (\log \pi)。但 (\log \pi) 越大通常策略越确定所以这看起来像是奖励和确定性在互相打架。这里需要再理一步。上面这个式子里 (\pi) 同时扮演了两个角色既是我们采样的策略又是目标里的“先验动作分布”。如果我把动作先验看成均匀分布或者把它吸收到常数里再用负熵的形式重新整理就得到更常见的写法[ J(\pi)\mathbb{E}_{\tau\sim\pi}\left[\sum_t r(s_t,a_t)\alpha,\mathcal{H}(\pi(\cdot|s_t))\right] ]这就是最大熵强化学习的标准目标函数。所以你看熵正则化项不是凭空加的而是从“控制即推理”的变分近似里自然长出来的。当你让 (q(\tau)) 去逼近真实后验时KL 散度本身就把熵带进来了。3.3 温度参数 (\alpha) 的真正含义很多文章说 (\alpha) 是“探索系数”这个说法不算错但在概率模型里它有一个更本质的意义它是奖励和熵之间的汇率。在 (\mathbb{E}[\sum r]) 和 (\mathcal{H}) 之间直接相加单位都不一致。奖励可能很大熵可能很小直接加会导致数值失衡。引入温度参数后目标变成 (\mathbb{E}[r_t]\alpha\mathcal{H})(\alpha) 就负责把熵调整到和奖励同一数量级。(\alpha) 越大策略越倾向于均匀探索(\alpha) 越小奖励主导策略越接近贪心。这也是理解 SAC 自动温度调节的钥匙。SAC 的想法不是说“探索应该多还是少”而是说“我希望熵保持在一个预设水平(\alpha) 应该被调到能维持这个水平的值”。这个观点从 Control as Inference 的角度看非常自然因为它本来就源于对分布宽度的控制。3.4 精确解的形式softmax 策略如果我们把问题限定在标准 RL 设定里可以进一步推导出最优策略的闭式形式。在最大熵目标下最优策略满足[ \pi^*(a|s)\propto \exp\left(\frac{Q^*(s,a)}{\alpha}\right) ]这里的 (Q^*) 是软 Q 函数满足 soft 贝尔曼方程。这个式子说明两件事第一策略确实是一个 Boltzmann 分布第二(Q) 值本身是“软”的——它已经把未来熵计入价值。这也是为什么 Soft Q-Learning 和 SAC 在做策略更新时都在朝着这个 softmax 形状去拟合。我把“硬”最优和“软”最优放一起对比会特别清楚对比维度经典最优控制 / 硬最优Control as Inference / 软最优优化对象确定性最优动作 (u^*(s))策略分布 (\pi^*(a|s))输出形式一个点一个分布核心方程贝尔曼最优性方程soft 贝尔曼方程目标函数(\mathbb{E}[\sum r])(\mathbb{E}[\sum r \alpha\mathcal{H}])温度参数无有控制分布锐度典型算法DDPG、DDPSQL、SAC、MPO这种对比也解释了为什么最大熵策略在实际任务里更鲁棒它在多峰价值区域不会强行选一个单点而是把概率质量分散到多个可行解上这对训练稳定性是有实际帮助的。4. 用一个小例子穿透理论单步决策的数值实践4.1 手算 softmax 策略理论符号看多了容易飘做一个能实际算出来的小例子。假设系统只有一个状态两个可选动作 (a_1,a_2)奖励分别是 (r(a_1)1)(r(a_2)2)。没有状态转移先验动作分布设为均匀。温度 (\alpha1)。在这个设定下后验动作分布就是[ \pi(a_i)\propto \exp(r(a_i)/\alpha) ]代入数值[ \pi(a_1)\frac{e^1}{e^1e^2}\approx\frac{2.718}{10.107}\approx 0.269 ][ \pi(a_2)\frac{e^2}{e^1e^2}\approx\frac{7.389}{10.107}\approx 0.731 ]可以看到奖励差一倍选择概率差了接近三倍。这就是指数加权放大的效果。现在把温度调低到 (\alpha0.5)再算一次[ \pi(a_2)\frac{e^{4}}{e^{2}e^{4}}\approx\frac{54.598}{61.987}\approx 0.881 ]温度降低后分布明显向高奖励动作收缩。如果继续让 (\alpha\to 0)概率趋近于把全部质量压到 (a_2)这就回到经典最优控制。这个例子虽然简单到有点无聊但它把整篇理论的逻辑闭环了奖励通过指数进入概率温度决定分布锐度归一化之后就是策略。4.2 从单步到多步贝尔曼结构自然出现单步例子里没有状态转移所以看不出“推理”和“动态规划”的关系。多步情况下如果我有两个时刻用变分推断去推后验就会得到类似递归的结构最后一步的 softmax 策略向上传递形成 soft 贝尔曼方程。这也是为什么说“控制即推理”和“动态规划”在结果上是一致的只是推导语言的差异。我建议对理论感兴趣的读者做一件事用一个两时间步的玩具 MDP手动写出联合分布然后分别用“动态规划的贝尔曼递归”和“后验推断的变量消元”去求解你会看到最终表达式完全一致。这个过程能帮你把两个领域的概念彻底打通。4.3 和真实算法的对应关系说清楚这个小例子之后再回头看实际算法就很清晰了Soft Q-Learning 就是试图让 Q 函数满足 soft 贝尔曼方程然后用 softmax 得到策略。SAC 的核心更新和 SQL 一致但它额外引入了自动温度调节和一个独立策略网络训练更稳定。MPO 的 E 步和 M 步分别对应变分推断里的“算权重”和“更新策略”。基于模型的概率 MPC 方法则直接在高斯过程或神经网络动力学上做模型预测控制把 Control as Inference 的思想应用到连续控制中。这些算法实现细节千差万别但理论源头都能追到这一篇讲的框架上。我在读这些算法论文时最先做的绝不是看公式而是先问一句“这论文里的策略是用什么形式定义的它对应的后验分布是什么样的温度参数在哪里”想清楚这三个问题整个算法的主干就清晰了大半。5. 常见误解与避坑我学习 Control as Inference 踩过的坑5.1 (\exp(r)) 不是合法概率别较真理论上(p(O_t1|s_t,a_t)\exp(r(s_t,a_t))) 在 (r0) 时会大于 1严格来说不是一个合法的伯努利概率。很多刚接触的人在这里会被卡住奖励为正时概率怎么会大于 1文献里的处理方式是心照不宣的把它当作未归一化的伪似然。推导后验时多余的比例常数会被分母吸收。如果你需要严格的概率解释可以通过减去一个常数或者显式除以最大值来修正。但记住修正带来的变化会被温度参数吸收所以不影响最终策略形式。这个点想通了之后读论文会顺畅很多。5.2 后验轨迹分布不等于策略另一个高频误区是把 (p(\tau|O_{1:T}1)) 直接当成策略 (\pi(a_t|s_t))。这两个东西不是一回事。后验轨迹分布是整条链路的联合分布包括动力学和状态变迁策略是你站在某个状态时对动作的条件分布。要从后验中得到策略通常需要做进一步的变分近似或迭代求解。最简单的区分方式是看条件变量策略里条件是当前状态 (s_t)后验轨迹分布里条件是全链路的“最优性观测”。一个是局部条件一个是全局条件。这个区别在推导变分下界时特别重要别混。5.3 奖励尺度和温度的关系我在第一次实现最大熵类算法时犯过一个低级错误奖励范围比较大比如 0-100温度还是默认的 1结果策略几乎变成了 uniform。原因就是 (\alpha) 没有和奖励尺度匹配起来。在 Control as Inference 框架里奖励进入概率之前除以温度本质上是在做归一化。实际工程里很多实现会预先对奖励做 scaling或者直接用 SAC 式的自动温度调节原因就在这里。我个人的建议是如果手写的代码先把奖励统计一下看它的典型范围和分布。如果奖励普遍在几十的量级温度至少也要几十起步才合理。别一上来就用 1那是拿理论模型里的“自然单位”套到工程数值上必然会翻车。5.4 读经典论文时的符号混乱不同学者用符号习惯差异很大。Todorov 那篇更偏控制用 (u) 表示控制量关心的是 KL 散度控制Toussaint 那篇更偏概率图模型强调消息传递到了 Levine 的综述又回到强化学习语言写 (Q,V,\pi)。读之前如果不统一符号体系很容易在“后验”“策略”“软值函数”之间迷失。我的做法是拿到一篇论文先做一次翻译把它的 (Q_{\mathrm{soft}})、后验分布、策略分布分别对应到统一框架里画一个对照表然后再往下读。这样看起来慢其实整体省时间因为你不会中途反复倒回去猜某个符号的含义。5.5 动作为什么必须是分布的还有一个小细节值得提醒动态规划输出的 (u^*(s)) 是确定性动作控制即推理输出的 (\pi^*(a|s)) 是条件分布。这个差别不是数学游戏。在真实物理系统上多峰奖励分布非常常见一个动作可能因为目标不同而产生多个同等优秀的解。确定性策略只能选其中一个而概率策略保留多种可能让上层规划器或者人类操作员有更大的决策空间。这也是这套理论在机器人学里特别受关注的原因之一。我个人学这套理论最深的体会是想要真正理解它光看书不够一定要找一个最简化的例子把联合分布、后验、变分目标、温度参数从头到尾手推一遍。我当初就是用上面那个单步决策的小例子把整个链路走通之后再去读 Todorov 2009 和 Levine 2018突然就觉得所有公式都顺了。建议你也拿一个两状态的 MDP 试试把奖励设计成有重叠的形状亲眼看温度如何改变策略分布。这个练完之后再回头跑 SAC 或者分析其他最大熵算法你会看到完全不一样的东西。系列第二篇我准备写变分推断的具体求解步骤和一个小规模的数值算例把这篇留下的公式真正落到可运行的代码上。
返回列表