【强化学习算法】Temporal Difference learning for Model Predictive Control论文(TDMPC)总结

本文主要是介绍【强化学习算法】Temporal Difference learning for Model Predictive Control论文(TDMPC)总结,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

文章目录

  • TDMPC总结
  • 1.model-based & model-free方法
    • 1.1 本质区别
    • 1.2 优缺点
  • 2.on-policy & off-policy
    • 2.1 定义
    • 2.2 优缺点
  • 3.本文Temporal Difference learning for Model Predictive Control
    • 3.1 重点要解决什么问题
    • 3.2 算法原理
      • 3.2.1 预备知识:Model Predictive Control(MPC)
      • 3.2.2 TD-learning for MPC
      • 3.2.3 训练模型
    • 3.3 实验结果
    • 3.4 总结

TDMPC总结

1.model-based & model-free方法

1.1 本质区别

Model-based和model-free的本质区别是agent是否利用环境模型(或称为环境的动力学模型),例如状态转移函数 P P P和奖励函数 R R R

在通常情况下,agent并不知道环境的奖励函数 R R R 和状态转移函数 p ( s ′ ∣ s , a ) p(s'|s,a) p(ss,a),所以需要通过和环境交互,不断试错(Trials and Errors),观察环境相关信息并利用反馈的奖励信号来不断学习。这个不断学习的过程既对model-based的方法适用,也对model-free的方法适用。

如果agent尝试通过在环境中不断执行动作获取样本 ( s , a , s ′ , r ) (s,a,s',r) (s,a,s,r)来构建对 R R R P P P的估计, 则 p ( s ′ ∣ s , a ) p(s'|s,a) p(ss,a) r r r可以通过监督学习进行拟合。习得奖励函数 R R R和状态转移函数 P P P之后,所有的环境元素 S , A , P , R , γ S,A,P,R,\gamma S,A,P,R,γ都已知,则用价值迭代或者策略迭代等规划(planning)方法可以直接用来求解问题。这个方式即称为model-based的方法。

Model-free则不尝试对环境建模,而是直接寻找最优策略。例如Q-learning和policy gradient算法都不关注环境模型,而是直接搜索能最大化奖励的策略。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-m6r1Cmbx-1661738504410)(vx_images/211473826234771.png =300x300)][外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-eAzvShKe-1661738504413)(vx_images/313755190045663.png =300x300)]

总结,model-based就是先对环境建模,再计算策略;model-free是直接学习策略。

1.2 优缺点

优点缺点
Model-baseda.通过环境模型可以预测未来的状态和奖励,从而帮助agent进行更好的规划。b.数据利用率高。a.学习得到的模型往往是不准确的,训练agent时引入了估计误差,基于带误差模型的策略的评估和提升往往会造成策略在真实环境中失效。b.存在或构建模型的假设过强。现实问题中环境的动力学模型可能很复杂,甚至无法显示地表示出来,导致模型通过无法获取。
Model-free基于实际环境的trial-and-error效果好。因为model-free不关心环境模型,无须学习环境模型,也就不存在环境拟合不准确的问题,只学习跟奖励有关的信息,相对更易于实现和训练。需要大量数据,而且在真实环境中进行探索的代价是极高的,如巨大的时间消耗,不可逆的设备损耗和安全风险.

2.on-policy & off-policy

2.1 定义

更新价值所使用的方法是沿着既定的策略(on-policy)抑或是新策略(off-policy)。

这两种算法的区别主要是网络更新参数时,数据是否由要更新的网络得到的。这里的数据是指(state, action, reawrd)构成的一组训练数据。

像我们之前解决TAP用的actor-critic算法,它生成训练数据的网络和要更新参数的网络都是同一个,所以是一种on-policy算法。

off-policy算法一般会使用两个相同结构的网络,我们称为策略网络A和目标网络B,策略网络A负责与环境交互生成很多组训练数据,算法用这些数据去更新网络B。
每经过几轮训练,算法再把网络B的参数复制给网络A,这类算法中的策略网络的参数比目标网络的参数更新得慢。

