跳到正文
Lanxinmob

CS285 课程笔记:基于模型的强化学习

梳理基于模型强化学习的核心方法,包括动力学模型学习、LQR、模型集成、随机射击、CEM、MBPO与GPS等

Model-based 强化学习

学习transition dynamic来确定如何选择动作,如果我们完全知道运行规律就可以直接用控制论中的算法解决,如

  • optimal control 选择控制以最优化某些奖励或最小化成本的一类问题

  • trajectory optimization 轨迹优化是选择一系列状态和动作来优化某个结果的特定问题,可被视为解决最优控制问题的一种方法。

  • planning 规划通常指的是轨迹优化的离散版本,虽然也可指轨迹规划的连续版本,但在这种情况下两者本质是相同的。不过被称为规划的算法在一种离散分支下会考虑多种可能性,而前者通常执行基于平滑梯度的优化。

Linear Quadratic Regulator

LQR 解决的是在一个系统动力学为线性、代价函数为二次型的系统中,如何寻找一组最优的控制序列 u1,…,uT 使得总代价值最小。

原理推导

  1. 线性动力学: xt+1=f(xt,ut)=Ft[xtut]+ft\mathbf{x}_{t+1} = f(\mathbf{x}_t, \mathbf{u}_t) = \mathbf{F}_t \begin{bmatrix} \mathbf{x}_t \\ \mathbf{u}_t \end{bmatrix} + \mathbf{f}_t
  2. 二次型代价函数 : c(xt,ut)=12[xtut]TCt[xtut]+[xtut]Tct+constcc(\mathbf{x}_t, \mathbf{u}_t) = \frac{1}{2} \begin{bmatrix} \mathbf{x}_t \\ \mathbf{u}_t \end{bmatrix}^T \mathbf{C}_t \begin{bmatrix} \mathbf{x}_t \\ \mathbf{u}_t \end{bmatrix} + \begin{bmatrix} \mathbf{x}_t \\ \mathbf{u}_t \end{bmatrix}^T \mathbf{c}_t + \text{const}_c

根据贝尔曼最优方程,第 tt 步的动作价值等于即时代价加上下一步的状态价值 :

Q(xt,ut)=c(xt,ut)+V(xt+1)Q(\mathbf{x}_t, \mathbf{u}_t) = c(\mathbf{x}_t, \mathbf{u}_t) + V(\mathbf{x}_{t+1})

我们将线性动力学 xt+1=Ft[xtut]+ft\mathbf{x}_{t+1} = \mathbf{F}_t \begin{bmatrix} \mathbf{x}_t \\ \mathbf{u}_t \end{bmatrix} + \mathbf{f}_t 代入归纳假设中的 V(xt+1)V(\mathbf{x}_{t+1}),得到 :

V(xt+1)=12(Ft[xtut]+ft)TVt+1(Ft[xtut]+ft)+(Ft[xtut]+ft)Tvt+1+constV(\mathbf{x}_{t+1}) = \frac{1}{2} \left( \mathbf{F}_t \begin{bmatrix} \mathbf{x}_t \\ \mathbf{u}_t \end{bmatrix} + \mathbf{f}_t \right)^T \mathbf{V}_{t+1} \left( \mathbf{F}_t \begin{bmatrix} \mathbf{x}_t \\ \mathbf{u}_t \end{bmatrix} + \mathbf{f}_t \right) + \left( \mathbf{F}_t \begin{bmatrix} \mathbf{x}_t \\ \mathbf{u}_t \end{bmatrix} + \mathbf{f}_t \right)^T \mathbf{v}_{t+1} + \text{const}

我们对上式进行展开,整理成关于 [xtut]\begin{bmatrix} \mathbf{x}_t \\ \mathbf{u}_t \end{bmatrix} 的二次多项式:

V(xt+1)=12[xtut]T(FtTVt+1Ft)[xtut]+[xtut]T(FtTVt+1ft+FtTvt+1)+const′V(\mathbf{x}_{t+1}) = \frac{1}{2} \begin{bmatrix} \mathbf{x}_t \\ \mathbf{u}_t \end{bmatrix}^T \left( \mathbf{F}_t^T \mathbf{V}_{t+1} \mathbf{F}_t \right) \begin{bmatrix} \mathbf{x}_t \\ \mathbf{u}_t \end{bmatrix} + \begin{bmatrix} \mathbf{x}_t \\ \mathbf{u}_t \end{bmatrix}^T \left( \mathbf{F}_t^T \mathbf{V}_{t+1} \mathbf{f}_t + \mathbf{F}_t^T \mathbf{v}_{t+1} \right) + \text{const}'

现在,我们将 c(xt,ut)c(\mathbf{x}_t, \mathbf{u}_t) 与 V(xt+1)V(\mathbf{x}_{t+1}) 组合相加。由于两部分都是关于 [xtut]\begin{bmatrix} \mathbf{x}_t \\ \mathbf{u}_t \end{bmatrix} 的二次多项式,相加合并后,我们得到

Q(xt,ut)=12[xtut]TQt[xtut]+[xtut]Tqt+const′′Q(\mathbf{x}_t, \mathbf{u}_t) = \frac{1}{2} \begin{bmatrix} \mathbf{x}_t \\ \mathbf{u}_t \end{bmatrix}^T \mathbf{Q}_t \begin{bmatrix} \mathbf{x}_t \\ \mathbf{u}_t \end{bmatrix} + \begin{bmatrix} \mathbf{x}_t \\ \mathbf{u}_t \end{bmatrix}^T \mathbf{q}_t + \text{const}''

