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

相关文章

HarmonyOS学习(七)——UI(五)常用布局总结

自适应布局 1.1、线性布局(LinearLayout) 通过线性容器Row和Column实现线性布局。Column容器内的子组件按照垂直方向排列,Row组件中的子组件按照水平方向排列。 属性说明space通过space参数设置主轴上子组件的间距,达到各子组件在排列上的等间距效果alignItems设置子组件在交叉轴上的对齐方式,且在各类尺寸屏幕上表现一致,其中交叉轴为垂直时,取值为Vert

Ilya-AI分享的他在OpenAI学习到的15个提示工程技巧

Ilya(不是本人,claude AI)在社交媒体上分享了他在OpenAI学习到的15个Prompt撰写技巧。 以下是详细的内容: 提示精确化:在编写提示时,力求表达清晰准确。清楚地阐述任务需求和概念定义至关重要。例:不用"分析文本",而用"判断这段话的情感倾向:积极、消极还是中性"。 快速迭代:善于快速连续调整提示。熟练的提示工程师能够灵活地进行多轮优化。例:从"总结文章"到"用

不懂推荐算法也能设计推荐系统

本文以商业化应用推荐为例,告诉我们不懂推荐算法的产品,也能从产品侧出发, 设计出一款不错的推荐系统。 相信很多新手产品,看到算法二字,多是懵圈的。 什么排序算法、最短路径等都是相对传统的算法(注:传统是指科班出身的产品都会接触过)。但对于推荐算法,多数产品对着网上搜到的资源,都会无从下手。特别当某些推荐算法 和 “AI”扯上关系后,更是加大了理解的难度。 但,不了解推荐算法,就无法做推荐系

【前端学习】AntV G6-08 深入图形与图形分组、自定义节点、节点动画(下)

【课程链接】 AntV G6:深入图形与图形分组、自定义节点、节点动画(下)_哔哩哔哩_bilibili 本章十吾老师讲解了一个复杂的自定义节点中,应该怎样去计算和绘制图形,如何给一个图形制作不间断的动画,以及在鼠标事件之后产生动画。(有点难,需要好好理解) <!DOCTYPE html><html><head><meta charset="UTF-8"><title>06

学习hash总结

2014/1/29/   最近刚开始学hash,名字很陌生,但是hash的思想却很熟悉,以前早就做过此类的题,但是不知道这就是hash思想而已,说白了hash就是一个映射,往往灵活利用数组的下标来实现算法,hash的作用:1、判重;2、统计次数;

康拓展开(hash算法中会用到)

康拓展开是一个全排列到一个自然数的双射(也就是某个全排列与某个自然数一一对应) 公式: X=a[n]*(n-1)!+a[n-1]*(n-2)!+...+a[i]*(i-1)!+...+a[1]*0! 其中,a[i]为整数,并且0<=a[i]<i,1<=i<=n。(a[i]在不同应用中的含义不同); 典型应用: 计算当前排列在所有由小到大全排列中的顺序,也就是说求当前排列是第

csu 1446 Problem J Modified LCS (扩展欧几里得算法的简单应用)

这是一道扩展欧几里得算法的简单应用题,这题是在湖南多校训练赛中队友ac的一道题,在比赛之后请教了队友,然后自己把它a掉 这也是自己独自做扩展欧几里得算法的题目 题意:把题意转变下就变成了:求d1*x - d2*y = f2 - f1的解,很明显用exgcd来解 下面介绍一下exgcd的一些知识点:求ax + by = c的解 一、首先求ax + by = gcd(a,b)的解 这个

综合安防管理平台LntonAIServer视频监控汇聚抖动检测算法优势

LntonAIServer视频质量诊断功能中的抖动检测是一个专门针对视频稳定性进行分析的功能。抖动通常是指视频帧之间的不必要运动,这种运动可能是由于摄像机的移动、传输中的错误或编解码问题导致的。抖动检测对于确保视频内容的平滑性和观看体验至关重要。 优势 1. 提高图像质量 - 清晰度提升:减少抖动,提高图像的清晰度和细节表现力,使得监控画面更加真实可信。 - 细节增强:在低光条件下,抖

【数据结构】——原来排序算法搞懂这些就行,轻松拿捏

前言:快速排序的实现最重要的是找基准值,下面让我们来了解如何实现找基准值 基准值的注释:在快排的过程中,每一次我们要取一个元素作为枢纽值,以这个数字来将序列划分为两部分。 在此我们采用三数取中法,也就是取左端、中间、右端三个数,然后进行排序,将中间数作为枢纽值。 快速排序实现主框架: //快速排序 void QuickSort(int* arr, int left, int rig

零基础学习Redis(10) -- zset类型命令使用

zset是有序集合,内部除了存储元素外,还会存储一个score,存储在zset中的元素会按照score的大小升序排列,不同元素的score可以重复,score相同的元素会按照元素的字典序排列。 1. zset常用命令 1.1 zadd  zadd key [NX | XX] [GT | LT]   [CH] [INCR] score member [score member ...]