Diffusion Model Predictive Control
文章概括
引用:
@article{zhou2024diffusion,
title={Diffusion Model Predictive Control},
author={Zhou, Guangyao and Swaminathan, Sivaramakrishnan and Raju, Rajkumar Vasudeva and Guntupalli, J Swaroop and Lehrach, Wolfgang and Ortiz, Joseph and Dedieu, Antoine and L{\'a}zaro-Gredilla, Miguel and Murphy, Kevin},
journal={arXiv preprint arXiv:2410.05364},
year={2024}
}
Zhou, G., Swaminathan, S., Raju, R.V., Guntupalli, J.S., Lehrach, W., Ortiz, J., Dedieu, A., Lázaro-Gredilla, M. and Murphy, K., 2024. Diffusion Model Predictive Control. arXiv preprint arXiv:2410.05364.
原文:https://arxiv.org/abs/2410.05364
代码、数据和视频:https
系列文章:
请在
《
《
《文章
》
》
》 专栏中查找
摘要
我们提出了一种新颖的MPC方法——扩散模型预测控制(D-MPC),该方法学习了一个多步骤的动作提议和一个多步骤的动力学模型,两者都使用扩散模型,并将它们结合起来用于在线MPC。在流行的D4RL基准测试上,我们展示了明显优于现有基于模型的离线规划方法使用MPC的性能,并与最先进的(SOTA)基于模型和无模型的强化学习方法竞争。我们还展示了D-MPC在运行时优化新奖励函数和适应新动力学的能力,并突出了与现有基于扩散的规划基线相比的优势。
1. Introduction
模型预测控制(MPC),也称为滚动时域控制,使用动力学模型和行动选择机制(规划器)来构建能够通过最大化已知目标函数(参见例如[Sch+21]对MPC的回顾)解决各种任务的“代理”。更准确地说,我们希望设计一个代理,它能够最大化从当前时间步 t t t开始的规划范围 F F F内的目标函数 J ( a t : t + F − 1 , s t + 1 : t + F ) J(a_{t:t+F-1}, s_{t+1:t+F}) J(at:t+F−1,st+1:t+F)。
a t : t + F − 1 = arg max a t : t + F − 1 E p d ( s t + 1 : t + F ∣ s t , a t : t + F − 1 , h t ) [ J ( a t : t + F − 1 , s t + 1 : t + F ) ] (1) a_{t:t+F-1} = \arg \max_{a_{t:t+F-1}} \mathbb{E}_{p_d(s_{t+1:t+F} \mid s_t, a_{t:t+F-1},h_t)} \left[ J(a_{t:t+F-1}, s_{t+1:t+F}) \right] \tag{1} at:t+F−1=argat:t+F−1maxEpd(st+1:t+F∣st,at:t+F−1,ht)[J(at:t+F−1,st+1:t+F)](1)
这个公式表示在模型预测控制(MPC)中,动作序列 a t : t + F − 1 a_{t:t+F-1} at:t+F−1 是通过最大化期望目标函数 J J J 来选择的,其中 J J J 是关于未来状态 s t + 1 : t + F s_{t+1:t+F} st+1:t+F 和动作序列的函数。这里的期望是在给定当前状态 s t s_t st 和之前动作历史 a t − 1 a_{t-1} at−1 的情况下,对未来动作 a t : t + F − 1 a_{t:t+F-1} at:t+F−1 和状态 s t + 1 : t + F s_{t+1:t+F} st+1:t+F 的联合分布 p d p_d pd 进行积分计算得到的。
其中 h t ≡ { s 1 : t − 1 , a 1 : t − 1 } h_t \equiv \{s_{1:t-1}, a_{1:t-1}\} ht≡{s1:t−1,a1:t−1} 是历史信息。因此,MPC 将代理需要解决的问题分解为两部分:一个建模问题(表示动态模型 p d ( s t + 1 : t + F ∣ s 1 : t , a 1 : t + F − 1 ) p_d(s_{t+1:t+F} \mid s_{1:t}, a_{1:t+F-1}) pd(st+1:t+F∣s1:t,a1:t+F−1),在本文中我们从离线轨迹数据中学习)和一个规划问题(为给定的奖励函数找到最佳的行动序列)。一旦我们选择了行动序列,我们可以执行第一个行动 a t a_t at(或一系列行动的一部分),然后在观察到结果的下一个状态后重新规划,从而创建一个闭环策略。
1. 模型预测控制的核心概念
MPC的基本思想是利用系统的动力学模型,在每个时间步长上预测系统未来的行为,并根据这些预测在有限的规划范围内优化一个目标函数,生成最优的控制动作。
动力学模型(Dynamics Model):
- 系统的状态由 s t s_t st 表示,动作由 a t a_t at 表示。
- 动力学模型 p d ( s t + 1 : t + F ∣ s t , a t : t + F − 1 , h t ) p_d(s_{t+1:t+F} \mid s_t, a_{t:t+F-1}, h_t) pd(st+1:t+F∣st,at:t+F−1,ht) 描述了状态如何随动作的变化而演化。
- 历史信息 h t ≡ { s 1 : t − 1 , a 1 : t − 1 } h_t \equiv \{s_{1:t-1}, a_{1:t-1}\} ht≡{s1:t−1,a1:t−1} 包括过去的状态和动作序列,用于捕获时间相关性。
目标函数(Objective Function):
- J ( a t : t + F − 1 , s t + 1 : t + F ) J(a_{t:t+F-1}, s_{t+1:t+F}) J(at:t+F−1,st+1:t+F) 是一个目标函数,用于衡量未来动作序列 a t : t + F − 1 a_{t:t+F-1} at:t+F−1 在规划范围 F F F 内的好坏。
- 目标通常是某种奖励或成本函数的期望,例如最小化能耗、最大化速度或跟踪目标路径。
优化问题:
- MPC的任务是在规划范围内找到使目标函数最大化的动作序列 a t : t + F − 1 a_{t:t+F-1} at:t+F−1: a t : t + F − 1 = arg max a t : t + F − 1 E p d ( s t + 1 : t + F ∣ s t , a t : t + F − 1 , h t ) [ J ( a t : t + F − 1 , s t + 1 : t + F ) ] a_{t:t+F-1} = \arg \max_{a_{t:t+F-1}} \mathbb{E}_{p_d(s_{t+1:t+F} \mid s_t, a_{t:t+F-1},h_t)} \left[ J(a_{t:t+F-1}, s_{t+1:t+F}) \right] at:t+F−1=argat:t+F−1maxEpd(st+1:t+F∣st,at:t+F−1,ht)[J(at:t+F−1,st+1:t+F)]
滚动规划(Receding Horizon):
- 优化完成后,MPC只执行优化序列中的第一个动作 a t a_t at,随后观察到的状态更新后重新规划。这种滚动规划机制确保系统能够实时响应外部变化,形成闭环控制。
2. 详细解释公式
a t : t + F − 1 = arg max a t : t + F − 1 E p d ( s t + 1 : t + F ∣ s t , a t : t + F − 1 , h t ) [ J ( a t : t + F − 1 , s t + 1 : t + F ) ] a_{t:t+F-1} = \arg \max_{a_{t:t+F-1}} \mathbb{E}_{p_d(s_{t+1:t+F} \mid s_t, a_{t:t+F-1},h_t)} \left[ J(a_{t:t+F-1}, s_{t+1:t+F}) \right] at:t+F−1=argat:t+F−1maxEpd(st+1:t+F∣st,at:t+F−1,ht)[J(at:t+F−1,st+1:t+F)]
优化变量: 动作序列 a t : t + F − 1 a_{t:t+F-1} at:t+F−1 是优化变量,代表从当前时间步开始到规划范围结束的动作。
状态预测: 动态模型 p d ( s t + 1 : t + F ∣ s t , a t : t + F − 1 , h t ) p_d(s_{t+1:t+F} \mid s_t, a_{t:t+F-1}, h_t) pd(st+1:t+F∣st,at:t+F−1,ht) 用于预测未来状态的分布。
目标函数期望: E [ ⋅ ] \mathbb{E}[\cdot] E[⋅] 代表期望值,表明需要考虑随机动态模型的不确定性。
两大任务分解:
- 建模任务: 使用离线数据训练一个动力学模型 p d p_d pd,能够精准预测系统行为。
- 规划任务: 利用优化算法,寻找使目标函数最大化的最优动作序列。
3. 例子:自动驾驶中的路径跟踪
场景描述:假设一个自动驾驶汽车需要沿着指定的目标路径行驶,并且目标是尽可能准确地跟随路径,同时最小化燃油消耗。a. 系统模型
- 状态 s t s_t st: 当前的位置、速度、航向角。
- 动作 a t a_t at: 转向角和油门开度。
- 动力学模型 p d p_d pd: 通过离线数据训练的车辆动力学模型,用于预测在给定动作序列下未来的车辆位置。
b. 目标函数
J ( a t : t + F − 1 , s t + 1 : t + F ) = − ∑ k = t t + F − 1 ( 横向偏差 ( s k ) 2 + 航向偏差 ( s k ) 2 + λ ⋅ 燃油消耗 ( a k ) ) J(a_{t:t+F-1}, s_{t+1:t+F}) = -\sum_{k=t}^{t+F-1} \left( \text{横向偏差}(s_k)^2 + \text{航向偏差}(s_k)^2 + \lambda \cdot \text{燃油消耗}(a_k) \right) J(at:t+F−1,st+1:t+F)=−k=t∑t+F−1(横向偏差(sk)2+航向偏差(sk)2+λ⋅燃油消耗(ak))
- 横向偏差和航向偏差用于衡量轨迹跟踪的准确性。
- 燃油消耗是一种成本, λ \lambda λ 是权重参数。
c. MPC执行流程
- 当前状态: 假设当前车辆状态为 s t s_t st。
- 预测未来状态: 使用动力学模型预测在不同动作序列下的未来状态 s t + 1 : t + F s_{t+1:t+F} st+1:t+F。
- 优化动作序列: 通过优化算法(如梯度下降或CEM算法),找到使目标函数 J J J 最大化的动作序列 a t : t + F − 1 a_{t:t+F-1} at:t+F−1。
- 执行动作: 执行序列中的第一个动作 a t a_t at,更新车辆状态。
- 重复规划: 观察新的状态后,重新执行上述步骤。
d. 结果
通过这种滚动规划方法,自动驾驶车辆能够动态应对复杂的路况变化,同时维持目标路径的精确跟踪。
4. 优势与应用
优点:
- 闭环控制: 通过滚动规划应对环境的不确定性。
- 灵活性: 可以引入复杂的目标函数和约束。
- 数据高效性: 动力学模型可以从离线数据中学习。
典型应用:
- 机器人控制(如抓取、行走机器人)。
- 自动驾驶(路径规划和跟踪)。
- 工业过程控制(化工、制造业中的实时优化)。
通过MPC,复杂系统的控制问题能够以系统化的方式解决,提供高效、鲁棒的控制性能。
与标准策略学习方法相比,这种MPC方法的优势在于,我们可以在测试时轻松适应新的奖励函数,只需寻找具有高奖励的状态-行动轨迹。这使得该方法比策略学习方法更加灵活,后者设计用来优化固定的奖励函数(目标条件化的强化学习(RL)可以增加策略的灵活性,但所请求的目标(或与之非常相似的目标)需要在训练集中已经被看到,因此它无法在运行时优化完全新颖的奖励函数。)。此外,学习动态模型通常比学习策略需要更少的数据,因为监督信号(下一个状态预测)是高维的,降低了样本复杂性。此外,如我们在实验中所示,动态模型通常比策略更容易适应新环境。
然而,要使MPC在实践中有效,我们必须解决两个主要问题。首先,动态模型需要足够准确,以避免累积错误问题,即随着轨迹的展开,下一状态预测的错误会随时间累积。其次,规划算法需要足够强大,能够选择一个好的行动序列,避免需要在庞大的可能行动空间中进行穷尽搜索。
我们通过使用扩散模型来学习以下内容的联合轨迹级表征,从而解决这两个问题(1) 世界动力学, p d ( s t + 1 : t + F ∣ s t , a t : t + F − 1 , h t ) p_d(s_{t+1:t+F} | s_t, a_{t:t+F-1}, h_t) pd(st+1:t+F∣st,at:t+F−1,ht),我们通过使用离线的“play”数据学习得到 [Cui+23]。以及(2)动作序列提案分布, ρ ( a t : t + F − 1 ∣ h t ) \rho(a_{t:t+F-1} | h_t) ρ(at:t+F−1∣ht),我们也可以通过在一些示范数据上使用行为克隆来进行离线学习。尽管这样的提案分布可能建议在训练中未见过的新奖励上采取并非最优的行动,我们展示了如何使用一种简单的“抽样、评分和排名”(SSR)方法来弥补这一点,这是随机射击方法的一个变体,使用在离线数据集上训练的多步扩散模型作为行动提议,并且是轨迹优化或交叉熵方法等更复杂方法的一个简单替代品。我们将这种整体方法称为扩散模型预测控制(D-MPC)。
我们在D4RL基准的多种基于状态的连续控制任务上通过实验展示,我们提出的D-MPC框架显著优于现有的基于模型的离线规划方法,例如MBOP [ADA21],它学习单步动力学模型和单步行动提案,因此遭受复合误差问题。相比之下,D-MPC学习更准确的轨迹级模型,避免了这一问题,并使我们的基于模型的方法能够匹敌(有时甚至超越)基于模型的离线强化学习方法的性能。我们还展示了我们的D-MPC方法能在测试时优化新奖励,并且我们能够在新环境中(在机器人的模拟电机缺陷后)使用少量数据微调动力学模型。最后我们对我们的方法进行了消融分析,并展示了不同部分——即使用随机多步动力学、多步行动提议和SSR规划器——每个部分都各自有价值,但结合起来时能产生更多的好处。
1. 背景与挑战
1.1 动力学建模的挑战
传统的模型预测控制方法,如MBOP(Model-Based Offline Planning),通常依赖单步动力学模型和单步动作提案。这些方法存在以下问题:
- 复合误差:单步模型在时间序列上叠加后误差逐步放大,导致预测的轨迹不准确。
- 新奖励适配:在训练中未见过的奖励下,单步提案分布可能无法有效建议优化的动作。
1.2 提案分布与优化
行为克隆(Behavior Cloning, BC)可以离线学习动作提案分布 ρ ( a t : t + F − 1 ∣ h t ) \rho(a_{t:t+F-1} \mid h_t) ρ(at:t+F−1∣ht),但其建议的动作可能在新环境下次优,特别是训练中未见奖励的情况下。D-MPC通过轨迹级别的多步扩散模型解决了这些问题,结合了“抽样、评分和排名”(SSR)实现更鲁棒的规划和优化。
2. D-MPC的核心组件
2.1 世界动力学 p d ( s t + 1 : t + F ∣ s t , a t : t + F − 1 , h t ) p_d(s_{t+1:t+F} \mid s_t, a_{t:t+F-1}, h_t) pd(st+1:t+F∣st,at:t+F−1,ht)
- 定义:描述系统从当前状态 s t s_t st 和动作序列 a t : t + F − 1 a_{t:t+F-1} at:t+F−1 开始,未来的状态演化分布。
- 学习方法:
- 使用离线“play”数据进行学习 [Cui+23]。
- 数据集包括大量未标注的行为数据,通过多步扩散模型学习轨迹级动力学,避免复合误差问题。
2.2 动作序列提案分布 ρ ( a t : t + F − 1 ∣ h t ) \rho(a_{t:t+F-1} \mid h_t) ρ(at:t+F−1∣ht)
- 定义:描述在给定历史信息 h t h_t ht 下,动作序列的分布。
- 学习方法:
- 在离线示范数据上通过行为克隆(BC)进行训练。
- 提案分布捕获训练数据的分布特征,但可能在未见奖励或新环境中次优。
2.3 SSR
- 目标:补偿提案分布可能导致的次优动作。
- 机制:
- 抽样:从 ρ ( a t : t + F − 1 ∣ h t ) \rho(a_{t:t+F-1} \mid h_t) ρ(at:t+F−1∣ht) 中生成多个候选动作序列。
- 评分:利用轨迹奖励函数对候选动作序列评分。
- 排名:根据得分对候选序列排序,选择最优的动作序列。
SSR避免了更复杂的轨迹优化方法,如交叉熵法(CEM),在降低计算复杂度的同时保留了规划性能。
3. D-MPC的工作流程
训练阶段:
- 用离线“play”数据训练多步扩散模型 p d ( s t + 1 : t + F ∣ s t , a t : t + F − 1 , h t ) p_d(s_{t+1:t+F} \mid s_t, a_{t:t+F-1}, h_t) pd(st+1:t+F∣st,at:t+F−1,ht)。
- 用示范数据训练提案分布 ρ ( a t : t + F − 1 ∣ h t ) \rho(a_{t:t+F-1} \mid h_t) ρ(at:t+F−1∣ht)。
测试阶段:
- 输入:当前状态 s t s_t st 和历史信息 h t h_t ht。
- 抽样动作序列:从提案分布 ρ ( a t : t + F − 1 ∣ h t ) \rho(a_{t:t+F-1} \mid h_t) ρ(at:t+F−1∣ht) 中生成候选动作序列。
- 轨迹评分:利用扩散模型评估每个候选动作序列的轨迹奖励。
- 选择动作序列:通过SSR选出最优的动作序列,执行第一个动作 a t a_t at。
4. 实例:机器人抓取任务
场景描述
- 一个机器人手臂需要在不同物体间快速切换抓取目标。
- 动力学受多种复杂因素影响,如物体形状、摩擦力。
D-MPC的应用
离线训练:
- 从“play”数据(随机抓取和放置)中学习世界动力学。
- 从示范数据(成功抓取的动作序列)中学习提案分布。
测试阶段:
- 抽样:从 ρ ( a t : t + F − 1 ∣ h t ) \rho(a_{t:t+F-1} \mid h_t) ρ(at:t+F−1∣ht) 中生成多个抓取动作序列。
- 评估:利用多步扩散模型预测每个动作序列的成功率。
- 选择:选择最高成功率的动作序列,执行抓取动作。
结果:
- 在未见过的物体上,D-MPC能快速适应,并实现高效抓取。
- 在机器人部件失效后,少量数据微调使其恢复抓取能力。
总结来说,我们的主要贡献是:
- 我们引入了扩散模型预测控制(D-MPC),结合了多步动作提案和使用扩散模型的动力学模型,用于在线MPC。
- 我们展示了D-MPC在D4RL基准[Fu+20]测试上超过了现有的基于模型的离线规划方法,并且与SOTA增强学习方法具有竞争力。
- 我们提出了一个“采样,评分和排名”(SSR)规划方法,使D-MPC能够在运行时优化新的奖励函数。
- 我们展示了D-MPC通过微调适应新动力学的能力。
- 通过消融,我们验证了我们方法的关键组成部分各自以及结合起来的好处。
2. Related work
相关工作可以按照表1中的层次结构进行划分。基于模型的方法假设一个特定的动力学模型,而无模型方法,无论是更传统的——行为克隆(BC)、保守Q学习(CQL)[Kum+20]、隐式Q学习(IQL)[KNL21]等——还是基于扩散的——扩散策略(DP)[Chi+23]、扩散BC(DBC)[Pea+23]——仅仅学习一个策略。这可以通过直接从专家数据回归或使用Q-学习的某种变体来完成。基于模型的方法可以根据它们如何使用模型进一步划分:Dyna式[Sut91]方法使用它学习策略,无论是在线的还是离线的,它们可以在运行时使用,而MPC式方法则在运行时使用完整模型进行规划,可能还会使用建议分布的指导(请注意,建议分布(我们用 𝜌(𝑎)表示)不同于政策(我们用 𝜋(𝑎)表示),因为它不是直接决定下一个最佳行动,而是帮助加速寻找最佳行动。)。
表1 | 三种分布的故事:比较离线强化学习方法的特性。我们提到的方法定义如下:MOREL等 [Kid+20; Yu+20; Yu+21; RLH22],Dreamer [Haf+20],DWMS(Diffusion World Models)[Alo+23],UniSim [Yan+24],SynthER [Lu+24],DWM(Diffusion World Model)[Din+24],PolyGRAD [RYP24],Diffuser [Jan+22],DT(决策转换器)[Che+21],TT(轨迹转换器)[JLL21],BC(行为克隆),CQL(保守Q学习)[Kum+20],IQL(隐式Q学习)[KNL21],DD(Decision Diffuser)[Aja+23],DP(Diffusion Policy)[Chi+23],IH(模仿人类)[Pea+23],DBC(Diffusion BC)[Wan+23]。
我们可以使用联合分布 p j ( s , a ) p_j(s, a) pj(s,a) 或分解分布 p d ( s ∣ a ) ρ ( a ) p_d(s|a)\rho(a) pd(s∣a)ρ(a) 来模拟模型的动力学和提议。后者提供了额外的灵活性,因为这两部分都可以被精细调整或甚至独立地重新学习。最后,我们可以将这些模型归类为单步(SS)或多步(MS)。单步方法将动力学建模为 p d ( s t + 1 ∣ h t , a t + 1 ) p_d(s_{t+1}|h_t, a_{t+1}) pd(st+1∣ht,at+1)(其中 h t = ( s t − H : t , a t − H : t ) h_t = (s_{t-H:t}, a_{t-H:t}) ht=(st−H:t,at−H:t) 是历史长度 H H H),提议为 ρ ( a t ∣ h t ) \rho(a_t|h_t) ρ(at∣ht),因此我们预测(一个分布在)下一个时间步,条件是过去的观察(和动力学的下一个动作)。我们通过将其以自回归形式组成,作为单步条件的乘积,扩展到整个长度为 F F F 的计划范围,即 p d ( s t + 1 : t + F ∣ s 1 : t , a 1 : t + F − 1 ) = ∏ t t + F − 1 p d ( s t + 1 ∣ s t , a t , h t ) p_d(s_{t+1:t+F}|s_{1:t}, a_{1:t+F-1}) = \prod_{t}^{t+F-1} p_d(s_{t+1}|s_t, a_t, h_t) pd(st+1:t+F∣s1:t,a1:t+F−1)=∏tt+F−1pd(st+1∣st,at,ht)。(注意,即使 h t h_t ht 包含整个过去的历史,即是非马尔可夫的,这也可能导致累积错误。)相比之下,多步方法在轨迹级别上模拟联合分布。因此,MS动力学模型表示 p d ( s t + 1 : t + F ∣ s t , h t , a t : t + F − 1 ) p_d(s_{t+1:t+F}|s_t, h_t, a_{t:t+F-1}) pd(st+1:t+F∣st,ht,at:t+F−1) 和 MS提议表示 ρ ( a t : t + F − 1 ∣ s t , h t ) \rho(a_{t:t+F-1}|s_t, h_t) ρ(at:t+F−1∣st,ht)。
一些近期的论文采用了SS Dyna框架。有些使用传统的动力学建模(例如,MOREL [Kid+20],MOPO [Yu+20],COMBO [Yu+21],RAMBO-RL [RLH22] 以及 Dreamer [Haf+20]),而其他则使用扩散模型。后者包括“Diffusion for World Modeling”论文 [Alo+24](之前称为“Diffusion World Models” [Alo+23]),“UniSim”论文 [Yan+24],以及“SynthER”论文 [Lu+24]。这些论文被用来在训练时从模型中生成样本,以便用比标准无模型强化学习(RL)方法更高的数据效率来训练策略。还有一些其他的近期论文,如“Diffusion World Model” [Din+24] 和 “PolyGRAD” [RYP24],提议使用扩散来创建联合多步(轨迹级)动力学模型。然而,作为Dyna框架的一部分,它们无法像D-MPC那样在运行时进行规划。
关于MPC的文献非常多。与我们的工作最为接近的可能是“Diffuser”[Jan+22],该论文使用扩散模型来拟合一个联合的(状态,行为)多步模型 p j ( s 1 : T , a 1 : T ) p_j(s_{1:T}, a_{1:T}) pj(s1:T,a1:T),利用离线轨迹数据。然后,他们使用分类器引导来驱动抽样过程,在测试时生成优化新奖励的联合序列。与我们的方法的主要区别在于,我们将联合表示为两个模型的乘积,即动态模型 p d ( s 1 : T ∣ a 1 : T ) p_d(s_{1:T} | a_{1:T}) pd(s1:T∣a1:T)和策略/行动提案 ρ ( a 1 : T ) \rho(a_{1:T}) ρ(a1:T)。正如我们在4.3节所展示的,这种因式分解使我们能够轻松适应世界的变化(例如,由于硬件缺陷)仅通过少量新数据,而Difrfuser在这方面则存在困难。此外,我们提出了一个简单的规划算法,该算法不依赖于分类器引导。其他使用带有联合提案的MS的工作包括决策转换器(DT)[Che+21]和轨迹转换器[JLL21]。
同样,“决策扩散”论文[Aja+23]学习了状态的轨迹分布,并使用无分类器引导生成预测奖励高的轨迹;然后使用单独训练的逆动力学模型(IDM)将状态序列转换为行动序列。然而,这种方法不允许在运行时指定新的奖励功能。
MPC也已应用于基于模型的强化学习,其中TD-MPC[HWS22]和TD-MPC2[HSW23]是代表性方法。D-MPC与TD-MPC的工作路线不同,D-MPC使用多步扩散模型用于行动提案和动力学模型,而TD-MPC的工作路线使用单步MLPs。此外,TD-MPC的工作重点是在线学习与环境互动,而在D-MPC中,我们专注于从离线数据中学习,然后在环境中使用学习到的模型进行MPC。
基于模型的离线规划或MBOP论文[ADA21]是我们方法的最初灵感。与之前的MPC方法相比,它将动力学模型和行动提案模型分解,这些模型分别学习并用于规划以优化新奖励。与我们的工作的主要区别在于,他们使用一系列一步确定性MLPs作为他们的动力学模型和行动模型,而我们使用单个随机轨迹级扩散模型。此外,他们使用一种有些复杂的轨迹优化方法来选择行动,而我们使用我们简单的SSR方法。最后,我们还研究了模型对新动力学的适应性。
D-MPC是MPC、分解动力学/行动提案和MS扩散建模的新颖结合。这使我们能够适应新的奖励和动力学,并避免复合误差。
3. 方法
我们现在将描述我们的新D-MPC方法。我们的方法可以看作是基于模型的离线规划(MBOP)论文[ADA21]的多步扩散扩展,同时也进行了一些其他的修改和简化。
3.1 模型预测控制
D-MPC首先在离线阶段学习动力学模型 p s ∣ a p_{s|a} ps∣a、行动提案 π \pi π和启发式价值函数 J J J(见下文),正如我们在3.2节中讨论的,然后继续在环境中执行一个行动,并使用规划器规划下一序列的行动,正如我们在3.3节中讨论的。整个MPC的伪代码在算法1中给出。
3.2. 模型学习
我们假设可以访问一个由(状态, 行动, 奖励)三元组组成的离线轨迹数据集: D = { s 1 : T 1 1 , a 1 : T 1 1 , r 1 : T 1 2 , s 1 : T 2 2 , a 1 : T 2 2 , r 1 : T 2 m , … , s 1 : T M M , a 1 : T M M , r 1 : T M M } \mathcal{D} = \{\mathbf{s}^1_{1:T_1}, \mathbf{a}^1_{1:T_1}, \mathbf{r}^2_{1:T_1}, \mathbf{s}^2_{1:T_2}, \mathbf{a}^2_{1:T_2}, \mathbf{r}^m_{1:T_2}, \ldots, \mathbf{s}^M_{1:T_M}, \mathbf{a}^M_{1:T_M}, \mathbf{r}^M_{1:T_M}\} D={s1:T11,a1:T11,r1:T12,s1:T22,a1:T22,r1:T2m,…,s1:TMM,a1:TMM,r1:TMM}。我们利用这些数据来拟合一个基于扩散的动态模型 p d ( s t + 1 : t + F ∣ s t , h t , a t : t + F − 1 ) p_d(\mathbf{s}_{t+1:t+F}|\mathbf{s}_t, \mathbf{h}_t, \mathbf{a}_{t:t+F-1}) pd(st+1:t+F∣st,ht,at:t+F−1) 和另一个基于扩散的行动提案 ρ ( a t : t + F − 1 ∣ s t , h t ) \rho(\mathbf{a}_{t:t+F-1}|\mathbf{s}_t, \mathbf{h}_t) ρ(at:t+F−1∣st,ht)。为了拟合这些模型,我们以常规方式最小化去噪得分匹配损失。我们在附录A中详细回顾了扩散模型训练,并且推荐读者参考例如[Kar+22]的额外讨论。
我们还定义了一个函数 J J J,该函数可以近似地计算出任何建议的状态和行动序列下的 “奖励-目标”(reward-to-go):
J ( s t : t + F , a t : t + F − 1 ) = E [ ∑ k = t t + F − 1 γ k − t R ( s k , a k ) + γ F V ( s t + F ) ] (2) J(s_{t:t+F}, a_{t:t+F-1}) = \mathbb{E} \left[ \sum_{k=t}^{t+F-1} \gamma^{k-t} R(s_k, a_k) + \gamma^F V(s_{t+F}) \right] \tag{2} J(st:t+F,at:t+F−1)=E[k=t∑t+F−1γk−tR(sk,ak)+γFV(st+F)](2)
这是一个模型预测控制中的价值函数,它累积未来奖励的期望值,其中 R ( s k , a k ) R(s_k, a_k) R(sk,ak) 是在状态 s k s_k sk 和行动 a k a_k ak 下获得的奖励, γ \gamma γ 是折扣因子, V ( s t + F ) V(s_{t+F}) V(st+F) 是终点状态的价值函数。
在这里,
γ
\gamma
γ 是折扣因子,
V
(
s
)
V(s)
V(s) 表示从状态
s
s
s 的价值函数(即,这个搜索过程叶节点的未来奖励估计)。为了学习价值函数,我们使用一个 transformer
从
(
s
t
:
t
+
F
,
a
t
:
t
+
F
−
1
)
(s_{t:t+F}, a_{t:t+F-1})
(st:t+F,at:t+F−1) 回归到方程(2)中的折扣未来奖励。我们使用 L2 损失进行回归。我们还使用transformer
学习
J
J
J(尽管如果奖励函数
R
R
R 已知,我们也可以直接计算
J
J
J,并且我们使用
V
V
V 的一个可接受的下界(如 0))。我们在 MPC 中使用
J
J
J 作为优化的目标函数,并用来指定新颖的任务。关于模型架构和超参数的额外细节,请参见附录 E。
请注意,与 MBOP [ADA21] 不同,我们不需要训练集成,因为扩散模型足够表达各自分布的丰富性。此外,与 [ADA21] 相反,我们不需要训练一个单独的奖励函数:我们在规划视界开始时,针对一系列给定的状态和行动估计我们的价值函数。通过这种方式,我们的目标函数 J J J 已经包含了视界范围内的估计奖励。
详细介绍扩散模型预测控制(D-MPC)及其伪代码分析
扩散模型预测控制(D-MPC)结合了扩散模型的强大表达能力和模型预测控制(MPC)的优化框架,提供了一种基于轨迹的离线强化学习方法。
1. 离线数据集与建模
1.1 离线数据集 D \mathcal{D} D 离线数据集由多个轨迹组成,每条轨迹包含状态 ( s \mathbf{s} s)、动作 ( a \mathbf{a} a) 和奖励 ( r \mathbf{r} r) 的三元组: D = { s 1 : T 1 1 , a 1 : T 1 1 , r 1 : T 1 1 , … , s 1 : T M M , a 1 : T M M , r 1 : T M M } . \mathcal{D} = \{\mathbf{s}^1_{1:T_1}, \mathbf{a}^1_{1:T_1}, \mathbf{r}^1_{1:T_1}, \ldots, \mathbf{s}^M_{1:T_M}, \mathbf{a}^M_{1:T_M}, \mathbf{r}^M_{1:T_M}\}. D={s1:T11,a1:T11,r1:T11,…,s1:TMM,a1:TMM,r1:TMM}.
- 作用:用于拟合两个基于扩散的模型:
- 动态模型: p d ( s t + 1 : t + F ∣ s t , h t , a t : t + F − 1 ) p_d(\mathbf{s}_{t+1:t+F}|\mathbf{s}_t, \mathbf{h}_t, \mathbf{a}_{t:t+F-1}) pd(st+1:t+F∣st,ht,at:t+F−1),预测未来的轨迹分布。
- 动作提案模型: ρ ( a t : t + F − 1 ∣ s t , h t ) \rho(\mathbf{a}_{t:t+F-1}|\mathbf{s}_t, \mathbf{h}_t) ρ(at:t+F−1∣st,ht),生成候选的动作序列。
1.2 模型训练
- 去噪得分匹配损失: 用于训练扩散模型,通过最小化该损失学习动态模型和提案分布的分布特性。
- 价值函数 V ( s ) V(s) V(s): 从状态 s s s 开始的未来奖励估计,用于规划和优化。
2. 目标函数 J J J
目标函数 J J J 近似计算任意状态-动作序列的奖励目标: J ( s t : t + F , a t : t + F − 1 ) = E [ ∑ k = t t + F − 1 γ k − t R ( s k , a k ) + γ F V ( s t + F ) ] . J(s_{t:t+F}, a_{t:t+F-1}) = \mathbb{E} \left[ \sum_{k=t}^{t+F-1} \gamma^{k-t} R(s_k, a_k) + \gamma^F V(s_{t+F}) \right]. J(st:t+F,at:t+F−1)=E[k=t∑t+F−1γk−tR(sk,ak)+γFV(st+F)].
组成部分:
- 折扣奖励: ∑ k = t t + F − 1 γ k − t R ( s k , a k ) \sum_{k=t}^{t+F-1} \gamma^{k-t} R(s_k, a_k) ∑k=tt+F−1γk−tR(sk,ak),计算视界范围内的即时奖励。
- 价值函数: γ F V ( s t + F ) \gamma^F V(s_{t+F}) γFV(st+F),估计规划视界结束后的长期奖励。
训练价值函数:通过
transformer
模型对 ( s t : t + F , a t : t + F − 1 ) (s_{t:t+F}, a_{t:t+F-1}) (st:t+F,at:t+F−1) 回归到折扣未来奖励,使用 L2 损失。关键点:
- 不需要训练独立的奖励函数,因为 J J J 中已经包含了视界范围的奖励估计。
- V ( s ) V(s) V(s) 可用下界近似(如 0),确保优化的稳定性。
3. D-MPC的算法与伪代码
算法 1 展示了 D-MPC 的主要执行逻辑,分为训练阶段和推理阶段。输入说明:
- D \mathcal{D} D: 离线轨迹数据集。
- N N N: 样本数量。
- F F F: 预测视界。
- H H H: 历史信息的长度。
算法步骤解析:
模型训练:
- 动态模型 p d p_d pd 和动作提案分布 ρ \rho ρ 由 D \mathcal{D} D 训练得到。
- 目标函数 J J J 由变压器或公式直接计算。
主循环(MPC Loop):
- 初始状态与历史信息:从环境初始化状态 s 0 s_0 s0 和历史 h 0 h_0 h0。
- 动作规划:
a t = planner.plan ( s t , h t , p d , ρ , J , N , F , H ) . a_t = \text{planner.plan}(s_t, h_t, p_d, \rho, J, N, F, H). at=planner.plan(st,ht,pd,ρ,J,N,F,H).
- 根据动态模型 p d p_d pd 和提案分布 ρ \rho ρ,优化目标函数 J J J,规划最优动作序列。
- 环境更新:
执行动作 a t a_t at,观察新的状态 s t + 1 s_{t+1} st+1 和奖励 r t + 1 r_{t+1} rt+1。- 更新历史信息:维护一个固定长度 H H H 的历史信息。
代码逻辑:
# 初始化模型与参数
(p_d, ρ, J) = train(D) # 基于数据集训练动态模型与目标函数
s_0 = env.init() # 初始化环境状态
h_0 = {s_0} # 初始化历史信息
# 主循环
for t in range(T):
a_t = planner.plan(s_t, h_t, p_d, ρ, J, N, F, H) # 规划动作序列
(s_{t+1}, r_{t+1}) = env.step(s_t, a_t) # 环境执行动作
h_t.append(a_t, s_{t+1}, r_{t+1}) # 更新历史
h_t = suffix(h_t, H) # 保持历史长度
4. 实例:机器人抓取任务
场景描述 假设一个机器人需要抓取多个目标物体,并且环境中存在随机噪声和变化。步骤:
训练:
- 使用机器人抓取任务的离线数据,训练动态模型 p d p_d pd 和动作提案分布 ρ \rho ρ。
- 使用奖励函数 R ( s , a ) R(s, a) R(s,a)(如成功抓取的奖励)训练价值函数 V ( s ) V(s) V(s)。
测试:
- 输入: 当前状态 s t s_t st 和历史信息 h t h_t ht。
- 规划: 根据动态模型预测未来轨迹,结合提案分布 ρ \rho ρ,优化目标函数 J J J,选择最优动作序列。
- 执行: 执行第一个动作,观察新的状态和奖励。
结果:
- 在高噪声环境中,D-MPC 能够有效规划动作,动态适应环境变化,提高抓取成功率。
5. D-MPC的优势
- 减少复合误差:通过轨迹级扩散模型显著提高预测精度。
- 无需额外奖励函数:目标函数 J J J 集成了奖励估计。
- 高效规划:SSR方法(抽样、评分、排序)简单高效。
- 适应性强:能够在新任务、新奖励或新环境下快速适应。
通过结合扩散模型和MPC框架,D-MPC 在复杂连续控制任务中表现出色。
3.3. 规划(Planning)
D-MPC与任何规划算法兼容。当动作空间是离散的,我们可以使用蒙特卡洛树搜索解决这个优化问题,如 MuZero 算法 [Sch+20] 中所使用的。这里我们只考虑连续动作空间。
我们提出了一个简单的算法,称为“采样,评分和排名”,表示为算法 2。为了规划,在给定当前状态 s t s_t st 和历史 h t h_t ht 的情况下,我们使用我们的扩散动作提案 ρ \rho ρ 来采样 N N N 个动作序列,我们使用 p s ∣ a p_{s|a} ps∣a 预测相应的状态序列,我们用目标函数 J J J 对这些状态/动作序列进行评分,我们对它们进行排名以选择最佳序列,最后我们返回最佳序列中的第一个动作,并重复整个过程。我们通过实验证明,这种方法优于更复杂的方法,如 MBOP 论文中使用的轨迹优化方法,我们在附录中详细描述了这一方法(算法 5)。我们认为这是因为扩散模型已经在轨迹层面进行推理,并且可以原生地生成一组多样化的合理候选者,无需额外的机制。
详细介绍“采样、评分和排名”(SSR)算法及其在D-MPC中的作用
“采样、评分和排名”(Sample, Score, and Rank, SSR)算法是D-MPC(扩散模型预测控制)中的核心规划方法。它是一种简单且高效的优化策略,专为连续动作空间设计,通过利用扩散模型的表达能力和轨迹级别建模的特性,显著简化了复杂的规划任务。
1. SSR算法的核心思想
SSR算法的目标是在给定当前状态 s t s_t st 和历史 h t h_t ht 的情况下,从动作提案分布中生成一组候选动作序列,评估这些序列的质量,并选择最佳动作序列的第一个动作进行执行。步骤概要
- 采样(Sample): 从扩散模型生成的动作提案分布 ρ \rho ρ 中采样 N N N 个动作序列。
- 预测(Predict): 使用动态模型 p d p_d pd 预测这些动作序列对应的未来状态轨迹。
- 评分(Score): 使用目标函数 J J J 对每个动作-状态序列进行打分。
- 排名(Rank): 根据得分排序,选择最优的动作序列。
- 执行(Execute): 返回最优序列中的第一个动作。
2. SSR算法的伪代码
以下是SSR算法的伪代码(对应算法2):
# 输入:当前状态 s0,历史信息 h0,动态模型 pd,动作提案分布 ρ,目标函数 J,样本数 N,规划视界 F,历史长度 H
def SSR_Planner(s0, h0, pd, ρ, J, N, F, H):
for n in range(1, N + 1):
a_n,1:F = ρ.sample(s0, h0) # 从提案分布采样动作序列
s_n,1:F = pd.predict(s0, h0, a_n,1:F) # 使用动态模型预测状态序列
V_n = J(s_n,1:F, a_n,1:F) # 对状态-动作序列进行评分
n̂ = argmax(V_n) # 找到评分最高的序列索引
return a_n̂,1 # 返回最佳序列的第一个动作
3. 关键组件
3.1 动作提案分布 ρ \rho ρ
- 定义: 提供动作序列的初始候选分布。
- 来源: 通过离线行为克隆训练, ρ \rho ρ 可以学习到轨迹层面的合理候选分布。
- 作用: 保证采样的动作序列多样性且贴近合理范围。
3.2 动态模型 p d p_d pd
- 定义: 描述状态在给定动作序列下的演化。
- 来源: 基于离线轨迹数据训练的扩散模型。
- 作用: 预测每个动作序列的对应状态轨迹。
3.3 目标函数 J J J
- 定义: 衡量动作-状态序列的质量,等价于规划目标函数。
- 公式: J ( s t : t + F , a t : t + F − 1 ) = E [ ∑ k = t t + F − 1 γ k − t R ( s k , a k ) + γ F V ( s t + F ) ] . J(s_{t:t+F}, a_{t:t+F-1}) = \mathbb{E} \left[ \sum_{k=t}^{t+F-1} \gamma^{k-t} R(s_k, a_k) + \gamma^F V(s_{t+F}) \right]. J(st:t+F,at:t+F−1)=E[k=t∑t+F−1γk−tR(sk,ak)+γFV(st+F)].
- 作用: 通过对轨迹评分,帮助选择最优动作序列。
4. SSR算法的优点
- 简单高效:
- SSR不需要复杂的轨迹优化方法(如交叉熵法或梯度优化),仅通过采样、评分和排名即可完成规划。
- 多样性保证:
- 通过扩散模型生成多样化的候选动作序列,覆盖合理的解空间。
- 轨迹级推理:
- 动态模型和动作提案分布均基于轨迹级别,减少单步模型的复合误差。
5. 实例分析:机器人路径规划
场景描述: 假设一个机器人需要在二维平面上移动到目标位置,同时避免障碍物,目标是最大化路径的安全性和效率。应用步骤
输入:
- 当前状态 s t s_t st: 机器人的位置和速度。
- 动作提案分布 ρ \rho ρ: 通过示范数据学习到的移动策略。
- 动态模型 p d p_d pd: 预测机器人在不同动作下的轨迹。
- 目标函数 J J J: 结合路径安全性(远离障碍物)和效率(路径长度)的评分函数。
SSR算法执行:
- 采样: 从 ρ \rho ρ 中采样 N N N 个可能的移动序列(例如,机器人未来 F F F 步的速度和转向角)。
- 预测: 使用 p d p_d pd 预测每个移动序列对应的轨迹。
- 评分: 对每条轨迹进行评分,优先选择远离障碍物且路径最短的序列。
- 选择与执行: 返回最佳序列的第一个动作,执行移动。
结果:
- 机器人能够动态适应不同障碍物分布,在路径规划中表现优越。
6. SSR相比其他方法的性能
对比MBOP:
- MBOP采用轨迹优化方法(如交叉熵法),需要迭代优化并且对初始条件敏感。
- SSR通过扩散模型的多样性采样直接生成候选动作序列,计算开销低且鲁棒性强。
对比强化学习:
- SSR无需在线探索或训练,仅依赖离线数据,适合安全性要求高的场景。
7. 总结
SSR算法通过“采样、评分和排名”的机制,为D-MPC提供了一种简单而强大的规划方法,特别是在连续动作空间的控制任务中表现突出。其结合了扩散模型的多样性与轨迹级推理能力,为复杂控制任务提供了有效解决方案。
3.4. 适应
与所有模型预测控制(MPC)方法一样,我们提出的D-MPC在计算上比没有明确规划的反应式策略方法更加昂贵。然而,在离线环境中使用基于规划的方法的主要优势之一是,它们可以轻松地适应新的奖励函数,这些奖励函数可能与生成离线数据的行为策略优化的奖励函数不同。在D-MPC中,我们可以通过将算法2中的 V n V_n Vn 替换为 V n = κ J ( s 1 : F , A n , 1 : F ) + κ ~ J ~ ( s 1 : F , A n , 1 : F ) V_n = \kappa J(s_{1:F}, A_{n,1:F}) + \tilde{\kappa} \tilde{J}(s_{1:F}, A_{n,1:F}) Vn=κJ(s1:F,An,1:F)+κ~J~(s1:F,An,1:F) 来轻松地纳入新的奖励,其中新的目标函数 J ~ ( s 1 : F , A n , 1 : F ) = 1 F ∑ t = 1 F f novel ( s t , A n , t ) \tilde{J}(s_{1:F}, A_{n,1:F}) = \frac{1}{F} \sum_{t=1}^F f_\text{novel}(s_t, A_{n,t}) J~(s1:F,An,1:F)=F1∑t=1Ffnovel(st,An,t), f novel f_\text{novel} fnovel 是一种新的奖励函数, κ \kappa κ 和 κ ~ \tilde{\kappa} κ~ 分别是原始和新目标的权重。我们在第4.2节中展示了这种方法。当然,如果新任务与智能体以前见过的任何事物都非常不同,那么动作提案可能质量较低,可能需要更多的搜索。
如果世界的动态变化,我们可以在一小部分新分布的探索性“游戏”数据上使用监督式微调 p s ∣ a p_{s|a} ps∣a,然后像以前一样使用MPC。我们在第4.3节中展示了这一点。
适应:D-MPC的灵活性与新任务适应能力
D-MPC(扩散模型预测控制)是一种基于规划的控制方法,与反应式策略相比,虽然计算成本较高,但具备强大的适应性。它能够轻松调整以适应新的奖励函数或动态变化的环境。这种灵活性源自其轨迹级建模能力和目标函数的可扩展性。以下详细介绍D-MPC的适应能力,并通过实例加深理解。
1. 适应新的奖励函数
在实际任务中,目标可能随着任务需求而改变,例如,从导航到避障,或从最大化速度到最小化能耗。D-MPC能够在不重新训练模型的情况下,直接在规划阶段调整以适应新奖励函数。方法描述
目标函数扩展: 在算法2中的规划过程中,用新的目标函数代替原有目标函数 J J J。 修改后的目标函数为: V n = κ J ( s 1 : F , A n , 1 : F ) + κ ~ J ~ ( s 1 : F , A n , 1 : F ) , V_n = \kappa J(s_{1:F}, A_{n,1:F}) + \tilde{\kappa} \tilde{J}(s_{1:F}, A_{n,1:F}), Vn=κJ(s1:F,An,1:F)+κ~J~(s1:F,An,1:F), 其中:
- κ \kappa κ 和 κ ~ \tilde{\kappa} κ~ 是原始目标函数和新目标函数的权重。
- J ~ ( s 1 : F , A n , 1 : F ) \tilde{J}(s_{1:F}, A_{n,1:F}) J~(s1:F,An,1:F) 是新目标函数,定义为:
J ~ ( s 1 : F , A n , 1 : F ) = 1 F ∑ t = 1 F f novel ( s t , A n , t ) , \tilde{J}(s_{1:F}, A_{n,1:F}) = \frac{1}{F} \sum_{t=1}^F f_\text{novel}(s_t, A_{n,t}), J~(s1:F,An,1:F)=F1t=1∑Ffnovel(st,An,t),
其中 f novel ( s t , A n , t ) f_\text{novel}(s_t, A_{n,t}) fnovel(st,An,t) 是新的奖励函数。灵活性:
- 原始目标函数 J J J 保证任务的基本性能。
- 新目标函数 J ~ \tilde{J} J~ 实现任务的新需求。
调整权重:
- κ \kappa κ 和 κ ~ \tilde{\kappa} κ~ 的调整可以平衡原始任务和新任务的优先级。
实例 1:自动驾驶中的路径优化
场景:
- 原始任务:沿着预定路径驾驶,目标是最小化到达目标点的时间。
- 新任务:引入能耗最小化的需求。
解决方法:
- 原始目标函数: J ( s 1 : F , A n , 1 : F ) J(s_{1:F}, A_{n,1:F}) J(s1:F,An,1:F):根据预定路径计算时间最小化的奖励。
- 新奖励函数: f novel ( s t , A n , t ) f_\text{novel}(s_t, A_{n,t}) fnovel(st,An,t):基于每一步能耗的负值(即能耗越小,奖励越大)。
- 目标函数组合: V n = κ J ( s 1 : F , A n , 1 : F ) + κ ~ 1 F ∑ t = 1 F ( − 能耗 ( s t , A n , t ) ) . V_n = \kappa J(s_{1:F}, A_{n,1:F}) + \tilde{\kappa} \frac{1}{F} \sum_{t=1}^F (-\text{能耗}(s_t, A_{n,t})). Vn=κJ(s1:F,An,1:F)+κ~F1t=1∑F(−能耗(st,An,t)).
- 结果:
- 系统平衡路径时间和能耗需求,通过调整 κ \kappa κ 和 κ ~ \tilde{\kappa} κ~ 适应不同任务需求。
2. 适应动态变化的环境
环境的动力学可能发生变化,例如由于机械故障、环境干扰或新的操作条件。D-MPC可以通过微调动态模型 p s ∣ a p_{s|a} ps∣a,快速适应这些变化。方法描述
新数据收集:
- 在新分布下收集一小部分探索性“游戏”数据。
- 数据可以通过随机探索或专家操作获取。
监督式微调:
- 使用收集到的新数据对动态模型 p s ∣ a p_{s|a} ps∣a 进行微调。
- 保证模型在新环境中的预测精度。
MPC重新使用:
- 微调后的动态模型直接应用于MPC框架,无需其他改变。
实例 2:机器人手臂抓取任务中的动态变化
场景:
- 原始任务:机器人手臂抓取固定位置的物体。
- 动态变化:由于机械故障,手臂的运动动力学发生改变。
解决方法:
- 数据收集:
- 在故障后,运行一些探索性动作,收集新动力学下的状态-动作数据。
- 微调动态模型:
- 使用新的数据对 p s ∣ a p_{s|a} ps∣a 进行监督学习,更新动态模型。
- 继续任务:
- 使用微调后的动态模型和原有的规划算法执行抓取任务。
- 结果:
- 系统能够适应新的动力学条件,继续完成抓取任务。
3. 优势分析
3.1 新奖励适配的优势
- 无需重新训练提案分布: 动作提案 ρ \rho ρ 可以保持不变,仅通过调整目标函数即可适应新任务。
- 灵活权衡: 通过调整 κ \kappa κ 和 κ ~ \tilde{\kappa} κ~,灵活实现原任务和新任务的融合。
3.2 动态变化适配的优势
- 高效微调: 只需少量探索数据即可更新动态模型,无需完全重新训练。
- 可扩展性: 支持在多个新环境中快速部署。
4. 总结
D-MPC通过调整目标函数适应新奖励,通过微调动态模型适应环境变化。这种灵活性使其在复杂的连续控制任务中具有广泛应用潜力,无论是在新任务的适配还是动态环境的变化中,都能展现出强大的适应能力。适用场景
- 新任务需求: 如自动驾驶、机器人抓取中的新目标优化。
- 动态环境变化: 如机械故障、环境干扰中的动力学变化调整。
4. 实验(Experiments)
在本节中,我们进行了多种实验来评估D-MPC的有效性。具体来说,我们希望通过实验回答以下问题:
- 我们提出的D-MPC是否提高了现有MPC方法(学习离线模型)的性能,并且它能否与标准的基于模型和无模型的离线强化学习方法竞争?
- D-MPC是否可以优化新奖励并在运行时快速适应新的环境动态?
- D-MPC的不同组件如何贡献于其性能的提升?
- 我们能否将D-MPC提炼成一个用于高频控制的快速反应策略?
4.1. 对于固定奖励,D-MPC 可与其他离线 RL 方法相媲美
在本小节中,我们将对固定奖励的情况下,D-MPC与其他离线RL方法进行比较。我们在各种D4RL [Fu+20]任务上评估了我们提出的D-MPC的性能。计划性方法在我们无法获得专家数据的情况下特别有益。因此,我们将比较集中在使用次优数据学习的情况。我们对半猎豹(Halfcheetah)、蹦跳者(Hopper)和2D行走者(Walker2D)的中等和中等复播级别的运动任务进行了实验,对使用克隆数据的Adroit任务中的笔、门和锤子,以及使用混合和部分数据的Franka Kitchen任务进行了实验。
我们的结果总结在表2中。我们看到我们的方法显著优于MBOP和行为克隆(BC)基线。它也略胜于Diffuser。我们还比较了其他流行的无模型离线RL方法,如保守Q学习(CQL)[Kum+20]和隐式Q学习(IQL)[KNL21],以及基于模型的RL方法如MOReL [Kid+20],和序列模型如决策变换器(DT)[Che+21]。这些方法无法在测试时适应新的奖励(不像D-MPC、MBOP和Diffuser),但我们包括它们是为了给出这个基准上的SOTA性能的感觉。我们看到,尽管我们的方法具有额外的灵活性,但仍能与这些现有的、更具限制性的方法的性能相匹配。
表2 | D-MPC与各种基于模型和无模型的离线RL方法在不同领域的性能比较。基准测试结果取自现有论文 [Aja+23; Tar+24]。性能使用标准化分数 [Fu+20] 来衡量。对于D-MPC,我们报告了在30个不同随机初始环境条件的情况下标准化分数的均值和标准误差。遵循 [KNL21],我们用粗体突出显示每项任务中最高分数的5%内的分数。来自 [Aja+23] 的基线数据没有关联的标准误差。当存在时,我们包括来自 [Tar+24] 的基线数据的标准误差。
4.2. 对新奖励的推广
在图1中,我们展示了如何使用新的奖励函数生成有趣的代理行为。我们首先在Walker2d medium-replay数据集上为D-MPC训练了动力学模型、行动建议模型和价值模型。然后,我们用一个新的目标函数 V n V_n Vn替换了训练好的价值模型,用于在我们的计划循环中评分和排名轨迹,使用的新奖励函数是 f novel ( s t , A t ) = 5 exp ( − ( h t − h target ) 2 / 2 σ 2 ) f_\text{novel}(s_t, \text{A}_t) = 5 \exp(-(h_t - h_\text{target})^2 / 2\sigma^2) fnovel(st,At)=5exp(−(ht−htarget)2/2σ2),其中 h t h_t ht是状态 s t s_t st中对应代理高度的维度, h target h_\text{target} htarget是目标高度, σ 2 = 5 × 1 0 − 4 \sigma^2 = 5 × 10^{-4} σ2=5×10−4, κ = 0 \kappa = 0 κ=0 和 κ ~ = 1 \tilde{\kappa} = 1 κ~=1(所以我们只使用新的 J ~ \tilde{J} J~并忽略原始的 J J J)。通过使用这种简单的方法,我们使代理前冲并保持头部向下( h target = 0.9 h_\text{target} = 0.9 htarget=0.9),保持平衡( h target = 1.2 h_\text{target} = 1.2 htarget=1.2),并反复跳跃( h target = 1.4 h_\text{target} = 1.4 htarget=1.4)。
图1 | 新颖的奖励函数可以产生有趣的代理行为。最左侧列展示了使用D-MPC在Walker2d中等重放数据集上训练得到的示例情节,该情节使用了规划器中的训练值函数。其余三列展示了使用基于高度的新颖目标在规划器中生成的行为的个别示例,每列对应一个不同的目标高度。每列的顶部行显示了情节中每个时间步的代理的高度。中间行显示每个情节的代理的两个快照,而底部行图显示了规划器针对的新颖奖励和代理在每个时间步获得的实际环境提供的奖励。此图作为如何使用新颖奖励产生有趣行为的定性展示。
4.3. 适应新动态
在本节中,我们展示了我们的模型在测试时如何能够用有限的经验适应新的动力学。在现实世界的机器人应用中,由于磨损或甚至是不完美的校准可能导致硬件缺陷和测试时的动态变化,因此对新动力学的适应是常见的需求。由于我们的分解公式,其中我们将动力学模型 p s ∣ a p_s|a ps∣a与策略模型 π a \pi_a πa分开,我们可以利用少量收集的具有硬件缺陷的“play”数据,用它来微调我们的多步扩散动力学模型,同时保持我们的行动建议和训练好的价值函数不变。
我们在Walker2D上展示了这一点。我们在中等数据集上训练原始模型,并通过限制作用在足关节上的动作扭矩(动作维度2)来模拟硬件缺陷。在没有缺陷的原始硬件上,训练好的D-MPC达到了76.21 (±2.67)的标准分数。当在有缺陷的硬件上执行这个模型时,性能降低到了只有22.74 (±1.41)。在同样的设置中,部署在有缺陷的硬件上的Diffuser的性能从72.91 (± 3.47)下降到了25.85 (±1.08)。
为了补偿系统动力学的变化,我们通过部署在中等重放数据集上训练的原始D-MPC,在有缺陷的硬件上收集了100集的“play”数据。 我们使用这个小型数据集来微调我们的多步扩散动力学模型,同时保持策略建议和价值模型不变。微调后,性能提高到30.65 (±1.89)。由于diffuser联合模拟状态和动作序列,没有办法独立地仅微调动力学模型。我们改为使用收集到的“play”数据对整个模型进行微调。微调后,diffuser的性能实际上降低到了6.8 (±0.86)。 请查看表3a以获取总结。
4.4. 消融研究
在本节中,我们进行了一系列详细的消融研究,以说明D-MPC中不同组件如何贡献于其良好的性能。 特别是,我们研究了用扩散方法生成行动提案的效果,以及对行动提案和动力学模型使用单步模型与多步模型的影响。我们在D4RL的运动任务上评估了所有变体。 详细结果请见表3b,表4提供了附录中不同D-MPC变体在单独的D4RL领域和级别上的详细性能。
4.4.1. 扩散行动提案提高了性能并简化了规划算法。
现有的基于模型的离线规划方法,如MBOP,通常使用单步确定性MLP策略进行行动提案,使用单步确定性MLP模型集合来模拟随机动力学,并依赖轨迹优化方法进行规划。这种MBOP方法在运动任务上的平均得分为33.13。
我们可以通过替换他们的单步MLP行动提案为单步扩散提案,并用我们更简单的SSR规划器替换他们的TrajOpt规划器,显著提高这一基线MBOP得分并简化算法。这提高了性能至52.93。用单步扩散动力学模型替换他们的MLP动力学模型进一步提供了微小的改进,至53.32。
4.4.2. 多步骤扩散行动建议有助于提高绩效
D-MPC采用多步扩散行动提案。在本节中,我们将展示与单步扩散行动提案相比,这是如何进一步提高性能的。
我们从第4.4.1节中同样的单步MLP动力学模型开始。然后,我们用一个能够联合采样一组行动的多步扩散行动提案替换单步扩散行动提案。这样做将平均性能从52.93提高到了57.14。然后我们在单步扩散动力学的基础上重复这个实验,将性能从53.32提升到了57.81。
表3 | (a) Walker2D在模拟硬件故障前后的表现,以及在使用“玩耍”数据微调(FT)后的表现。 (b) D-MPC各种变体在D4RL运动任务上的平均表现。完整的D-MPC方法在右下角。MS:多步,SS:单步,Diff:扩散,ART:自回归转换器。我们的基准MBOP使用集成和MPPI轨迹优化以及SS MLP动力学模型和SS MLP行动提案,获得了33.13的分数。
4.4.3. 多步扩散动力学模型有助于提高性能
整段翻译:
D-MPC使用多步扩散动力学模型。在本节中,我们将展示这种模型如何减少长期预测中的累积误差,并提升性能。
我们首先独立于规划循环,对单步扩散、多步扩散和自回归变换器(ART)动力学模型(详见附录E.3)进行长期动力学预测的准确性测量。我们在各自领域的中等数据集上训练动力学模型,并使用从中等(训练数据)、中等重放(质量较低的数据)和专家(质量更高的数据)数据集中采样的状态/行为序列,来测量长期动力学预测的准确性。具体来说,我们遵循 [Sch+23],通过计算非速度坐标上的轨迹长度增加的中位根均方偏差(RMSD)来进行。图2总结了结果。从图中我们可以看到,与单步和自回归替代方案相比,多步扩散动力学模型如何减少长期动力学预测中的累积错误,同时保持了优越的泛化能力,尤其是对于不太偏离训练分布的行为分布。
图2 | 长期动力学预测的准确性。我们在中等数据集上训练动力学模型,并在中等(训练数据)、中等重放(质量较低的数据)和专家(质量较高的数据)数据集上进行评估。预测错误通过在1024个采样的状态动作序列(长度为256)上的非速度坐标的中位根均方偏差(RMSD)来衡量。图表显示了中位数±10百分位数范围。多步扩散动力学模型在训练数据上产生显著较低的预测错误,同时保持了卓越的泛化能力,优于其他单步和自回归替代方案。自回归变换器(ART)动力学模型的表现优于单步扩散动力学模型。单步MLP动力学模型显示出迅速增长的累积错误,这在长期动力学预测中尤其明显。
然后,我们评估这些动力学模型在多步扩散动作提案下的D-MPC规划循环中的使用质量。当使用ART动力学模型时,我们获得了59.83的分数;但当使用多步扩散动力学模型时,我们获得了65.98的分数。我们认为这种差异是因为变换器动力学模型将序列级分布表示为一步(尽管非马尔可夫)条件的乘积,即 p d ( s t + 1 : t + F ∣ s 1 : t , a 1 : t + F − 1 ) = ∏ t t + F − 1 p d ( s t + 1 ∣ s 1 : t , a 1 : t − 1 , a t ) p_d (s_{t+1:t+F} | s_{1:t}, a_{1:t+F-1}) = \prod_{t}^{t+F-1} p_d (s_{t+1} | s_{1:t}, a_{1:t-1}, a_t) pd(st+1:t+F∣s1:t,a1:t+F−1)=∏tt+F−1pd(st+1∣s1:t,a1:t−1,at)。相比之下,扩散动力学模型是一种从噪声到清晰轨迹的“非因果”联合分布,而不是从左到右工作。我们推测这使得扩散能够更忠实地捕捉信号的全局属性(例如,预测最终状态是否对应于机器人跌倒)。
4.5. D-MPC 可提炼为用于高频控制的快速反应策略
由于使用了扩散模型,D-MPC的运行时间较慢。在附录J中,我们详细比较了D-MPC与其他方法的运行时间。然而,如果高频控制很重要,我们可以将D-MPC规划器简化为快速的特定任务的MLP策略,类似于MoREL[Kid+20]或MOPO[Yu+20]中的做法。具体来说,我们使用预训练D-MPC计划的动作作为监督,在离线数据集上训练一个MLP策略。我们对在剥离研究中使用的6个D4RL动作域和等级组合进行了这样的操作,并将性能与原始的MLP策略和D-MPC进行了比较。我们训练所有模型100万步,并评估最后的MLP策略检查点。
我们观察到,剥离后的MLP策略在6个D4RL动作域和等级组合中的平均标准化得分为65.08,仅略低于D-MPC的平均标准化得分65.98,并且大大优于原始MLP策略的平均标准化得分41.92。此外,剥离后我们只有一个MLP策略,并且它的运行速度与原始MLP策略相同。
5. 结论
我们提出了扩散模型预测控制(D-MPC),该方法利用扩散模型从离线数据集中学习多步骤动作提案和多步骤动力学,从而改进了MPC。D-MPC通过其多步骤公式减少了累积误差,达到了D4RL基准测试的竞争性能,并能在运行时优化新奇的奖励并适应新的动力学。详细的剥离研究展示了不同D-MPC组件的好处。
我们方法的一个缺点(所有MPC方法共有)是每一步都需要重新规划,这比使用反应策略慢得多。当使用扩散模型时,这一问题尤其突出,因为从扩散模型中抽样特别慢。未来,我们希望调查扩散文献中最近开发的加速方法,例如蒸馏(见[CKS23])。
D-MPC当前的另一个限制是我们只探索了直接访问低维状态的设置,如机器人上的本体感知传感器。未来,我们计划将这项工作扩展到处理像素观测,使用表示学习方法提取抽象潜在表征,这些可以作为我们动力学模型的输入,类似于现有的潜在空间世界建模方法,如Dreamer系列工作,但是在MPC情境下,而不是Dyna情境下。
像所有离线RL方法一样,D-MPC的性能受训练数据集中行为分布的影响。当离线数据集缺乏与目标任务相关的行为时,任何方法的泛化能力本质上受到限制,除非收集额外数据。虽然这对D-MPC来说是一个限制,但它不是我们方法独有的,而是离线RL中的一个基本挑战。在可用数据的范围内,D-MPC擅长优化和适应新奇的奖励和动力学,这代表了离线RL应用的现实场景。我们的方法能够有效地利用现有的行为分布,这是一个重要的优势。未来的工作可以探索技术,在离线数据的限制下鼓励更广泛的探索,可能会扩大D-MPC及类似方法的适用范围,应用于更广泛的场景。