其中,新构建的中间矩阵和向量参数为:Qt=Ct+FtTVt+1Ft\mathbf{Q}_t = \mathbf{C}_t + \mathbf{F}_t^T \mathbf{V}_{t+1} \mathbf{F}_t,qt=ct+FtTVt+1ft+FtTvt+1\mathbf{q}_t = \mathbf{c}_t + \mathbf{F}_t^T \mathbf{V}_{t+1} \mathbf{f}_t + \mathbf{F}_t^T \mathbf{v}_{t+1}

为了找出使 Q(xt,ut)Q(\mathbf{x}_t, \mathbf{u}_t) 达到极小值下的动作 ut\mathbf{u}_t,我们仅展开包含 ut\mathbf{u}_t 的项:

Q(xt,ut)=const+12utTQut,utut+utTQut,xtxt+utTqutQ(\mathbf{x}_t, \mathbf{u}_t) = \text{const} + \frac{1}{2} \mathbf{u}_t^T \mathbf{Q}_{\mathbf{u}_t, \mathbf{u}_t} \mathbf{u}_t + \mathbf{u}_t^T \mathbf{Q}_{\mathbf{u}_t, \mathbf{x}_t} \mathbf{x}_t + \mathbf{u}_t^T \mathbf{q}_{\mathbf{u}_t}

对控制变量 ut\mathbf{u}_t 求一阶偏导数,并令其为 0:

∇utQ(xt,ut)=Qut,utut+Qut,xtxt+qut=0\nabla_{\mathbf{u}_t} Q(\mathbf{x}_t, \mathbf{u}_t) = \mathbf{Q}_{\mathbf{u}_t, \mathbf{u}_t} \mathbf{u}_t + \mathbf{Q}_{\mathbf{u}_t, \mathbf{x}_t} \mathbf{x}_t + \mathbf{q}_{\mathbf{u}_t} = 0

解出最优控制决策,呈现为线性状态反馈控制:ut∗=Ktxt+kt\mathbf{u}_t^* = \mathbf{K}_t \mathbf{x}_t + \mathbf{k}_t

其中,控制增益矩阵 Kt\mathbf{K}_t 和偏置向量 kt\mathbf{k}_t 分别为:Kt=−Qut,ut−1Qut,xt\mathbf{K}_t = -\mathbf{Q}_{\mathbf{u}_t, \mathbf{u}_t}^{-1} \mathbf{Q}_{\mathbf{u}_t, \mathbf{x}_t} kt=−Qut,ut−1qut\mathbf{k}_t = -\mathbf{Q}_{\mathbf{u}_t, \mathbf{u}_t}^{-1}\mathbf{q}_{\mathbf{u}_t}

我们将最优策略 ut∗=Ktxt+kt\mathbf{u}_t^* = \mathbf{K}_t \mathbf{x}_t + \mathbf{k}_t 代回动作价值函数 Q(xt,ut)Q(\mathbf{x}_t, \mathbf{u}_t) 中,从而消去控制变量,得到状态价值函数

V(xt)=min⁡utQ(xt,ut)=Q(xt,Ktxt+kt)V(\mathbf{x}_t) = \min_{\mathbf{u}_t} Q(\mathbf{x}_t, \mathbf{u}_t) = Q(\mathbf{x}_t, \mathbf{K}_t \mathbf{x}_t + \mathbf{k}_t)

展开该代入式:

V(xt)=const+12[xtKtxt+kt]T[Qxt,xtQxt,utQut,xtQut,ut][xtKtxt+kt]+[xtKtxt+kt]T[qxtqut]V(\mathbf{x}_t) = \text{const} + \frac{1}{2} \begin{bmatrix} \mathbf{x}_t \\ \mathbf{K}_t \mathbf{x}_t + \mathbf{k}_t \end{bmatrix}^T \begin{bmatrix} \mathbf{Q}_{\mathbf{x}_t, \mathbf{x}_t} & \mathbf{Q}_{\mathbf{x}_t, \mathbf{u}_t} \\ \mathbf{Q}_{\mathbf{u}_t, \mathbf{x}_t} & \mathbf{Q}_{\mathbf{u}_t, \mathbf{u}_t} \end{bmatrix} \begin{bmatrix} \mathbf{x}_t \\ \mathbf{K}_t \mathbf{x}_t + \mathbf{k}_t \end{bmatrix} + \begin{bmatrix} \mathbf{x}_t \\ \mathbf{K}_t \mathbf{x}_t + \mathbf{k}_t \end{bmatrix}^T \begin{bmatrix} \mathbf{q}_{\mathbf{x}_t} \\ \mathbf{q}_{\mathbf{u}_t} \end{bmatrix}

我们将上式完全展开,并分别合并关于 xt\mathbf{x}_t 的二次项和一次项 ,得到 tt 时步的状态价值函数 :

V(xt)=12xtTVtxt+xtTvt+constV(\mathbf{x}_t) = \frac{1}{2} \mathbf{x}_t^T \mathbf{V}_t \mathbf{x}_t + \mathbf{x}_t^T \mathbf{v}_t + \text{const}