用策略网络A的数据更新网络B的操作大概如下:
比如网络A接收输入,得到action的概率分布p_a,从中取了一个action执行,得到一组数据。写成 A(input) = p_a -> action_a
之后网络B也输入一样的数据,有 B(input) = p_b,然后算法将网络A采样的action作为网络B在p_b采样的结果,也就是 B(input) = p_b => action_a,算法根据这组数据去计算梯度更新网络B的参数。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-8sObD7qe-1661738504414)(vx_images/111083491140677.png =600x)]

2.2 优缺点

优点缺点
on-policy简单。因为直接利用数据就可以优化其策略,所以找到局部最优策略的速度快。样本利用率低。因为每次更新都要重新采样,而且不一定能找到全局最优策略
off-policy数据利用性好且能找到全局最优解。它确保了数据的全面性(自行产生或者外来数据均可),所有行为都能覆盖。收敛慢。数据来源多样,所以方差更大,收敛性变差。

3.本文Temporal Difference learning for Model Predictive Control

3.1 重点要解决什么问题

Model-based RL虽然比model-free的采样效率高,但是规划 long horizon时需要的时间花销很大,并且很难获取一个准确的环境模型,论文就是想通过结合model-free 和model-based RL的优势解决以上问题,具体而言,算法用model-based RL学习用于局部轨迹优化的模型,用model-free RL学习预测长期回报(用于全局优化)的价值函数。

3.2 算法原理

3.2.1 预备知识:Model Predictive Control(MPC)

在强化学习的MPC中,MPC优化的是t~H步的及时奖励R,是一种短视的算法。
具体而言,为了使问题易于处理,MPC在有限时间t~H步内通过高斯分布采样每一步动作,得到相应奖励,并在t处执行采样的第一个动作 a t a_t at,从而得到每一步t的轨迹最优化问题的局部解,公式如下。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-tOp7q86a-1661738504415)(vx_images/425853248491064.png =301x)]

在作者的MPC的pipeline中,通过输入t时刻的观察 s t s_t st,经过编码器 h θ h_θ hθ输出t时刻的潜向量 z t z_t zt,将 z t z_t zt和从正态分布采样的 a t a_t at输入给环境模型 d θ d_θ dθ,输出下一时刻的潜向量 z t + 1 z_{t+1} zt+1,并得到相应的奖励 r ^ t \hat{r}_{t} r^t,接着又从高斯分布中采样下一个时刻的动作 a t + 1 a_{t+1} at+1,接下来的流程如下图所示,直到预测到H时刻的潜向量时结束。
现在算法如何进行优化奖励的?算法通过优化高斯分布的参数(均值和方差),动作从优化后的高斯分布中采样,进而优化奖励。
等迭代结束,即优化完高斯分布后,agent执行t时刻的动作 a t a_t at,也就是MPC采样的第一个动作。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-nhpNJuoU-1661738504416)(vx_images/151923629079064.png =500x)]

高斯分布均值和方差计算公式如下。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-7M537l0p-1661738504417)(vx_images/349153408743149.png =321x)]

Γ i ⋆ \Gamma_{i}^{\star} Γi是指top-k轨迹对应的奖励,也就是不好的轨迹不参与优化高斯分布的参数。

小结:MPC能在t到H时刻找到局部最优解(可对应于人的关节运动参数)。但因为MPC需要通过环境模型 d θ d_θ dθ才能输出下一时刻的潜向量,所以MPC是一种model-based的方法。环境模型 d θ d_θ dθ会存在一定的误差,而MPC需要递归地预测t到H时刻的潜向量,所以误差会累计。

3.2.2 TD-learning for MPC

