论文笔记(五十七)Diffusion Model Predictive Control

server/2024/11/28 14:40:37/

Diffusion Model Predictive Control

  • 文章概括
  • 摘要
  • 1. Introduction
  • 2. Related work
  • 3. 方法
    • 3.1 模型预测控制
    • 3.2. 模型学习
    • 3.3. 规划(Planning)
    • 3.4. 适应
  • 4. 实验(Experiments)
    • 4.1. 对于固定奖励,D-MPC 可与其他离线 RL 方法相媲美
    • 4.2. 对新奖励的推广
    • 4.3. 适应新动态
    • 4.4. 消融研究
      • 4.4.1. 扩散行动提案提高了性能并简化了规划算法。
      • 4.4.2. 多步骤扩散行动建议有助于提高绩效
      • 4.4.3. 多步扩散动力学模型有助于提高性能
    • 4.5. D-MPC 可提炼为用于高频控制的快速反应策略
  • 5. 结论

文章概括

引用:

@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+F1,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+F1=argat:t+F1maxEpd(st+1:t+Fst,at:t+F1,ht)[J(at:t+F1,st+1:t+F)](1)

这个公式表示在模型预测控制(MPC)中,动作序列 a t : t + F − 1 a_{t:t+F-1} at:t+F1 是通过最大化期望目标函数 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} at1 的情况下,对未来动作 a t : t + F − 1 a_{t:t+F-1} at:t+F1 和状态 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:t1,a1:t1} 是历史信息。因此,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+Fs1:t,a1:t+F1),在本文中我们从离线轨迹数据中学习)和一个规划问题(为给定的奖励函数找到最佳的行动序列)。一旦我们选择了行动序列,我们可以执行第一个行动 a t a_t at(或一系列行动的一部分),然后在观察到结果的下一个状态后重新规划,从而创建一个闭环策略。

与标准策略学习方法相比,这种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+Fst,at:t+F1,ht),我们通过使用离线的“play”数据学习得到 [Cui+23]。以及(2)动作序列提案分布, ρ ( a t : t + F − 1 ∣ h t ) \rho(a_{t:t+F-1} | h_t) ρ(at:t+F1ht),我们也可以通过在一些示范数据上使用行为克隆来进行离线学习。尽管这样的提案分布可能建议在训练中未见过的新奖励上采取并非最优的行动,我们展示了如何使用一种简单的“抽样、评分和排名”(SSR)方法来弥补这一点,这是随机射击方法的一个变体,使用在离线数据集上训练的多步扩散模型作为行动提议,并且是轨迹优化或交叉熵方法等更复杂方法的一个简单替代品。我们将这种整体方法称为扩散模型预测控制(D-MPC)。

我们在D4RL基准的多种基于状态的连续控制任务上通过实验展示,我们提出的D-MPC框架显著优于现有的基于模型的离线规划方法,例如MBOP [ADA21],它学习单步动力学模型和单步行动提案,因此遭受复合误差问题。相比之下,D-MPC学习更准确的轨迹级模型,避免了这一问题,并使我们的基于模型的方法能够匹敌(有时甚至超越)基于模型的离线强化学习方法的性能。我们还展示了我们的D-MPC方法能在测试时优化新奖励,并且我们能够在新环境中(在机器人的模拟电机缺陷后)使用少量数据微调动力学模型。最后我们对我们的方法进行了消融分析,并展示了不同部分——即使用随机多步动力学、多步行动提议和SSR规划器——每个部分都各自有价值,但结合起来时能产生更多的好处。

总结来说,我们的主要贡献是:

  1. 我们引入了扩散模型预测控制(D-MPC),结合了多步动作提案和使用扩散模型的动力学模型,用于在线MPC。
  2. 我们展示了D-MPC在D4RL基准[Fu+20]测试上超过了现有的基于模型的离线规划方法,并且与SOTA增强学习方法具有竞争力。
  3. 我们提出了一个“采样,评分和排名”(SSR)规划方法,使D-MPC能够在运行时优化新的奖励函数。
  4. 我们展示了D-MPC通过微调适应新动力学的能力。
  5. 通过消融,我们验证了我们方法的关键组成部分各自以及结合起来的好处。

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(sa)ρ(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+1ht,at+1)(其中 h t = ( s t − H : t , a t − H : t ) h_t = (s_{t-H:t}, a_{t-H:t}) ht=(stH:t,atH:t) 是历史长度 H H H),提议为 ρ ( a t ∣ h t ) \rho(a_t|h_t) ρ(atht),因此我们预测(一个分布在)下一个时间步,条件是过去的观察(和动力学的下一个动作)。我们通过将其以自回归形式组成,作为单步条件的乘积,扩展到整个长度为 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+Fs1:t,a1:t+F1)=tt+F1pd(st+1st,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+Fst,ht,at:t+F1) 和 MS提议表示 ρ ( a t : t + F − 1 ∣ s t , h t ) \rho(a_{t:t+F-1}|s_t, h_t) ρ(at:t+F1st,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:Ta1: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} psa、行动提案 π \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+Fst,ht,at:t+F1) 和另一个基于扩散的行动提案 ρ ( a t : t + F − 1 ∣ s t , h t ) \rho(\mathbf{a}_{t:t+F-1}|\mathbf{s}_t, \mathbf{h}_t) ρ(at:t+F1st,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+F1)=E[k=tt+F1γktR(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+F1) 回归到方程(2)中的折扣未来奖励。我们使用 L2 损失进行回归。我们还使用变压器学习 J J J(尽管如果奖励函数 R R R 已知,我们也可以直接计算 J J J,并且我们使用 V V V 的一个可接受的下界(如 0))。我们在 MPC 中使用 J J J 作为优化的目标函数,并用来指定新颖的任务。关于模型架构和超参数的额外细节,请参见附录 E。

请注意,与 MBOP [ADA21] 不同,我们不需要训练集成,因为扩散模型足够表达各自分布的丰富性。此外,与 [ADA21] 相反,我们不需要训练一个单独的奖励函数:我们在规划视界开始时,针对一系列给定的状态和行动估计我们的价值函数。通过这种方式,我们的目标函数 J J J 已经包含了视界范围内的估计奖励。

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} psa 预测相应的状态序列,我们用目标函数 J J J 对这些状态/动作序列进行评分,我们对它们进行排名以选择最佳序列,最后我们返回最佳序列中的第一个动作,并重复整个过程。我们通过实验证明,这种方法优于更复杂的方法,如 MBOP 论文中使用的轨迹优化方法,我们在附录中详细描述了这一方法(算法 5)。我们认为这是因为扩散模型已经在轨迹层面进行推理,并且可以原生地生成一组多样化的合理候选者,无需额外的机制。