其中:Vt=Qxt,xt+Qxt,utKt+KtTQut,xt+KtTQut,utKt\mathbf{V}_t = \mathbf{Q}_{\mathbf{x}_t, \mathbf{x}_t} + \mathbf{Q}_{\mathbf{x}_t, \mathbf{u}_t} \mathbf{K}_t + \mathbf{K}_t^T \mathbf{Q}_{\mathbf{u}_t, \mathbf{x}_t} + \mathbf{K}_t^T \mathbf{Q}_{\mathbf{u}_t, \mathbf{u}_t} \mathbf{K}_t vt=qxt+Qxt,utkt+KtTqut+KtTQut,utkt\mathbf{v}_t = \mathbf{q}_{\mathbf{x}_t} + \mathbf{Q}_{\mathbf{x}_t, \mathbf{u}_t} \mathbf{k}_t + \mathbf{K}_t^T \mathbf{q}_{\mathbf{u}_t} + \mathbf{K}_t^T \mathbf{Q}_{\mathbf{u}_t, \mathbf{u}_t} \mathbf{k}_t

状态价值函数在 tt 时刻依然保持了完美的二次型形式,且其参数 Vt,vt\mathbf{V}_t, \mathbf{v}_t 满足与 t+1t+1 时刻参数的非线性递推关系。为了使上述无限向后的递推能够启动,我们需要在终点 t=Tt=T 处设定边界条件。由于在第 TT 步之后系统即告终止,不存在第 T+1T+1 步。因此,我们自然地初始化虚设的下一步价值函数参数为 0 :VT+1=0,vT+1=0\mathbf{V}_{T+1} = \mathbf{0}, \quad \mathbf{v}_{T+1} = \mathbf{0}将其代入 t=Tt=T 时的更新公式,我们发现:QT=CT,qT=cT\mathbf{Q}_T = \mathbf{C}_T,\mathbf{q}_T = \mathbf{c}_T。这完美退化为了最后一阶段的直接求解公式,递推闭环完全收拢。

具体步骤如图

image-20260729121103307

Iterative LQR 与 DDP

虽然世界是高度非线性的,但在实际工程中,我们不需要系统整体是线性的,只需要它在某个局部是线性的即可 ,而通过泰勒展开就可以把非线性系统近似为线性系统。利用这个原理,我们就有了 iLQR算法。

先提供一个粗糙的、猜测的参考轨迹,然后不直接求解绝对的 xtx_t 和 utu_t,而是求解我们偏离这个基准的偏差量,沿着这条轨迹进行局部动力学线性化和代价二次型化。运行 LQR 双向递推算法计算出偏差调整量,然后用这个偏差量去正向模拟生成新轨迹。如果新总代价小于旧基准轨迹的总代价,就接受这条新轨迹。如果新总代价大于旧总代价,就减小线搜索参数 α (防止迈的步子太大导致发散)重新跑一遍模拟,直到代价值确实下降了。将这次成功降低了代价的新轨迹,作为下一轮迭代的参考轨迹。

iLQR 本质上是轨迹优化领域的高斯—牛顿近似法,由于忽略动力学的二阶导数项,它通常比完整 DDP 更易实现和计算。DDP 保留这些二阶项,可视为更接近牛顿法的二阶轨迹优化方法。它的计算成本更高,因此在工程中使用相对较少,但在二阶精度重要的场景中仍有价值。

但是在有限的计算资源下我们不能规划无限长步数,如何处理终端条件是一个问题。

  • TD-MPC 算法 利用 Model-Free的时序差分学习TD Learning训练一个价值网络 V^θ(s)\hat{V}_\theta(\mathbf{s})。在 MPC 规划到第 HH 步时,我们直接将这个网络作为第 H+1H+1 步的估计值代入:Vt+H(st+H)=V^θ(st+H)V_{t+H}(\mathbf{s}_{t+H}) = \hat{V}_\theta(\mathbf{s}_{t+H})

  • 代数里卡蒂方程(Algebraic Riccati Equation, ARE)

    在 MPC 规划时,用 ARE 求解出的状态价值矩阵 V∞\mathbf{V}_{\infty},直接把第 t+Ht+H 步的终端代价设为:Vt+H(xt+H)=12xt+HTV∞xt+HV_{t+H}(\mathbf{x}_{t+H}) = \frac{1}{2} \mathbf{x}_{t+H}^T \mathbf{V}_{\infty} \mathbf{x}_{t+H}。对于无限时域离散 LQR,在 Q⪰0\mathbf{Q}\succeq 0、R≻0\mathbf{R}\succ 0、(A,B)(\mathbf{A},\mathbf{B}) 可稳定且 (Q1/2,A)(\mathbf{Q}^{1/2},\mathbf{A}) 可检测等条件下,离散代数里卡蒂方程存在唯一的稳定化解。

  • Terminal Penalty

​ 在第 t+Ht+H 步人为设置一个非常大的正定惩罚矩阵 Qterminal\mathbf{Q}_{\text{terminal}}:Vt+H(xt+H)=12xt+HTQterminalxt+HV_{t+H}(\mathbf{x}_{t+H}) = \frac{1}{2} \mathbf{x}_{t+H}^T \mathbf{Q}_{\text{terminal}} \mathbf{x}_{t+H}

uncertainty-aware model

  • Aleatoric / Statistical Uncertainty 是环境本身自带的随机噪声

  • Epistemic / Model Uncertainty 是因为我们缺乏数据,导致我们不确定哪一个物理规律才是对的

在缺少训练数据的未知区域会出现 distribution mismatch,单个神经网络可能给出错误且过度自信的预测,它输出的 aleatoric uncertainty σ2\sigma^2 不能可靠代表 epistemic uncertainty,这可能误导规划器进入模型不可靠的区域。