上节讲到MPC能找到局部最优解,而且有累计误差。TD-learning就是能帮助MPC解决这两个问题。
具体而言,TD-learing通过学习一个状态-动作价值函数帮助MPC找到全局最优解(可对应于人跑的方向);因为TD-learning是model-free方法,所以它只学习跟奖励有关的信息,从而减少了MPC学习模型时的误差。
TD-learning用学习后的状态-动作价值函数 Q θ ( s , a ) Q_{\theta}(\mathbf{s}, \mathbf{a}) Qθ(s,a)去估计能够获得最大回报的最优状态动作价值函数 Q ∗ ( s , a ) Q^{*}(\mathbf{s}, \mathbf{a}) Q(s,a),公式如下,
Q θ ( s , a ) ≈ Q ∗ ( s , a ) = max ⁡ a E [ R ( s , a ) + γ Q ∗ ( s ′ , a ′ ) ] ∀ s ∈ S Q_{\theta}(\mathbf{s}, \mathbf{a}) \approx Q^{*}(\mathbf{s}, \mathbf{a})=\max _{\mathbf{a}} \mathbb{E}[\mathcal{R}(\mathbf{s}, \mathbf{a})+ \left.\gamma Q^{*}\left(\mathbf{s}^{\prime}, \mathbf{a}^{\prime}\right)\right] \forall \mathbf{s} \in \mathcal{S} Qθ(s,a)Q(s,a)=amaxE[R(s,a)+γQ(s,a)]sS

那如何学习这个状态-动作价值函数 Q θ ( s , a ) Q_{\theta}(\mathbf{s}, \mathbf{a}) Qθ(s,a)
作者直接把这个状态-动作价值函数 Q θ ( s , a ) Q_{\theta}(\mathbf{s}, \mathbf{a}) Qθ(s,a)加到MPC预测的一条轨迹所获得的回报中,公式如下,
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-3v1XenYi-1661738504418)(vx_images/501467124688660.png =972x)]

标红的 Value 是状态-动作价值函数 Q θ ( s , a ) Q_{\theta}(\mathbf{s}, \mathbf{a}) Qθ(s,a)所获得的回报,标红的 Rewards 是MPC规划一条轨迹所获得的奖励。也就是在MPC得到的rewards基础上加上 Q θ ( s , a ) Q_{\theta}(\mathbf{s}, \mathbf{a}) Qθ(s,a)所获得的价值。
用伪代码表示如下。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Ap8VcU7v-1661738504419)(vx_images/334171367113574.png =335x400)][外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-YxIdcrUc-1661738504420)(vx_images/458112268603155.png =335x400)]

左边是普通MPC的伪代码,右边是TDMPC的伪代码。TDMPC比MPC多了第四步和第九步,重点是第九步:回报会加上状态动作价值项。多的第四步只是训练模型的一个trick,只是用于引导算法进行轨迹优化。
小结:通过TD-learning在回报中加入value项,TDMPC模型能够得到全局最优解。通过获得的回报更新高斯分布的参数,TDMPC输出的动作能够满足任务需求。

3.2.3 训练模型

当前的小节都是假设已知环境模型 d θ d_θ dθ,奖励函数 R θ R_θ Rθ,编码器 h θ h_θ hθ,价值函数 Q θ Q_θ Qθ的参数 θ θ θ,那如何训练用网络更新这些参数 θ θ θ呢?
从伪代码可以看出,训练分为两大步,第一大步(第2-6句伪代码)生成训练数据,第二大步(第7-19句)通过目标函数更新迭代网络参数。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Wy67miLW-1661738504421)(vx_images/338211696539020.png =348x)]

