【论文复现】一步步详解用TD3算法通关BipedalWalkerHardcore-v2环境

天龙工具admin2024-10-18 7:03:07132A+A-

熟悉强化学习Gym环境的朋友应该熟悉(BWH-v2环境)e-v2(图1)。在这种环境下,Agent需要与不同的路况进行交互并学习跑步和行走。由于该环境的动作空间是4维连续动作空间,因此Agent需要掌握奔跑、过坑、越障、下楼梯等一系列技能。很多朋友表示,即使使用目前先进的TD3、SAC、PPO等RL算法来训练各种头铁,也无法取得好的效果。在Gym官方网站上,有人使用A3C+LSTM算法在32核CPU和3个GPU上训练73小时后终于解决了问题。其他人使用 CMA-ES 算法在 64 核系统上训练 100 小时。问题终于解决了,可见这个环境的难度非同一般。

一、简介

图重新v2

一开始我用各种算法征服这个环境的时候并没有得到好的结果。最后,通过一些技巧,我终于清除了这个环境(我作为一个老父亲流下了眼泪)。因此,今天我给大家带来TD3通关e-v2的指南(在单核CPU上训练大约需要3小时才能收敛),希望能为大家的强化学习炼金之旅加油。代码已放入文末链接,有需要的请领取~

话不多说,让我们来看看Agent的表现吧!

图1 学习曲线(x-;y-)

2. e-v2简介

和 , , 。时间限制是由于 .给出 ,到远端总共 300+。如果机器人跌倒,它会得到-100。机动成本较小,更多代理将获得分数。船体角速度状态,, 速度, 速度, 和速度, 腿与 , 和 10 激光雷达 。州里没有。

官方门户:

3. TD3-Twin Deep算法介绍

TD3是一种适用于高维连续动作空间的确定性策略强化学习算法。它的优化目标很简单:

说白了,我想找到不同状态下对应的,这样我就能在与环境交互方面获得最高分。这很直观吧?

为了做到这一点,我们分别需要一个 Actor 和一个 Actor。 Actor 将不同的状态映射到相应的状态。用简单的语言来说,它决定了代理在每个状态下将采取什么操作。目的是告诉Agent在不同的状态下采取不同的动作会得到多少分,这可以帮助Agent选择那些得分较高的。 Actor 和 分别使用不同的神经网络实现。

那么具体是如何完成的呢?现在让我们假设我们已经了解了在不同状态下采取不同动作会得到多少分,并看看 Actor 是如何学习的。

这是原论文中用来更新Actor参数的梯度表达式,代表Actor网络的参数,代表网络的参数。

看起来很秃吧? 。 。不要恐慌!不要恐慌!我们将其分为三部分:红、蓝、绿。

首先看蓝色部分。按照我们之前说的,假设他已经成为高手,无所不知(学术点是他已经学会了互联网,不需要更新)。我们以一维动作空间为例,看看蓝色部分在说什么。

如图所示,当前状态s下,Actor的输出就是图中的黑点。显然,它告诉我们在这种状态下采取黑点代表的动作最终得分并不是最高的。分数最高的是红点代表​​的动作。因此,蓝色部分的梯度告诉我们当前值应该如何变化才能获得更高的分数。

Actor 获取此信息后,会根据该信息调整其输出值。如图4所示,渐变的绿色部分告诉Actor的参数应该如何改变,使得该状态下的输出值就是红点所代表的动作。

至于红色部分,就很简单了。我们的目标不是让Actor在某个状态下获得更高的分数,而是让Agent在所有状态下都做到最好。因此,我们希望根据所有状态计算Actor的梯度,但现实中我们无法获取所有数据。即使我们能够获取到,但是数据量非常大,不利于计算。因此,我们选择以Mini-batch的方式进行更新,每次我们都从与环境交互获得的现有数据中提取笔来训练我们的Actor。

至此,演员已经说完了。相信梳理完之后,这个公式并没有那么晦涩难懂~其实这些数学表达式看起来很复杂,但是只要我们到了那一点,你就会发现它们其实都在说一件事。这是一个很简单的事情~~

