资讯动态

从LQR到策略梯度:深度强化学习核心路径与方差缩减实战

发布时间:2026/10/14 7:38:47 来源:尧图企业网站定制
1. 从LQR到策略梯度这条学习路径为什么绕不开如果你正在啃深度强化学习这门课翻到lec10到lec12这三讲的时候大概率会有一种突然从平地掉进深水区的感觉。前面几讲还在讲模仿学习、行为克隆这些相对直观的东西到了这里LQR、策略梯度、方差缩减、自然梯度一股脑全砸过来公式密度陡然上升很多人就是在这个位置卡住然后放弃的。我当初也是在这个位置反复折腾了很久。后来回头复盘发现问题的根源不在于数学有多难而在于没有搞清楚这三讲之间的逻辑链条——它们不是三个孤立的知识点而是一条从已知模型的最优控制通向未知模型下的策略优化的完整推演路径。LQR是这条路径的起点策略梯度是终点中间夹着的方差缩减和自然梯度是让这条路径从理论上成立变成实际能跑的关键工程手段。这篇文章就是想把这条链条拆开揉碎讲清楚。适合两类人看一类是正在学这门课、被公式卡住的同学另一类是已经看过一些策略梯度的资料但总觉得知识点是散的、串不起来的从业者。我会尽量用为什么需要这个东西的角度切入而不是直接甩公式因为我自己踩过的坑告诉我理解动机比记住推导重要得多。需要提前说明的是LQR这部分基础知识一定要先补上否则后面策略梯度的很多推导你会觉得是从天而降。LQR看起来像是经典控制理论的东西跟深度学习八竿子打不着但它恰恰是理解策略梯度中为什么可以用轨迹回报的梯度来更新策略的最佳跳板。2. LQR一个被低估的最优控制入门钥匙2.1 LQR到底在解决什么问题LQR全称是线性二次型调节器Linear Quadratic Regulator。名字听起来很唬人但拆开看就三件事系统是线性的代价函数是二次型的目标是让这个代价最小。它的典型场景是这样的——你有一个动态系统状态随时间演化演化规律是线性的每一时刻你施加一个控制量控制量会影响状态的走向同时你希望状态尽量靠近目标比如原点控制量本身也不要太大。这两方面的诉求用二次型代价函数统一起来就得到了LQR的标准形式。为什么从LQR讲起因为它有一个极其漂亮的性质最优控制律可以写成状态的线性反馈形式也就是说最优的控制量就是当前状态乘以一个矩阵。这个结论不是近似是精确解。在强化学习里我们梦寐以求的就是找到一个好的策略而LQR告诉我们在线性二次这个特殊设定下最优策略长什么样是已知的、闭式的。这就给了我们一个标准答案后面学策略梯度的时候可以拿LQR的解来验证我们的算法对不对。我个人的体会是LQR的价值不在于它本身能解决多少实际问题——现实中的系统很少是纯线性的——而在于它提供了一个可以完全看透的沙盒。你在这个沙盒里能清楚地看到最优是什么样子然后带着这个直觉去理解那些在非线性、高维场景下只能近似求解的方法。2.2 有限时域与无限时域两个容易混淆的版本LQR有两个版本有限时域和无限时域这两个版本在lec10里都会涉及但很多人学的时候没分清导致后面推导对不上。有限时域LQR的特点是你只关心从当前时刻到某个终止时刻T之间的累积代价。这种情况下最优控制律是时变的——也就是说同样一个状态在时间步靠前和靠后时你施加的控制量是不一样的。求解方法是动态规划从终止时刻往前倒推每一步解一个Riccati递推方程。这个递推过程本身就是一次从后往前的动态规划理解它对后面理解强化学习里的值函数递推非常有帮助。无限时域LQR则是假设系统一直运行下去没有终止时刻。这时候如果系统满足可控性和可观测性条件最优控制律会收敛到一个时不变的线性反馈求解的是代数Riccati方程。无限时域版本在工程上更常用因为它给出的控制器是固定的实现起来简单。这里有个实操中的坑要提醒有限时域和无限时域的Riccati方程形式很像但边界条件完全不同。有限时域是从终端条件往前递推无限时域是求一个稳态解。我当初做作业的时候就是把两者的边界条件搞混了算出来的控制律在时间步靠后的地方发散排查了半天才发现是终端条件写错了。2.3 从LQR到强化学习那条隐形的桥LQR和强化学习之间有一座隐形的桥这座桥就是动态规划。LQR的求解过程本质上就是在做动态规划定义值函数写出Bellman方程然后利用二次型的结构求出值函数的解析形式。这套思路原封不动地搬到强化学习里就是值迭代和策略迭代。区别在于LQR里我们知道系统的动力学模型那个线性矩阵所以可以精确地做动态规划。而在强化学习里动力学模型通常是未知的我们只能通过采样来估计。但用值函数来指导策略改进这个核心思想是一脉相承的。所以我的建议是学lec10的时候不要把它当成一门独立的控制理论课而要时刻问自己如果我不知道系统模型LQR的哪一步会做不下去答案通常是计算期望那一步因为期望需要对动力学模型积分。这个问题的答案正好引出了后面策略梯度的动机——用采样来估计期望用梯度来改进策略。3. 策略梯度当模型未知时我们该怎么办3.1 为什么不能直接套用LQR的思路从lec11开始课程正式进入策略梯度。这时候设定变了我们不再假设知道系统动力学只有一个可以交互的环境能做的就是采样轨迹观察状态、动作、奖励。在这个设定下LQR那套解Riccati方程得到闭式最优解的路子彻底走不通了因为方程里含有未知的动力学矩阵。那怎么办思路的转变是这样的既然不能直接求出最优策略那就参数化一个策略然后想办法调整参数让期望回报变大。这就是策略梯度的核心思想。策略通常参数化成神经网络参数记作θ我们要做的就是计算期望回报关于θ的梯度然后沿着梯度方向更新。这个思路听起来很自然但真正动手推的时候会遇到一个关键问题期望回报是轨迹上的期望而轨迹的生成过程涉及环境动力学动力学是未知的你怎么对这个期望求梯度这里就用到了一个非常巧妙的技巧——对数导数技巧也叫似然比技巧。它的核心是把对期望求梯度转化成对概率的对数求梯度再乘上回报这样一来梯度里就不再显式含有动力学模型了只需要用采样得到的轨迹就能估计。我第一次看到这个推导的时候觉得像是变魔术后来想明白了这个技巧的本质是把梯度算子从概率分布上挪到了对数概率上而概率是我们策略自己产生的所以可以计算。这个技巧在整个策略梯度体系里是基石级别的务必吃透。3.2 REINFORCE最朴素也最实用的起点基于对数导数技巧得到的最基础算法就是REINFORCE。它的流程非常简洁采样若干条完整轨迹对每条轨迹计算累积回报然后用回报乘以对数概率的梯度作为梯度的估计更新参数。REINFORCE的美妙之处在于它的无偏性——只要采样足够多梯度估计的期望就是真实梯度。但它的缺点也同样明显方差极大。原因在于累积回报的数值波动很大而且整条轨迹的对数概率梯度是很多项的和每一项都带着噪声。方差大的直接后果就是训练不稳定需要非常多的样本才能收敛。我在实际跑REINFORCE的时候最直观的感受就是训练曲线像心电图。同样的超参数换个随机种子结果可能天差地别。这不是代码写错了而是算法本身的方差导致的。理解这一点很重要因为后面所有的改进——baseline、因果性、优势函数、GAE——本质上都是在跟方差作斗争。3.3 因果性一个免费降低方差的技巧在讲更复杂的方差缩减之前有一个几乎零成本的技巧必须先说那就是因果性。它的意思是在时刻t做出的决策只能影响t时刻之后的回报不可能影响t时刻之前的回报。所以在计算时刻t的对数概率梯度对应的回报时应该只累加从t时刻往后的奖励而不是整条轨迹的奖励。这个改动看起来微不足道但它能显著降低方差而且不引入任何偏差。为什么因为原来那个整条轨迹回报里有一部分t时刻之前的奖励跟当前决策无关它只是一个常数偏移对梯度的期望没有贡献但会贡献方差。把它去掉等于免费降方差。我强烈建议在实现REINFORCE的时候第一件事就是把这个因果性加上。很多人写出来的第一版REINFORCE方差大得没法用很大一部分原因就是没有做这个处理。这是一个典型的知道了就很简单不知道就卡很久的点。4. 方差缩减的进阶武器从baseline到GAE4.1 baseline减去一个不改变期望的常数因果性之后下一个降方差的手段是baseline。核心思想是在回报上减去一个只依赖于状态、不依赖于动作的量b(s)梯度的期望不变但方差会降低。为什么期望不变因为减去的那一项对动作求期望后是零前提是b(s)不依赖动作。那b(s)选什么好理论上最优的baseline是值函数也就是在当前状态下按照当前策略走下去的期望回报。直观理解就是我们关心的不是回报的绝对大小而是这个动作带来的回报比平均水平好多少。减去平均水平剩下的就是优势优势的波动比原始回报小得多。这里有个常见的误解很多人以为baseline是为了让回报的均值变小从而数值稳定。其实不是baseline的作用是降低方差而不是改变期望。如果你选的baseline依赖于动作那就会引入偏差这是要避免的。所以实现的时候一定要确保baseline只吃状态不吃动作。4.2 优势函数与TD方法把估计做得更精细baseline的进一步精细化就是优势函数。优势函数A(s,a)定义为在状态s下采取动作a的回报减去在状态s下的平均回报。它精确地刻画了这个动作比平均好多少。用优势函数代替原始回报方差能进一步降低。但优势函数怎么估计这就涉及到值函数的估计方法。最直接的是用蒙特卡洛方法把整条轨迹的回报当作优势的估计但这样方差还是大。另一种是用时序差分TD方法用即时奖励加上下一状态的值估计来近似回报这样方差小但有偏差。这两者之间的权衡是强化学习里的经典话题。我在实践中发现TD方法在样本效率上通常优于蒙特卡洛但偏差需要小心处理。如果值函数估计不准TD引入的偏差可能会让策略学偏。所以通常的做法是让值函数和策略一起训练值函数慢慢逼近真实值策略再基于值函数改进。4.3 GAE偏差与方差之间的旋钮lec12里会讲到广义优势估计GAE这是把上面那些方法统一起来的一个框架。GAE的核心是引入一个参数λ通过它来调节偏差和方差的权衡。λ等于0时退化成单步TD偏差大方差小λ等于1时退化成蒙特卡洛偏差小方差大。中间的值就是两者的折中。GAE的推导用到了TD残差的指数加权和这个形式看起来有点绕但理解它的动机之后就清楚了我们希望优势估计既不要太依赖单步的噪声也不要累积太多步的偏差λ就是控制这个平衡的旋钮。实践中λ通常取0.95到0.99之间这个范围内的效果一般比较稳。这里分享一个实操经验GAE的λ和折扣因子γ是两个独立的参数不要混为一谈。γ控制的是未来奖励的折扣λ控制的是优势估计的偏差方差权衡。我见过有人把两者设成一样的值结果怎么调都不对。它们的作用完全不同调参的时候要分开考虑。5. 自然梯度与TRPO让更新步长不再靠猜5.1 普通梯度下降在策略空间里的尴尬策略梯度有一个很反直觉的问题参数空间里的一个小步长在策略空间里可能是一大步也可能是一小步。因为策略是参数的非线性函数参数变一点点策略分布可能剧烈变化也可能几乎不变。这就导致普通梯度下降的步长非常难调步长小了学得慢步长大了策略可能崩掉。这个问题的本质是我们真正关心的是策略分布的变化而不是参数的变化。普通梯度下降是在参数空间里做欧氏距离意义下的最速下降但这个度量跟策略空间的实际距离不匹配。打个比方就像你在一个被拉伸过的地图上走路地图上走一小格实际可能走了很远也可能只走了一点点。5.2 KL散度衡量策略变化的正确尺子要解决这个问题就需要一把衡量策略变化的正确尺子。这把尺子就是KL散度。KL散度衡量的是两个概率分布之间的差异用它来约束新旧策略之间的距离就能保证每次更新后策略不会变化太剧烈。自然梯度的思想就是在参数空间里沿着在KL散度约束下能使目标提升最快的方向走。这个方向不是普通梯度而是普通梯度乘以Fisher信息矩阵的逆。Fisher信息矩阵刻画了参数变化对分布变化的影响乘上它的逆相当于把参数空间的度量矫正成了策略空间的度量。我第一次理解自然梯度的时候卡在为什么是Fisher信息矩阵这个问题上。后来想通了Fisher信息矩阵正好是KL散度的二阶近似在参数变化很小时所以用它的逆来矫正梯度本质上就是在做以KL散度为度量的最速下降。这个联系一旦建立整个推导就顺了。5.3 TRPO把自然梯度落地成可用的算法自然梯度理论上很美但直接算Fisher信息矩阵的逆在高维参数下代价极高。**TRPO信任区域策略优化**就是把这个思想工程化的产物。它不直接算Fisher的逆而是把问题转化成一个带约束的优化问题在新旧策略的KL散度不超过某个阈值的约束下最大化目标函数。然后用共轭梯度法近似求解避免显式计算大矩阵的逆。TRPO的实操中有几个关键点。第一KL约束的阈值δ需要调太小学习慢太大策略崩。第二共轭梯度的迭代次数影响精度和速度的平衡。第三线搜索那一步不能省它保证实际更新确实满足约束。我见过有人为了图快把线搜索去掉结果训练经常发散。从TRPO往后还有PPO等更简化的方法但lec10到lec12这条线到TRPO基本就告一段落了。理解了TRPO再看PPO的用裁剪代替约束就会觉得非常自然——它无非是想用更简单的方式近似TRPO的那个约束。6. 把这三讲串起来一条完整的认知升级路线6.1 知识地图每个概念在链条上的位置回头把lec10到lec12的内容画成一张认知地图大概是这样的LQR提供了最优控制有闭式解的基准让我们知道好的策略长什么样动态规划是连接LQR和强化学习的桥梁策略梯度是在模型未知时的通用解法对数导数技巧是让梯度可计算的关键方差缩减因果性、baseline、优势函数、GAE是让算法从能跑到跑得稳的工程手段自然梯度和TRPO是让更新步长可控的理论保障。这张地图的价值在于当你卡在某个公式上时可以问自己我现在在地图的哪个位置这一步是为了解决什么问题。很多时候卡住不是因为数学难而是因为忘了当前这一步在整个链条里的角色。6.2 学习顺序的建议不要跳着看我强烈建议的学习顺序是先把LQR彻底搞懂包括有限时域和无限时域的推导以及Riccati方程的来龙去脉。然后看策略梯度重点吃透对数导数技巧的推导。接着看方差缩减把因果性、baseline、优势函数、GAE按顺序过一遍每一步都问它比上一步改进了什么。最后看自然梯度和TRPO重点理解为什么需要KL约束。不要跳着看。我见过有人直接跳到TRPO结果因为不懂策略梯度的方差问题完全不理解TRPO为什么要做那些约束。每一讲都是前一讲的动机跳过任何一环都会让后面的内容显得莫名其妙。6.3 实操中的几个关键提醒最后分享几个我在实操中踩过的坑。第一实现策略梯度时先跑通最朴素的REINFORCE再逐步加改进。不要一上来就写GAE加TRPO那样出了问题你根本不知道是哪一部分的锅。第二值函数的训练要和策略同步但学习率通常要单独调值函数学得太快或太慢都会影响策略。第三KL散度的计算要用采样估计不要用解析形式因为策略是神经网络解析形式算不出来。第四折扣因子γ和GAE的λ要分开调前面说过它们的作用完全不同。还有一个容易被忽略的点策略的方差参数如果是高斯策略也要一起学。很多人只学均值把方差固定住结果策略探索能力不足。方差应该是状态相关的让网络自己学出来这样策略在不同状态下能有不同的探索强度。这三讲的内容密度确实大但只要抓住从已知模型到未知模型、从理论到工程这条主线把每个概念放在链条的正确位置上就不会觉得是一盘散沙。LQR那部分基础知识一定要补它是后面所有推导的直觉来源。补完之后再回头看策略梯度你会发现很多原本觉得突兀的步骤其实都是顺理成章的。

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价 →
↑