模型集成(训练多个不同的神经网络)。

  • 在某个区域,多个动力学网络之间的预测分歧可以用于近似估计认知不确定性。PETS 在规划时传播 ensemble 表达的不确定性,通常能提高预测可靠性和样本效率。结合保守或风险敏感的评价方式,可以减少规划器进入数据不足区域的倾向。但模型分歧只是 epistemic uncertainty 的近似,不能保证 OOD 校准、安全性或收敛。随着网络数量增加计算量也会增加,实践中通常使用规模不大的 ensemble。

model-based rl with latent space model

  • Deterministic Encoder: 它将一张高维图像 ot\mathbf{o}_t(比如 64×6464 \times 64 像素的图片)直接映射为隐空间中的一个确定的向量:st=gψ(ot)\mathbf{s}_t = g_\psi(\mathbf{o}_t)
  • Stochastic Encoder: 它不直接输出一个固定的点,而是将图像 ot\mathbf{o}_t 映射为隐空间里的一个概率分布(通常是高斯分布) : st∼qψ(st∣ot)=N(μψ(ot),σψ2(ot))\mathbf{s}_t \sim q_\psi(\mathbf{s}_t | \mathbf{o}_t) = \mathcal{N}\left( \mu_\psi(\mathbf{o}_t), \sigma^2_\psi(\mathbf{o}_t) \right) 网络实际输出的是这个分布的均值 μψ\mu_\psi 和方差 σψ2\sigma^2_\psi ,通过在这个分布中进行采样,得到具体的隐状态 st\mathbf{s}_t 。

用编码器将图像压缩到低维的隐空间 st\mathbf{s}_t(例如 32 维),然后在隐空间用动力学模型进行规划。以下是一种简化的代表性架构,并非所有 latent model-based RL 都采用这四个网络。在这个例子中,我们同时训练 4 个网络:

  1. Encoder(编码器) gψg_\psi:输入当前图像 ot\mathbf{o}_t,输出低维隐状态 st\mathbf{s}_t。
  2. Latent Dynamics(隐空间动力学模型) pϕp_\phi:在隐空间内预测下一步,输入当前隐状态 st\mathbf{s}_t 和动作 at\mathbf{a}_t,预测下一步的隐状态 st+1\mathbf{s}_{t+1} 。
  3. Decoder(解码器) pϕp_\phi:输入 st\mathbf{s}_t,尝试重构出原始图像 ot\mathbf{o}_t(强迫隐状态保留图像里的关键视觉信息) 。
  4. Reward Model(奖励模型) pϕp_\phi:输入 st\mathbf{s}_t,预测当前状态能拿多少奖励 rtr_t。

收集了一批包含图像、动作、奖励的轨迹数据,通过最大化联合似然损失函数来同时训练所有网络的参数 ϕ\phi 和 ψ\psi

max⁡ϕ,ψ∑[log⁡pϕ(gψ(ot+1)∣gψ(ot),at)⏟1. 隐空间动力学损失+log⁡pϕ(ot∣gψ(ot))⏟2. 图像重构损失+log⁡pϕ(rt∣gψ(ot))⏟3. 奖励预测损失]\max_{\phi, \psi} \sum \Big[ \underbrace{\log p_\phi(g_\psi(\mathbf{o}_{t+1}) | g_\psi(\mathbf{o}_t), \mathbf{a}_t)}_{\text{1. 隐空间动力学损失}} + \underbrace{\log p_\phi(\mathbf{o}_t | g_\psi(\mathbf{o}_t))}_{\text{2. 图像重构损失}} + \underbrace{\log p_\phi(r_t | g_\psi(\mathbf{o}_t))}_{\text{3. 奖励预测损失}} \Big]

  • 如果是随机编码器,通常还会加入 KL 散度,将后验隐藏分布约束到动作条件 latent prior。在简单 VAE 中,这个先验也可能直接取标准高斯分布。

image-20260729182220431

  1. 运行一个基础的探索策略 π0\pi_0(通常是完全随机的动作,或者简单的启发式规则),在真实环境(物理世界)中交互,收集一批最原始的经验数据存入数据集 D\mathcal{D}:D={(ot,at,ot+1,rt)i}\mathcal{D} = \{ (\mathbf{o}_t, \mathbf{a}_t, \mathbf{o}_{t+1}, r_t)_i \}
  2. 在数据集 D\mathcal{D} 上,通过反向传播同时训练我们的 4 个神经网络(参数为 ϕ,ψ\phi, \psi):
  3. 面临当前的真实图片 ot\mathbf{o}_t 时,首先用编码器将其映射为隐状态 st=gψ(ot)\mathbf{s}_t = g_\psi(\mathbf{o}_t)。接着,规划器(如 CEM)完全在低维隐空间内,利用隐动力学模型 pϕp_\phi 快速向未来模拟 HH 步,寻找最优动作序列 at∗,…,at+H−1∗\mathbf{a}_t^*, \dots, \mathbf{a}_{t+H-1}^*。
  4. 只在真实物理世界中执行第一步动作 at∗\mathbf{a}_t^*,执行后,机器人观察到环境真实的反馈:下一个高维图像 ot+1\mathbf{o}_{t+1}(以及即时奖励 rtr_t)。
  5. 将新产生的这一步真实交互数据 (ot,at,ot+1,rt)(\mathbf{o}_t, \mathbf{a}_t, \mathbf{o}_{t+1}, r_t) 追加到数据集 D\mathcal{D} 中。