现在回想起来,我们假设之前已经学了大师,但实际上Actor和Actor是一起进步的,这就是传说中的策略改进和策略评估。事实上,准确估算Q-一直是学术界专家希望解决的问题。在TD3算法中,为了解决上述问题,作者主要采用了以下方法:

.利用相对稳定的目标网络的输出值来构造学习值,保证学习的稳定性。

-Q。 TD3算法独立学习两个Q-(因此得名“孪生”),并使用两个Q值中较小的一个来构造学习值来减速。

。在构建价值时,TD3 会向目标操作添加噪音以帮助学习。这种方法的灵感是,在相同的状态下采取相似的动作所获得的分数不应该有太大的差异。

这里我不会详细介绍TD3算法。想要更深入学习的同学建议仔细阅读原论文。附上算法流程图

4、清关秘籍

好吧,我们终于来到了我们的重点——作弊通过关卡。如上所述,直接使用现有的主流强化学习算法(TD3、SAC、PPO等)进行训练学习技能后才能使用技能秘籍,即使调整参数也几乎没有效果。这里有一些技巧和代码实现中的一些细节,可以帮助你度过这个环境~奥利给! ! !

技巧 1. 要么完成,要么死亡

环境中触发 Done 的情况分为三种情况,即机器人跌倒、达到最大回合时间以及通过关卡。根据贝尔曼方程,用于更新的Value计算如下:

如果在达到回合最大时间或通关时设置并丢弃,则不正确,因为这是人为终止当前回合。事实上,如果环境继续运行的话,该值不为0。只有当机器人跌倒(Dead)时才等于0(因为这个环境并没有训练机器人从地上爬起来,所以一旦机器人跌倒,本轮真正结束,并且没有奖励信号)。如果不区分环境的Done状态和Dead状态,就会出现学习振荡,导致性能下降。实现方法:

【论文复现】一步步详解用TD3算法通关BipedalWalkerHardcore-v2环境

下图为Trick 1对训练的影响,x轴-、y轴-总轮数,红色-未使用,橙色-使用Trick 1

技巧2。

在原始环境下,跌倒时r=-100,但正常情况下,r大约在[-1,1]区间内。两者数量级相差较大,会导致Q突变,不利于学习。跌倒时,设置r=-1会显着提高训练效果。

结合Trick 1,实现方法为:

下图展示了Trick 2对训练的影响,x轴——运行时间,y轴——总轮数,粉色——未使用,橙色——使用Trick 2

技巧 3. 数据

在e-v2环境中,Agent主要需要学习跑步、过坑、越障、下楼梯等一系列技能。其中,最难的技能就是克服障碍。作者观察到,在学习的中早期阶段,Agent会学习克服障碍的复杂技能,然后忘记其他几个简单技能,然后再次学习简单技能。恢复了简单的技能后,我就忘记了越障技能的问题。增加环境中障碍物的概率可以有效帮助智能体掌握简单和复杂的技能。具体实现方法是更改​​e-v2源文件.py

(路径D:\\envs\torch\Lib\site-\gym\envs\box2d\.py,如果没有找到,直接搜索.py文件)

第252行如下所示:

下图为Trick 3对训练的影响,x轴-、y轴-总轮数,蓝色-未使用,橙色-使用Trick 3

Trick 3也启示我们,强化学习中也存在数据不平衡的情况。看来解决强化学习中的数据不平衡问题也是一个不错的方向~

技巧 4. 腐烂

TD3是一种确定性策略算法。为了鼓励Agent探索环境,需要在Actor输出的动作中添加一定量的噪声。然而,噪声在训练后期不利于算法的收敛。随着训练的进行逐渐降低噪音是一个不错的选择。

超-

层宽

200

层数

速度

0.0001

γ

0.99

小批量大小

256

演员

正值

雷卢

牛头蛋白

0.005

演员延迟

0.2*

0.5*

0.25

0.999

点击这里复制本文地址 以上内容由bbmw采集呈现,若本文有侵犯到您的版权,请联系我们告知删除,谢谢!

支持Ctrl+Enter提交

©2013-2023 bbwm.cn 赣ICP备2022006624号