本文将经常使用五篇新宣布的强化学习论文中引见的五种算法(DDPG、SAC、PPO、I2A和决策转换器)来训练模拟人形机器人相互打斗并对训练结果启动排名。
简介
我想起了最近的一个老电视节目《Battlebots》,并想对这个节目进后退一步的变革。因此,我将经常使用最新宣布的五篇无关强化学习的论文中提到的技术来区分训练模拟人形机器人并让它们倒退决斗,以便比拟这些算法的不同排名。
经过阅读本文中引见的内容,你将学习到关于这五种强化学习算法的上班原理和数学原理,并了解我是如何成功这些不同算法的。同时,您还可以领略一下这些机器人是如何面对面地倒退决斗,并最终确定哪一种算法是最后的冠军!
设置模拟环境
在本文试验中,我将经常使用Unity机器人学习智能体模拟器,针对每个机器人身材在9个关节上构建21个执行器,经过他们头上的虚构相机成功了10乘10的RGB视觉,还有一把剑和一个盾牌。而后,我经常使用C#代码来定义它们的处罚和物理交互。智能体可以经过三种关键方式来取得处罚:
智能体将在1000个期间步后重置,我尽量大规模并行化执行环境,以放慢训练速度。
大规模并行化训练环境(我团体的截图)
而后,就是编写算法了。为了了解我经常使用的算法,您首先须要了解Q学习,这是至关关键的。
Q学习(假设已相熟,请跳过本节)
在强化学习中,咱们让智能体采取执行来探求其环境,并依据其与指标的接远水平对其启动踊跃或消极的处罚。那么,智能体如何调整其决策规范以取得更好的处罚呢?
Q学习(Q Learning)算法提供了一种处置打算。在Q学习中,咱们跟踪Q函数Q(s,a);这个函数能够跟踪从形态s_t到举措a_t后的预期前往结果。
在上方公式中,R(s,a)示意形态和举措的处罚,γ示意折扣因子(超参数),E[]示意希冀值。
假设咱们正确地学习了这个Q函数,那么咱们可以便捷地选用前往最高Q值的那个举措。
接上去,咱们来看如何学习这个Q函数?
从训练回合完结时开局,咱们必需知道实在的Q值(也就是咱们的处罚)。咱们可以经常使用以下降级方程并经常使用递归技术来填充之前的Q值:
在上方公式中,α示意学习率,r示意即时处罚,γ示意折扣因子(权重参数),s'示意下一个形态,max_a'Q(s',a')示意一切或者举措中下一个形态的最大Q值。
从实质上讲,咱们的新Q值变成了旧Q值+上处罚+下一个最大Q值和旧Q值之间差值的一小部分。如今,当咱们的智能体想要选用一个举措时,他们可以选用发生最大Q值(预期处罚)的那个举措。
不过,您或者会留意到这样一个潜在的疑问:咱们正在每个期间步对每个或者的操作评价Q函数。假设咱们在团圆空间中仅有有限数量的或者举措,这倒是很好的;但是,这种状况在延续举措空间中却会解体——此时不再或者对有限数量或者举措上的Q函数倒退有效的评价。于是,这就引出了咱们的第一个竞争算法——DDPG。
深度确定性战略梯度(DDPG)算法
DDPG(Deep Deterministic Policy Gradient)算法试图以一种陈腐的方式在延续举措空间中经常使用Q网络。
翻新点1:演员与评论家
咱们不能经常使用Q网络间接做出决策,但咱们可以用它来训练另一个独自的决策函数。这就要经常使用所谓的演员-评论家(actor-critic)设置。其中,演员(actor)代表选择执行的战略,评论家(critic)则依据这些执行确定未来的预期处罚。
其中,指标评论家的计算公式如下所示:
在上方公式中,r示意即时处罚,γ示意折扣因子,s'示意下一个形态,μ'(s')示意指标战略网络对下一形态的举措,Q'示意指标批判网络,指标演员:预期前往值wrt战略的梯度约等于:
实质上,在N个样本上,战略(wrt-战略)选用的操作的Q值的变动方式会扭转wrt-战略参数。
为了降级这两者,咱们经常使用随机梯度回升降级的方法,在Q和指标Q的MSE损失上经常使用lr*梯度。请留意,演员和评论家都是作为神经网络成功的。
翻新点2:确定性举措战略
咱们的战略可以是确定性的(每个形态的保障举措)或随机性的(依据概率散布对每个形态的采样举措)。用于高效评价Q函数确实定性举措战略(由于每个形态只要一个举措,因此是奇特型的递归评价)。
但是,咱们如何经常使用确定性战略来启动探求呢?咱们不会一次性又一次性地重复雷同的举措吗?但是,确实如此,咱们可以经过参与随机生成的噪声以处罚探求来参与智能体的探求(这看起来有点像经过钻研基因突变所具备的共同的遗传或者性来探求它是如何促成退化的一样)
翻新点3:交互式环境中的批处置学习
咱们还宿愿经过观察到的每个期间步(由“形态-举措-处罚-下一个形态”组成)取得更大的报答:这样咱们就可以存储之前的期间步数据元组,并将其用于未来的训练。
这准许咱们离线经常使用批处置学习(这象征着经常使用之前搜集的数据,而不是经过环境启动交互),此外还准许咱们并行化以提高GPU的训练速度。咱们如今也有了独立的同散布数据,而不是咱们经常获取的有偏向的顺序数据(其中数据点的值取决于之前的数据点)。
翻新点4:指标网络
理论,经常使用神经网络的Q学习太不稳固,也不容易收敛到最优解,由于降级太敏感/太弱小了。
因此,咱们经常使用指标演员和评论家网络,它们与环境相互作用,在训练环节中部分但不齐全凑近实在的演员和评论家((大因子)指标+(小因子)新指标)。
算法运转和代码
【参考】github.com源码仓库地址:AlmondGod/Knights-of-Papers/src/DDPG/DDPG.py文件。
柔性演员-评论家(SAC)算法
DDPG算法确实存在一些疑问。也就是说,虽然评论家降级算法中包含贝尔曼方程:
Q(s,a)=r+max Q(s'a')
但是,神经网络作为Q网络近似器会发生少量噪声,噪声的最大值象征着咱们高估了,也就是说咱们对咱们的战略过于失望,并处罚了伟大的行为。妇孺皆知,DPPG算法还须要少量的超参数调整(包含参与噪声),并且除非其超参数在窄范围内;否则,不能保障收敛到最优解。
翻新点1:最大熵强化学习
如今,演员不再试图纯正地最大化处罚,而是最大化处罚+熵。
那么,为什么要经常使用熵呢?
熵实质上是咱们对某个结果的不确定性(例如,最大熵偏置的硬币总是有0熵显示方式)。
经过将熵作为最大化因子,咱们处罚了宽泛的探求,从而提高了对部分最优解的敏理性,准许对高维空间启动更分歧和稳固的探求(这正是比随机噪声更好的要素)。对熵的优先级启动加权的alpha参数,启动了智能调整(如何调整呢?)。
翻新点2:经常使用两个Q函数
这一变动旨在经过独立训练两个Q网络并在战略改提高骤中经常使用两者中的最小值来处置Q函数的贝尔曼高估偏向。
算法运转和代码
【参考】github.com源码仓库地址:AlmondGod/Knights-of-Papers/src/SAC/SAC.py文件。
I2A算法与PPO算法
其实,这里有两种算法(额外的alg层可以在任何算法之上上班)。
近端战略提升(PPO)算法
经常使用与DDPG和SAC不同的方法,咱们的指标是一种可裁减、数据高效、鲁棒性强的收敛算法(对超参数的定义不敏感)。
翻新点1:代理指标函数
代理指规范许启动非战略性训练,因此咱们可以经常使用更宽泛的数据(特意无利于存在少量预先存在的数据集的事实环球场景)。
在咱们探讨代理指标之前,了解长处(Advantage)的概念至关关键。长处的定义是:采取s战略后s的预期报答与s的预期报答之间的差异。实质上,它量化了一个执行在多大水平上比“平均”执行更好或更差。
咱们预计它的表白式是:A=Q(A,s)-V(A)。其中,Q是举措值(举措A后的预期报答),V是形态值(形态的预期报答);两者都可以学习。
如今,代理指标的计算公式是:
其中:
J(θ)示意代理指标;
Ê_t[…]示意有限批样品的阅历平均值;
r_t(θ)=π_θ(a_t|s_t)/π_θ_old(a_t| s_t),即:新战略中执行的或者性/旧战略中的或者性;
Â_t代表期间步长t的预计长处。
这相当于量化新战略在多大水平上提高了更高报答执行的或者性,并降落了更低报答执行的或者。
翻新点2:剪切指标函数
这是处置超大战略降级疑问以成功更稳固学习的另一种方法。
L_CLIP(θ)=E[min(r(θ)*A,CLIP(r(σ),1-ε,1+ε)*A)]
在此,剪切指标是实在代理和代理的最小值,其中比率被截断在1-epsilon和1+epsilon之间(基本上是未修反比率的信赖区域)。Epsilon理论为~0.1/0.2。
它实质上选用了更激进的剪切比和正态比。
PPO的实践指标函数是:
其中,
1.L^{VF}(θ)=(V_θ(s_t)-V^{target}_t)²
2.Sπ_θ代表形态S_t的战略π_θ的熵
从实质上讲,咱们优先思索更高的熵、更低的值函数和更高的削波长处。
此外,PPO算法还经常使用小批量和交替数据训练。
算法运转和代码
【参考】github.com源码仓库地址:AlmondGod/Knights-of-Papers/src/I2A-PPO/gpuI2APPO.py文件。
增强构想智能体算法
咱们的指标是为任何其余算法创立一个额外的嵌入向量输入,以提供关键的有价值消息,并作为环境的“思想模型”。
翻新点:构想向量
构想向量准许咱们在智能体的观察中参与一个额外的嵌入向量,以便对多个“构想的未来运转”的举措和对其处罚的评价启动编码(指标是“看到未来”和“执行前思索”)。
那么,咱们是如何计算构想向量的呢?咱们的方法是经常使用一个学习环境近似函数,它试图对环境启动模拟(这被称为基于模型的学习,由于咱们试图学习一个环境的模型)。咱们将其与推出战略(rollout policy)相联合,这是一种十分便捷且极速执行的战略(理论是随机的),用于选择“探求未来”的执行。经过在推出战略上运转环境近似器,咱们可以探求未来的执行及其报答,而后找到一种方法将一切这些构想中的未来执行和报答经过一个向量来形容。但是,这里也存在一个值得留意的缺陷:正如你所料,它参与了少量的训练,因此这样的训练就更依赖于必要的少量数据。
组合I2A算法和PPO算法的运转与代码
决策转换器
咱们的指标是应用转换器架构的长处启动强化学习。借助决策转换器(Decision Transformer,简称“DT”),咱们可以在稠密/分散的处罚中识别关键的处罚,享用更宽泛的散布建模以成功更大的泛化和常识转移,并从预先取得的次优的有限数据中学习(称为离线学习)。
关于决策转换器,咱们实质上将强化学习视为序列建模疑问。
翻新点1:转换器
假设你想真正了解转换器的话,我介绍您观看李飞飞高徒、被誉为AI“网红”的Karpathy颁布的“从零开局构建GPT2”的无关视频。以下是实用于DT的无关转换器技术的一个极速回忆:
假定咱们曾经有一些示意形态、举措、报答(预期收到的未来处罚的总和)和期间步长的令牌序列。咱们如今的指标是接纳一系列令牌并预测下一步执行:这将作为咱们的战略。
这些令牌都有键、值和查问,咱们将经常使用复杂的网络将它们组合在一同,以表白每个元素之间的相关。而后,咱们将这些相关组分解一个“嵌入”向量,该向量对输入之间的相关启动编码。这个环节被称为留意力。
请留意,“因果自留意力掩码”能够确保嵌入只能与序列中出如今它们之前的嵌入相关,因此咱们不能经常使用未来来预测未来,而是经常使用过去的消息来预测未来(由于咱们的指标是预测下一个举措)。
一旦咱们有了这个嵌入向量,咱们就可以把它传递到神经网络层(大牛Karpathy经常使用的类比是,在这种状况下,咱们“推理”令牌之间的相关)。
这两个组合(用留意力查找令牌之间的相关,用神经网络层推理相关)是转换器的一个头部,咱们屡次重叠它。在这些头部的最后,咱们经常使用一个学习的神经网络层将输入转换为咱们的举措空间大小和要求。
顺便说一句,在推理时,咱们预先定义了报答,作为咱们最终想要的总处罚。
算法运转和代码
【参考】github.com源码仓库地址:Knights-of-Papers/src/Decision-Transformer/DecisionTransformer.py。
结果评析
为了训练一切上述这些模型,我选用在NVIDIA RTX 4090 GPU计算机上运转了这些算法,以便应用这些算法中新参与的在GPU减速方面的支持。在此,十分感谢GPU共享市场vast.ai!以下给出各算法对应的损失曲线:
DDPG算法损失(2000回合)
经常使用Matplotlib示意的损失图表(自己绘制)
I2APPO算法损失(3500回合)
经常使用Matplotlib示意的损失图表(自己绘制)
SAC算法损失(5000集)
经常使用Matplotlib示意的损失图表(自己绘制)
决策转换器算法损失(1600回合,每40个回合记载一次性损失)
经常使用Matplotlib示意的损失图表(自己绘制)
经过比拟以上各种算法的运转结果(我自主地按训练期间启动了加权),我发现战略转换器的体现最好!思索到DT是专门为应用GPU而构建的,这是有情理的。最后,有兴味的读者可以观看我制造的视频(),它将有助于您更粗疏地了解这些算法的实践功能。最后的较量结果是,这些机器人模型都在不同水平上学会了匍匐和防止摔倒;但是,要想成为专业的拳击手却还有很长的一段路要走。
有待改良的方面
我了解到训练人形机器人是十分艰巨的。本试验中,咱们是在高维输入空间(视觉RGB和执行器位置/速度)和令人难以置信的高维输入空间(27维延续空间)中启动的操作。
从一开局,我所宿愿的最好的结果就是他们能够彼此爬到一同,并相互决斗,虽然这也是一个应战。但是,大少数的训练结果甚至都没有体验到将剑触碰对手的高报答,由于独自行走太难了。
总结一下的话,须要改良的关键方面也就是参与训练期间和经常使用的计算量。正如咱们在现代人工智能反派中所看到的那样,这些参与的计算和数据趋向仿佛没有下限!
最关键的是,我学到了很多!下一次性,我会经常使用NVIDIA的技艺嵌入或永恒学习,让机器人在学会战役之前学会走路!
最后,假设您要观看我制造的视频,了解创立这个名目的完整环节,并观看机器人的战役场景,请观看上方的视频():
我试着用新的强化学习论文中的算法让模拟机器人启动打斗(自己自制图片)
译者引见
朱先忠,社区编辑,专家博客、讲师,潍坊一所高校计算机老师,自在编程界老兵一枚。
原文题目: The Tournament of Reinforcement Learning: DDPG, SAC, PPO, I2A, Decision Transformer ,作者:Anand Majmudar