第一大步,对于从0到T的step,通过高斯分布采样动作 a t a_t at,与现在的状态 s t s_t st进行交互,得到相应的奖励 r t r_t rt和下一时刻的状态 s t + 1 s_{t+1} st+1,将这个四元组 ( s t , a t , r t , s t + 1 ) (s_t,a_t,r_t,s_{t+1}) (st,at,rt,st+1)作为一组数据存储在buffer中(可看为ground-truth数据)。
第二大步,在每次迭代中,从buffer中采样H组数据,将数据中 i i i时刻的状态 s i s_i si编码成潜向量,在从t~t+H步中,从数据中取相应时刻的 a i a_i ai,通过奖励函数 R θ R_θ Rθ得到奖励 r ^ i \hat{r}_{i} r^i,通过价值函数 Q θ Q_θ Qθ得到价值 q ^ i \hat{q}_{i} q^i,通过环境模型 d θ d_θ dθ得到下一时刻的潜向量 z i + 1 {z}_{i+1} zi+1,然后用buffer的ground-truth数据更新网络参数 θ θ θ
目标函数和损失函数公式如下。
在这里插入图片描述

各部分作用:公式8是用来预测奖励,即获得局部最优解。公式9是用来获取价值函数,从而得到全局最优解,公式9来源于TD算法更新网络参数的公式,但 Q θ − Q_{\theta^{-}} Qθ的参数由 ( z i + 1 , a i + 1 ) (z_{i+1},a_{i+1}) (zi+1,ai+1)变成 ( Z i + 1 , π θ ( Z i + 1 ) ) \left(\mathbf{Z}_{i+1}, \pi_{\theta}\left(\mathbf{Z}_{i+1}\right)\right) (Zi+1,πθ(Zi+1)),因为直接使用规划(planning)的 a t a_{t} at进行计算非常昂贵,所以改用策略网络进行预测更新公式9的动作。公式10是用来保证预测下一时刻潜向量的准确性,从而保证 R θ R_θ Rθ预测奖励和 Q θ Q_θ Qθ预测价值的准确性,做法是输入真实的下一刻状态 s t + 1 s_{t+1} st+1给目标网络 h θ − h_{\theta^{-}} hθ,输出的潜向量作为真实值,环境模型 d θ d_θ dθ预测下一时刻的潜向量作为预测值,更新网络参数 θ θ θ θ − \theta^{-} θ
注:单纯的TD算法更新网络的公式如下,
θ k + 1 ← arg ⁡ min ⁡ θ E ( s , a , s ′ ) ∼ B ∥ Q θ ( s , a ) − y ( s ) ∥ 2 2 \theta^{k+1} \leftarrow \arg \min _{\theta} \mathbb{E}_{\left(\mathbf{s}, \mathbf{a}, \mathbf{s}^{\prime}\right) \sim \mathcal{B}}\left\|Q_{\theta}(\mathbf{s}, \mathbf{a})-y(\mathbf{s})\right\|_{2}^{2} θk+1argminθE(s,a,s)BQθ(s,a)y(s)22,其中 y ( s ) = R ( s , a ) + γ max ⁡ a ′ Q θ − ( s ′ , a ′ ) y(\mathbf{s})=\mathcal{R}(\mathbf{s}, \mathbf{a})+\gamma \max _{\mathbf{a}^{\prime}} Q_{\theta^{-}}\left(\mathbf{s}^{\prime}, \mathbf{a}^{\prime}\right) y(s)=R(s,a)+γmaxaQθ(s,a)

3.3 实验结果

TDMPC,SAC,MPC:sim在6种任务中的回报,可以看出TDMPC比其他两种方法的回报要高得多。
SAC是model-free方法,MPC:sim是只有ground-truth的局部解,而没有学价值函数的方法。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-OPO6VgOP-1661738504423)(vx_images/253022062917702.png =469x)]

在让狗跑起来的任务中,虽然TDMPC跑起来的动作好像很不自然,但相对于SAC完全跑不起来,TDMPC起码知道跑的方向和动作。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-VZpeOWUH-1661738504424)(vx_images/458533506880547.png =378x)]

3.4 总结

Model Predictive Control(MPC)能够通过规划获得局部最优解,TD-learning能够帮助MPC学习价值函数获得全局最优解并减少学习模型过程中的误差。

这篇关于【强化学习算法】Temporal Difference learning for Model Predictive Control论文(TDMPC)总结的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/415407