learn directly from observation space

这类方法在更复杂的场景中效果很好,因为在这些场景中学习紧凑的潜在空间非常困难。例如,如果场景中有几十个物体,如何为他们构建一个紧凑的状态空间就很难说清楚了。此时在图像空间进行预测却非常有效,可以指示机器人执行特定操作。

model-based policy learning

通过模型进行在线规划

不显式地训练一个策略网络,而是直接利用学好的模型 fϕf_ϕ 在线规划。比如使用 MPC(模型预测控制) 算法,当机器人处于状态 sts_t 时,利用学好的模型 fϕf_ϕ 模拟向未来推演 10 步,尝试 1000 种不同的动作序列,计算哪种动作序列得到的累积奖励最高,然后只执行这套动作的第一步。这相当于利用模型进行实时搜索和局部策略优化。

通过模型进行梯度反向传播

如果拟合的环境模型 fϕ(s,a)f_\phi(s, a) 是一个可导的神经网络,我们可以直接通过链式法则,将未来奖励的梯度穿过环境模型,直接反向传播给策略网络。

∇θReward=∂Reward∂st+1⋅∂fϕ(st,at)∂at⏟环境模型的梯度⋅∂πθ(st)∂θ⏟策略网络的梯度\nabla_\theta \text{Reward} = \frac{\partial \text{Reward}}{\partial s_{t+1}} \cdot \underbrace{\frac{\partial f_\phi(s_t, a_t)}{\partial a_t}}_{\text{环境模型的梯度}} \cdot \underbrace{\frac{\partial \pi_\theta(s_t)}{\partial \theta}}_{\text{策略网络的梯度}}

PILCO 通过 GP 预测分布解析地计算近似期望回报的梯度,SVG 使用 stochastic value gradients 迭代优化策略。对于可微的确定性模型,将梯度穿过 TT 步动力学模型 fϕ(s,a)f_\phi(\mathbf{s}, \mathbf{a}) 反向传播给策略网络,在结构上对应通过时间反向传播(BPTT)。当我们考察第 TT 步状态对第 11 步状态的导数时,每一步都应使用包含策略反馈的闭环 Jacobian:

Jt=∂fϕ∂st+∂fϕ∂at∂πθ∂st,∂sT∂s1=JT−1JT−2⋯J1\mathbf{J}_t = \frac{\partial f_\phi}{\partial \mathbf{s}_t} + \frac{\partial f_\phi}{\partial \mathbf{a}_t}\frac{\partial \pi_\theta}{\partial \mathbf{s}_t}, \qquad \frac{\partial \mathbf{s}_T}{\partial \mathbf{s}_1} = \mathbf{J}_{T-1}\mathbf{J}_{T-2}\cdots\mathbf{J}_1

长 horizon 的直接反向传播容易受到模型偏差以及梯度消失或爆炸的影响,系统中的非光滑接触也可能使梯度不稳定。因此它在复杂动力系统中较难使用,但并非普遍无效:短 horizon、latent model、value bootstrap、正则化和更好的可微模型都可能使这种方法有效。

solution:model-free learning with a model