在这里插入图片描述


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)=F1t=1Ffnovel(st,An,t) f novel f_\text{novel} fnovel 是一种新的奖励函数, κ \kappa κ κ ~ \tilde{\kappa} κ~ 分别是原始和新目标的权重。我们在第4.2节中展示了这种方法。当然,如果新任务与智能体以前见过的任何事物都非常不同,那么动作提案可能质量较低,可能需要更多的搜索。

如果世界的动态变化,我们可以在一小部分新分布的探索性“游戏”数据上使用监督式微调 p s ∣ a p_{s|a} psa,然后像以前一样使用MPC。我们在第4.3节中展示了这一点。


4. 实验(Experiments)

在本节中,我们进行了多种实验来评估D-MPC的有效性。具体来说,我们希望通过实验回答以下问题:

  1. 我们提出的D-MPC是否提高了现有MPC方法(学习离线模型)的性能,并且它能否与标准的基于模型和无模型的离线强化学习方法竞争?
  2. D-MPC是否可以优化新奖励并在运行时快速适应新的环境动态?
  3. D-MPC的不同组件如何贡献于其性能的提升?
  4. 我们能否将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((hthtarget)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×104 κ = 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 psa与策略模型 π 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+Fs1:t,a1:t+F1)=tt+F1pd(st+1s1:t,a1:t1,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及类似方法的适用范围,应用于更广泛的场景。


http://www.ppmy.cn/server/145646.html

相关文章

element-plus弹窗二次封装踩坑

1 基于element-plus的二次封装弹窗很常见。代码如下&#xff1a; 父组件&#xff1a; import Dialog from ./components/Dialogs/testDailog.vueconst showref(false) const openDialog()>{show.valuetrue}<button click"openDialog" >打开dialoag</bu…

git merge 排除文件

方法一&#xff1a; 在Git中&#xff0c;如果你想在合并时排除特定文件&#xff0c;你可以使用.gitattributes文件来指定合并策略。你可以设置一个自定义合并策略来忽略特定文件的合并。 首先&#xff0c;在仓库的根目录下创建或编辑.gitattributes文件&#xff0c;并添加以…

微服务上下线动态感知实现的技术解析

序言 随着微服务架构的广泛应用&#xff0c;服务的动态管理和监控变得尤为重要。在微服务架构中&#xff0c;服务的上下线是一个常见的操作&#xff0c;如何实时感知这些变化&#xff0c;确保系统的稳定性和可靠性&#xff0c;成为了一个关键技术挑战。本文将深入探讨微服务上…

【C++】string类练习

test1:反转字母 给你一个字符串 s &#xff0c;根据下述规则反转字符串&#xff1a; 所有非英文字母保留在原有位置。所有英文字母&#xff08;小写或大写&#xff09;位置反转。 返回反转后的 s 。 示例 1&#xff1a; 输入&#xff1a;s "ab-cd" 输出&#xff1a;…

后端并发编程操作简述 Java高并发程序设计 六类并发容器 七种线程池 四种阻塞队列

目录 并发集合 1. ConcurrentHashMap&#xff1a; 2. CopyOnWriteArrayList&#xff1a; 3. CopyOnWriteArraySet&#xff1a; 4. BlockingQueue系列&#xff1a; 5. ConcurrentSkipListMap 和 ConcurrentSkipListSet&#xff1a; 6. ConcurrentLinkedDeque&#xff1a;…

LSA详情与特殊区域

LSA是构成LSDB的重要原材料&#xff0c;在OSPF中发挥很大作用。 报文 通用头部 LS age&#xff1a;LSA寿命&#xff0c;0-3600s Options&#xff1a;可选项 LS type&#xff1a;LSA类型&#xff0c;三要素之一 Link State ID&#xff1a;LSAID 三要素之一 Advertising Ro…

25.100ASK_T113-PRO 测试摄像头(型号)

1.摄像头 USB2.0 摄像头,支持 UVC协议, 就是V4L2 USB2.0 大概可这样理解吧.这个是2K分辨率. 2.8mm焦距. 开发板还是 100ASK_T113-PRO V1.2版 2.查看摄像头驱动挂载情况 这样接好. 看看设备有没有挂载上 # ls /dev/video* /dev/video0 /dev/video1 这两个就是USB摄像头.说…

Dart 中 initializer lists

在 Dart 中&#xff0c;initializer lists 是构造函数的一种特性&#xff0c;允许你在进入构造函数体之前对某些字段进行初始化或进行检查。这些字段包括 final 字段&#xff0c;因为 final 字段必须在构造函数体运行之前被初始化。 以下是它的几个关键点和适用场景&#xff1…