【强化学习算法】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

相关文章

Rust格式化输出方式总结

《Rust格式化输出方式总结》Rust提供了强大的格式化输出功能,通过std::fmt模块和相关的宏来实现,主要的输出宏包括println!和format!,它们支持多种格式化占位符,如{}、{:?}... 目录Rust格式化输出方式基本的格式化输出格式化占位符Format 特性总结Rust格式化输出方式

golang字符串匹配算法解读

《golang字符串匹配算法解读》文章介绍了字符串匹配算法的原理,特别是Knuth-Morris-Pratt(KMP)算法,该算法通过构建模式串的前缀表来减少匹配时的不必要的字符比较,从而提高效率,在... 目录简介KMP实现代码总结简介字符串匹配算法主要用于在一个较长的文本串中查找一个较短的字符串(称为

通俗易懂的Java常见限流算法具体实现

《通俗易懂的Java常见限流算法具体实现》:本文主要介绍Java常见限流算法具体实现的相关资料,包括漏桶算法、令牌桶算法、Nginx限流和Redis+Lua限流的实现原理和具体步骤,并比较了它们的... 目录一、漏桶算法1.漏桶算法的思想和原理2.具体实现二、令牌桶算法1.令牌桶算法流程:2.具体实现2.1

Java深度学习库DJL实现Python的NumPy方式

《Java深度学习库DJL实现Python的NumPy方式》本文介绍了DJL库的背景和基本功能,包括NDArray的创建、数学运算、数据获取和设置等,同时,还展示了如何使用NDArray进行数据预处理... 目录1 NDArray 的背景介绍1.1 架构2 JavaDJL使用2.1 安装DJL2.2 基本操

Python中连接不同数据库的方法总结

《Python中连接不同数据库的方法总结》在数据驱动的现代应用开发中,Python凭借其丰富的库和强大的生态系统,成为连接各种数据库的理想编程语言,下面我们就来看看如何使用Python实现连接常用的几... 目录一、连接mysql数据库二、连接PostgreSQL数据库三、连接SQLite数据库四、连接Mo

Git提交代码详细流程及问题总结

《Git提交代码详细流程及问题总结》:本文主要介绍Git的三大分区,分别是工作区、暂存区和版本库,并详细描述了提交、推送、拉取代码和合并分支的流程,文中通过代码介绍的非常详解,需要的朋友可以参考下... 目录1.git 三大分区2.Git提交、推送、拉取代码、合并分支详细流程3.问题总结4.git push

Kubernetes常用命令大全近期总结

《Kubernetes常用命令大全近期总结》Kubernetes是用于大规模部署和管理这些容器的开源软件-在希腊语中,这个词还有“舵手”或“飞行员”的意思,使用Kubernetes(有时被称为“... 目录前言Kubernetes 的工作原理为什么要使用 Kubernetes?Kubernetes常用命令总

Python中的随机森林算法与实战

《Python中的随机森林算法与实战》本文详细介绍了随机森林算法,包括其原理、实现步骤、分类和回归案例,并讨论了其优点和缺点,通过面向对象编程实现了一个简单的随机森林模型,并应用于鸢尾花分类和波士顿房... 目录1、随机森林算法概述2、随机森林的原理3、实现步骤4、分类案例:使用随机森林预测鸢尾花品种4.1

Python中实现进度条的多种方法总结

《Python中实现进度条的多种方法总结》在Python编程中,进度条是一个非常有用的功能,它能让用户直观地了解任务的进度,提升用户体验,本文将介绍几种在Python中实现进度条的常用方法,并通过代码... 目录一、简单的打印方式二、使用tqdm库三、使用alive-progress库四、使用progres

Android数据库Room的实际使用过程总结

《Android数据库Room的实际使用过程总结》这篇文章主要给大家介绍了关于Android数据库Room的实际使用过程,详细介绍了如何创建实体类、数据访问对象(DAO)和数据库抽象类,需要的朋友可以... 目录前言一、Room的基本使用1.项目配置2.创建实体类(Entity)3.创建数据访问对象(DAO