Dyna & MBPO

  • 训练一个环境动力学模型 p^(s′∣s,a)\hat{p}(s'|s, a),但只把它当成生成训练数据的仿真器,再运行 Model-Free 算法(如 Q-learning、SAC 或 PPO)。这些学习器不需要将梯度穿过动力学模型:以 SAC 为例,critic 更新只对 QQ 网络参数求梯度,actor 更新仍会通过 QQ 对动作求梯度,但不会计算环境模型的导数 ∂f∂a\frac{\partial f}{\partial a}。

LQR-FLM & GPS

  • 我们不用神经网络直接去学复杂的 RL 策略,相反,我们在多个简单的局部路径上,运行 LQR 算法训练局部线性策略,再通过监督学习合成全局网络 。
  • 让线性高斯控制器在真实机器人上运行p(ut∣xt)=N(Ktxt+kt,Σt)p(\mathbf{u}_t|\mathbf{x}_t) = \mathcal{N}(\mathbf{K}_t \mathbf{x}_t + \mathbf{k}_t, \boldsymbol{\Sigma}_t)。运行若干次,收集一组真实的物理轨迹数据 D={τi}\mathcal{D} = \{\tau_i\}(包含状态、动作、下一步状态)。在收集到的轨迹邻域内,对于每一个时间步 tt,我们直接使用最简单的线性回归(最小二乘法)来拟合局部的线性时变动力学系统 p(xt+1∣xt,ut)=N(Atxt+Btut,Σ)p(\mathbf{x}_{t+1}|\mathbf{x}_t, \mathbf{u}_t) = \mathcal{N}(\mathbf{A}_t \mathbf{x}_t + \mathbf{B}_t \mathbf{u}_t, \boldsymbol{\Sigma})。通过线性回归,我们可以快速估计每一个时间步的局部线性系数,在局部中心化拟合且近似有效时,它们可以近似解释为动力学的雅可比矩阵: At≈∂f∂xt,Bt≈∂f∂ut\mathbf{A}_t \approx \frac{\partial f}{\partial \mathbf{x}_t}, \quad \mathbf{B}_t \approx \frac{\partial f}{\partial \mathbf{u}_t}。此时局部动力学模型已经是线性的(At,Bt\mathbf{A}_t, \mathbf{B}_t 已知),代价函数是二次型的,这在数学上就完全退化成了一个标准的 LQR 问题。直接在后台运行我们之前推导过的 LQR 逆向递推算法,一步到位、瞬间计算出新的一组更优的反馈增益和偏置参数:Ktnew,ktnew\mathbf{K}_t^{\text{new}}, \quad \mathbf{k}_t^{\text{new}} 由此,我们得到了一个比上一轮更优的新控制器:pnew(ut∣xt)=N(Ktnewxt+ktnew,Σt)p_{\text{new}}(\mathbf{u}_t|\mathbf{x}_t) = \mathcal{N}(\mathbf{K}_t^{\text{new}} \mathbf{x}_t + \mathbf{k}_t^{\text{new}}, \boldsymbol{\Sigma}_t)。使用这个更新后的、更好的控制器重新去跑机器人,收集新轨迹,并在新轨迹的局部重新拟合,循环往复。同时在 improve controller 这一步,通过施加数学约束(例如限制新旧控制器之间的 KL 散度),强制规定新策略与旧策略在概率分布上不能偏离太远。这确保了机器人产生的新轨迹依然落在局部模型的有效范围内。
  • GPS(Guided Policy Search) 会在空间中不同的起始点上,运行多个不同的 LQR-FLM 实例,生产出多条不同的局部标准答案。然后,GPS 开启一个监督学习过程,训练一个神经网络 πθ(a∣o)去同时模仿所有这些局部 LQR-FLM 产生的数据,得到复杂的全局政策网络。
  • 在局部线性动力学与二次代价近似有效、相关矩阵可逆的条件下,有限时域 LQR 可以通过 Riccati 逆向递推高效求得局部最优控制轨迹,无需对整个系统动力学进行长时序 BPTT。局部动力学模型可通过带正则化的最小二乘稳定估计,并在设计矩阵满秩时具有唯一闭式解。随后利用这些轨迹监督训练全局策略,通常比直接进行长时序强化学习或端到端轨迹优化更容易,但仍不保证局部模型准确、全局策略收敛或部署时稳定。

HW4

误差传播机制

如果建立的环境模型有一点点不准,或者神经网络有一点点误差,当智能体在环境里连续跑 100 步时,这个误差会怎么放大?在固定策略 π\pi、真实模型与近似模型使用相同奖励,并令 PπP^\pi 和 P^π\hat P^\pi 表示状态—动作空间上的策略转移算子时,Simulation Lemma 的一个精确形式是: Qπ−Q^π=γ(I−γP^π)−1(Pπ−P^π)Qπ.Q^\pi-\hat Q^\pi=\gamma(I-\gamma\hat P^\pi)^{-1}(P^\pi-\hat P^\pi)Q^\pi. 这里,全局价值偏差由近似模型下的折扣 resolvent、单步转移算子误差和真实价值函数共同决定;也可以交换真实与近似模型,写出另一种等价展开,但其中的 resolvent 与价值函数必须配套使用。

从 Simulation Lemma 我们可以知道,要减小全局误差 Q−Q^Q - \hat{Q} 有两条路可以走:

  1. **降低单步误差 (P−P^)(P - \hat{P})**想办法把神经网络训练得更准。
  2. 控制价值函数的尺度或平滑性:VV 的上确界可用于 L1 转移误差界,VV 的取值跨度可用于 TV 误差界。Lipschitz 性只有与 Wasserstein 等依赖状态度量的转移误差配合时,才会直接给出误差控制。

统计独立性陷阱

当使用 NN 个样本估计出来的概率 P^\hat{P} 去逼近真实概率 PP 时,如果 VV 是固定的有界函数(比如真实的最优价值 V∗V^*)时,可以直接对 (P^−P)V(\hat P-P)V 套用霍夫丁不等式,得出误差随样本量 1N\frac{1}{\sqrt{N}} 缩小的结论。但如果 VV 是在同一个数据集上训练出来的神经网络输出 V^\hat{V},那么它们在统计上就会产生了强烈的相互依赖,不能直接套用固定函数版本的集中不等式,需要用数据分割、一致收敛等方法处理数据依赖。

诺依曼级数

(I−γPπ)−1=I+γPπ+γ2(Pπ)2+…(I - \gamma P^\pi)^{-1} = I + \gamma P^\pi + \gamma^2 (P^\pi)^2 + \dots

  • II 表示零步转移,即当前状态本身,γPπ\gamma P^\pi 代表向前看 1 步的期望,γ2(Pπ)2\gamma^2(P^\pi)^2 代表向前看 2 步的期望,整个逆算子汇总了固定策略下未来各步的折扣占用。Successor Features 将这种占用投影到特征空间,可直接处理在选定特征上线性的奖励,但仍与策略 π\pi 耦合。FB Representation 在精确表示、充分覆盖和固定动力学等条件下,可以通过奖励定义任务向量并进行任意奖励的零样本策略适配。

Successor Features

假设环境的单步期望奖励可以写成r(s,a,s′)=ϕ(s,a,s′)Twr(s,a,s') = \boldsymbol{\phi}(s,a,s')^T \mathbf{w}。(特征向量 ϕ(s,a)\boldsymbol{\phi}(s, a)表示每次转移时有哪些特征,w\mathbf{w} 是任务对每种特征赋予多大奖励)。那么,QQ 值公式就可以写成 Qπ(s,a)=E[∑γtϕt]Tw=ψπ(s,a)TwQ^\pi(s,a) = \mathbb{E} \left[ \sum \gamma^t \boldsymbol{\phi}_t \right]^T \mathbf{w} = \boldsymbol{\psi}^\pi(s,a)^T \mathbf{w}。ψπ(s,a)\boldsymbol{\psi}^\pi(s,a)就称为 Successor Features,它的第 kk 个分量是遵循策略 π\pi 时,第 kk 种特征未来折扣累计出现的期望。在数学上,ψπ=(I−γPπ)−1ϕ\boldsymbol{\psi}^\pi = (I - \gamma P^\pi)^{-1} \boldsymbol{\phi}。

假设特征 ϕt=ϕ(st,at,st+1)\phi_t=\phi(s_t,a_t,s_{t+1}) 已知(ϕ\phi 不是网络自动知道的,需要手工提供 ϕ\phi,或联合学习 ϕ\phi,或让训练任务的奖励本身充当特征),则通过普通监督回归学习特征权重 w,损失是$$\mathcal L_w

\mathbb E \left[ \left( r_{t+1}-\phi_t^\top\hat w \right)^2 \right],再类比Q−learning用标准的Model−FreeTD−learning去训练SF网络,再类比 Q-learning 用标准的 Model-Free TD-learning 去训练 SF 网络 Loss = \left( \boldsymbol{\psi}^\pi(s,a) - \left[ \boldsymbol{\phi}(s,a) + \gamma \boldsymbol{\psi}^\pi(s’,a’) \right] \right)^2$$。 SF 解耦的是固定策略下的未来特征占用与奖励权重,策略改变以后,未来访问的特征分布也改变,但 ψπ\psi^\pi 仍然与策略 π\pi 耦合,而最优策略通常随任务改变,实际使用 GPI 同时训练多个策略的 SF ,因此 SF 的新任务表现取决于策略库覆盖。

FB Representation

如果说 SF 解耦了固定策略下的未来特征占用和奖励权重,那么 **FB Representation 学习的是随任务表征 zz 变化的 successor measure family 的低秩前向—后向分解,而不是对某个固定转移矩阵直接求逆。**它用两个低维神经网络向量的内积来近似相应策略的折扣占用测度:Mπz(s,a,dsˉ,daˉ)≈F(s,a,z)⊤B(sˉ,aˉ) ρ(dsˉ,daˉ)M^{\pi_z} (s,a,d\bar s,d\bar a) \approx F(s,a,z)^\top B(\bar s,\bar a)\, \rho(d\bar s,d\bar a)

  • Forward 编码器 F(s,a,z)\mathbf{F}(s, a,z):表示从当前 (s,a)(s,a) 开始、遵循 πz\pi_z 时,对这些潜在基底的未来折扣占用
  • Backward 编码器 B(sˉ,aˉ)\mathbf{B}(\bar s,\bar a):为未来可能访问的目标状态—动作提供一个潜在特征基底
  • F⊤BF^⊤B:近似从当前点到未来目标点的折扣占用密度。

先随机初始化两个网络 Fθ(s,a,z)∈Rd,Bω(s,a)∈RdF_\theta(s,a,z)\in\mathbb R^d,B_\omega(s,a)\in\mathbb R^d,并复制 target networks:Fθ−,Bω−F_{\theta^-},B_{\omega^-}

FB 的目标不是预测下一状态,而是使 F(s,a,z)⊤B(sˉ,aˉ)F(s,a,z)^\top B(\bar s,\bar a)近似从 (s,a)(s,a) 出发,之后遵循策略 πz\pi_z,未来对目标状态—动作 (sˉ,aˉ)(\bar s,\bar a) 的折扣占用密度。理论策略定义为:πz(s)=arg⁡max⁡aF(s,a,z)⊤z \pi_z(s) = \arg\max_a F(s,a,z)^\top z 论文训练时则使用 target Fθ−F_{\theta^-} 定义 Boltzmann/softmax 版本,以平滑训练。

然后收集 reward-free transition,每个 episode 使用一个经过缩放的随机分布采样 zz 采集 z∼νz\sim\nu ,然后使用某个 behavior policy 与环境交互,例如相对于 Fθ(s,a,z)⊤zF_\theta(s,a,z)^\top z 的 ε\varepsilon-greedy 策略。环境产生 (st,at,st+1)(s_t,a_t,s_{t+1}) 存入 replay buffer D\mathcal D ,也可以直接使用已有的 off-policy 数据集从而跳过这一步.

每次 SGD 更新需要三组数据,从 replay buffer 采真实一步 transition {(si,ai,si+1)}i=1b\{(s_i,a_i,s_{i+1})\}_{i=1}^{b} 然后另外独立采样一组查询状态—动作 {(sˉj,aˉj)}j=1b\{(\bar s_j,\bar a_j)\}_{j=1}^{b} 再独立采 zi∼ν z_i\sim\nu。对每一个起点 ii 查询目标 jj,做一次内积:

Cij=Fθ(si,ai,zi)⊤Bω(sˉj,aˉj)C_{ij} = F_\theta(s_i,a_i,z_i)^\top B_\omega(\bar s_j,\bar a_j)

CijC_{ij} 表示从第 ii 个状态—动作出发,并遵循 ziz_i 所定义的策略时,未来访问第 jj 个查询状态—动作的折扣占用密度估计。

注意它不是概率严格意义上的单步 transition P(sˉj∣si,ai) P(\bar s_j\mid s_i,a_i) 它包含 t=0,1,2,…t=0,1,2,\ldots 所有未来时间步的折扣累计。

真实 transition 给了 si→aisi+1 s_i \xrightarrow{a_i} s_{i+1},在 si+1s_{i+1} 处,需要知道策略 πzi\pi_{z_i} 之后准备采取什么动作。

训练时定义:

πzi(a∣si+1)=softmax⁡(Fθ−(si+1,a,zi)⊤ziτ)\pi_{z_i}(a\mid s_{i+1}) = \operatorname{softmax} \left( \frac{ F_{\theta^-}(s_{i+1},a,z_i)^\top z_i }{\tau} \right)

然后定义

Tij=γ∑a∈Aπzi(a∣si+1)Fθ−(si+1,a,zi)⊤Bω−(sˉj,aˉj)T_{ij} = \gamma \sum_{a\in\mathcal A} \pi_{z_i}(a\mid s_{i+1}) F_{\theta^-}(s_{i+1},a,z_i)^\top B_{\omega^-}(\bar s_j,\bar a_j)

也就是现在从 (si,ai)(s_i,a_i) 出发,对目标 jj 的未来 occupancy,应该与真实走一步到 si+1s_{i+1},然后遵循 πzi\pi_{z_i}之后的 occupancy 相一致。这正是 successor measure 的 Bellman bootstrap。论文实现使用 target (Fθ−,Bω−)(F_{\theta^-},B_{\omega^-}) 以及上述 softmax 动作期望。第一阶段的核心训练 loss

LFB=12b2∑i,j(Cij−Tij)2−1b∑iFθ(si,ai,zi)⊤Bω(si,ai)\mathcal L_{\mathrm{FB}} = \frac{1}{2b^2} \sum_{i,j} (C_{ij}-T_{ij})^2 - \frac1b \sum_i F_\theta(s_i,a_i,z_i)^\top B_\omega(s_i,a_i)

第二项是为了避免 F=B=0 的情况,同时因为 FB 解不是唯一的,可以用任意可逆矩阵改变 F,B,而保持表示的 successor density 不变,所以需要再加上一个 Lreg≈∣∣Eρ[BB⊤]−I∣∣F2L_{reg}≈||Eρ[BB⊤]−I||_F^2 。既然分解不可识别,不同的 F,B 都能表示相同的 occupancy,那就从这些等价解中,挑一个 B 尺度正常、各维不相关的。推动Eρ[BB⊤]≈IEρ[BB⊤]≈I 并把这个梯度加入 B 的更新。可以理解为对 B 的 latent features 做 whitening,不同维度尽量不要重复表达同一个方向,防止 latent dimensions 退化、相关和尺度畸形。

最后 Polyak averaging 更新 target networks:$$ \theta^- \leftarrow \alpha\theta^-+(1-\alpha)\theta, \omega^- \leftarrow \alpha\omega^-+(1-\alpha)\omega

第二阶段根据指定任务给出相应的奖励函数 $r(s,a)$,再把奖励通过 Backward 网络,$B(s',a')$是 FB 通过无奖励训练学出的 backward feature basis,用来表示未来状态—动作,并将后验奖励投影到任务向量空间,变成了一个具体的任务向量 :$$z_r = \mathbb E_{(\bar s,\bar a)\sim\rho} \left[ r(\bar s,\bar a) B(\bar s,\bar a) \right]$$。例如到达目标 $(s_g,a_g)$ 这种单点奖励,可以直接设置:$$ z_r=B(s_g,a_g)$$不一定需要手工设计复杂的稠密奖励。 第三阶段拿到了翻译好的真实任务向量 ,$z_r$ 后把未来特征和目标权重 $z_r$ 做个内积 $$Q_r(s,a) = F(s,a,z_r)^T z_r$$,算出估计 $Q$ 值,最后直接 $\arg\max_a$ 选出最大的动作。 FB 不显式预测下一状态或重建像素,而是在隐空间中学习策略条件下的长期折扣占用结构。该结构可以在动力学不变时复用于大量后验奖励任务,但它不是完整世界模型,能力仍受表示维数、数据覆盖和动力学变化限制。FB 学习的是一族策略的 successor measure 的低秩分解,不是单个固定转移矩阵的普通逆矩阵分解。

MBRL

先用真实 transition 监督训练一个预测归一化状态差值的 ensemble 动力学模型,再通过 Random Shooting 或 CEM 在模型中搜索有限时域动作序列,并用 MPC 每次只执行第一步;随着当前策略访问新的状态区域,持续收集真实 on-policy 数据并重训模型。MBPO 分支则不直接用模型在线规划,而是让模型生成短期虚拟数据供 SAC 训练。

在动力学模型中我们直接预测状态差值而非下一状态,把Δt+1=st+1−st\Delta_{t+1}=s_{t+1}-s_t作为真实监督目标,再通过残差形式恢复下一状态s^t+1=st+Δ^t+1\hat{s}_{t+1}=s_t+\hat{\Delta}_{t+1}。预测差值通常比直接预测绝对状态更容易,因为很多连续控制系统在一个时间步内状态变化较小,网络只需学习动作和局部动力学造成的增量,而不必重复复制当前状态中已经存在的大量信息。需要注意的是输入与输出都需要归一化,先将状态和动作拼接为 ztz_t 再进行归一化 zˉt=zt−μzσz+ε\bar z_t=\frac{z_t-\mu_z}{\sigma_z+\varepsilon}。同时推理时要先把网络输出反归一化后加到原状态,得到预测的下一状态。

← 全部文章 edit on github →