相关文章

SQL中JOIN操作的条件使用总结与实践

《SQL中JOIN操作的条件使用总结与实践》在SQL查询中,JOIN操作是多表关联的核心工具,本文将从原理,场景和最佳实践三个方面总结JOIN条件的使用规则,希望可以帮助开发者精准控制查询逻辑... 目录一、ON与WHERE的本质区别二、场景化条件使用规则三、最佳实践建议1.优先使用ON条件2.WHERE用

Go学习记录之runtime包深入解析

《Go学习记录之runtime包深入解析》Go语言runtime包管理运行时环境,涵盖goroutine调度、内存分配、垃圾回收、类型信息等核心功能,:本文主要介绍Go学习记录之runtime包的... 目录前言:一、runtime包内容学习1、作用:① Goroutine和并发控制:② 垃圾回收:③ 栈和

Nginx Location映射规则总结归纳与最佳实践

《NginxLocation映射规则总结归纳与最佳实践》Nginx的location指令是配置请求路由的核心机制,其匹配规则直接影响请求的处理流程,下面给大家介绍NginxLocation映射规则... 目录一、Location匹配规则与优先级1. 匹配模式2. 优先级顺序3. 匹配示例二、Proxy_pa

Android学习总结之Java和kotlin区别超详细分析

《Android学习总结之Java和kotlin区别超详细分析》Java和Kotlin都是用于Android开发的编程语言,它们各自具有独特的特点和优势,:本文主要介绍Android学习总结之Ja... 目录一、空安全机制真题 1:Kotlin 如何解决 Java 的 NullPointerExceptio

MySQL基本查询示例总结

《MySQL基本查询示例总结》:本文主要介绍MySQL基本查询示例总结,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录Create插入替换Retrieve(读取)select(确定列)where条件(确定行)null查询order by语句li

使用雪花算法产生id导致前端精度缺失问题解决方案

《使用雪花算法产生id导致前端精度缺失问题解决方案》雪花算法由Twitter提出,设计目的是生成唯一的、递增的ID,下面:本文主要介绍使用雪花算法产生id导致前端精度缺失问题的解决方案,文中通过代... 目录一、问题根源二、解决方案1. 全局配置Jackson序列化规则2. 实体类必须使用Long封装类3.

重新对Java的类加载器的学习方式

《重新对Java的类加载器的学习方式》:本文主要介绍重新对Java的类加载器的学习方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录1、介绍1.1、简介1.2、符号引用和直接引用1、符号引用2、直接引用3、符号转直接的过程2、加载流程3、类加载的分类3.1、显示

Springboot实现推荐系统的协同过滤算法

《Springboot实现推荐系统的协同过滤算法》协同过滤算法是一种在推荐系统中广泛使用的算法,用于预测用户对物品(如商品、电影、音乐等)的偏好,从而实现个性化推荐,下面给大家介绍Springboot... 目录前言基本原理 算法分类 计算方法应用场景 代码实现 前言协同过滤算法(Collaborativ

Linux区分SSD和机械硬盘的方法总结

《Linux区分SSD和机械硬盘的方法总结》在Linux系统管理中,了解存储设备的类型和特性是至关重要的,不同的存储介质(如固态硬盘SSD和机械硬盘HDD)在性能、可靠性和适用场景上有着显著差异,本文... 目录一、lsblk 命令简介基本用法二、识别磁盘类型的关键参数:ROTA查询 ROTA 参数ROTA

Qt实现网络数据解析的方法总结

《Qt实现网络数据解析的方法总结》在Qt中解析网络数据通常涉及接收原始字节流,并将其转换为有意义的应用层数据,这篇文章为大家介绍了详细步骤和示例,感兴趣的小伙伴可以了解下... 目录1. 网络数据接收2. 缓冲区管理(处理粘包/拆包)3. 常见数据格式解析3.1 jsON解析3.2 XML解析3.3 自定义