主要内容

火车双边机器人使用加强学习代理行走

此示例显示如何使用深度确定性策略梯度(DDPG)代理和双延迟深度确定性策略梯度(TD3)代理使用深度确定性策略梯度(DDPG)和双延迟的机器人来训练Biped机器人。在该示例中,您还可以比较这些培训代理的性能。该示例中的机器人在Simscee™Multibody™中建模。

有关这些代理商的更多信息,请参阅深度确定性政策梯度代理双延迟深度确定性政策梯度代理

为了在本例中进行比较,本例在具有相同模型参数的双足机器人环境中对两个agent进行训练。该示例还将代理配置为具有以下公共设置。

  • Biped机器人的初始条件策略

  • 演员和评论家的网络结构,受到了[1]的启发

  • 演员和评论家代表的选项

  • 训练选项(样本时间、折扣因素、小批量大小、经验缓冲长度、探索噪声)

Biped机器人模型

此示例的增强学习环境是一种双链机器人。培训目标是使用最小的控制工作使机器人走进直线。

将模型的参数加载到MATLAB®工作区中。

RobotParametersrl.

打开Simulin金宝appk模型。

mdl ='rlwalkingbipedrobot';Open_System(MDL)

机器人使用Simscape Multibody建模。

对于这个模型:

  • 在中性0 rad位置,两条腿都是直的,脚踝是平的。

  • 脚接触使用空间接触力(Simscape Multibody)块。

  • agent可以通过施加扭矩信号来控制机器人双腿上的3个单独的关节(脚踝、膝盖和臀部)-33.n·m。实际计算的动作信号是归一化的-11

环境为代理提供了以下29个观察。

  • Y(横向)和躯干质量中心的Z(垂直)翻译。Z方向中的平移标准化为与其他观察相似的范围。

  • x(前进),y(横向)和z(垂直)平移速度。

  • 躯干的偏航、俯仰和滚转角度。

  • 摇摆,沥青和滚动角速度的偏航。

  • 两条腿上的三个关节(脚踝,膝关节,臀部)的角位置和速度。

  • 前一个时间步长的动作值。

如果发生以下任一条件,则会终止。

  • 在Z方向(机器人落下)的机器人躯干中心的质量尺寸小于0.1μm,或者在任一个方向上超过1μm(机器人移动到侧面太远)。

  • 辊,俯仰或偏航的绝对值大于0.7854 rad。

以下奖励功能 r t ,在每次都提供的,这是由[2]的启发。

r t v x - 3. y 2 - 50 z 2 + 25 Ts 特遣部队 - 0 02 u t - 1 2

在这里:

  • v x 是机器人X方向(向前朝向目标)的翻译速度。

  • y 是来自目标直线轨迹的机器人的横向平移位移。

  • z 为机器人质心的标准化竖直平移位移。

  • u t - 1 是关节的扭矩从上一步一步。

  • Ts 是环境的采样时间。

  • 特遣部队 是环境的最终仿真时间。

此奖励功能鼓励代理通过提供积极的前瞻性速度来向前迈进。它还鼓励代理人通过提供不断的奖励来避免派生终止( 25 Ts 特遣部队 )在每次步骤。奖励功能中的其他条款是对横向和垂直翻译的大量变化以及使用过度控制努力的惩罚。

创建环境界面

创建观察规范。

numobs = 29;ObsInfo = rlnumericspec([numobs 1]);ObsInfo.name =.'观察'

创建动作规范。

numAct = 6;actInfo = rlNumericSpec([numAct 1],“LowerLimit”,-1,“UpperLimit”1);actInfo。Name ='foot_torque'

为行走机器人模型创建环境界面。

blk = [mdl,' / RL代理'];Env = Rl金宝appsimulinkenv(MDL,BLK,OBSINFO,ACTINFO);env.resetfcn = @(in)walkErresetfcn(inuple_leg_length / 100,depard_leg_length / 100,h / 100);

选择并创建培训代理

这个示例提供了使用DDPG或TD3代理来训练机器人的选项。要使用选择的代理模拟机器人,请设置鼓励相应的国旗。

Agentselection =.'td3'转变鼓励案件“DDPG”代理= createdDpgagent(numobs,obsinfo,numact,actinfo,ts);案件'td3'代理= createTD3Agent (numObs obsInfo、numAct actInfo, Ts);除此以外DISP('为AgentSelection输入DDPG或TD3 '结尾

createdDpgagent.createTd3agent.辅助函数执行以下操作。

  • 创建演员和评论家网络。

  • 为演员和批评者表示指定选项。

  • 使用已创建的网络和指定选项创建演员和批评者表示。

  • 配置代理特定选项。

  • 创建代理。

DDPG代理

DDPG代理近似于使用批评价值函数表示,给定的长期奖励和操作。DDPG代理决定通过使用演员表示来考虑观察的行动。此示例的演员和批评网络是由[1]的启发。

有关创建DDPG代理的详细信息,请参阅createdDpgagent.帮手功能。有关配置DDPG代理选项的信息,请参阅rlddpgagentoptions.

有关创建深度神经网络值函数表示的更多信息,请参阅创建策略和值函数表示.有关为DDPG代理创建神经网络的示例,请参阅火车DDPG代理控制双积分系统

TD3代理商

TD3代理使用两个批评价值函数表示近似长期奖励给定的观察和行动。TD3代理决定使用演员表示来考虑观察的行动。用于该代理的演员和批评网络的结构与用于DDPG代理的批评网络相同。

DDPG代理可以高估Q值。由于代理使用Q值来更新其策略(Actor),因此所产生的策略可以是次优和累积训练错误可能导致不同行为。TD3算法是DDPG的扩展,具有改进,通过防止高估Q值[3]来使其更加稳健。

  • 两个批评网络- TD3代理独立学习两个批评网络,并使用最小值函数估计更新参与者(策略)。这样做可以防止在后续步骤中积累错误和高估Q值。

  • 添加目标策略噪声 - 将剪切噪声添加到值函数平滑Q函数值在类似的操作上。这样做可以防止学习错误的嘈杂值估计的尖锐峰值。

  • 延迟策略和目标更新 - 对于TD3代理,延迟演员网络更新允许更多时间进行Q函数在更新策略之前减少错误(更接近所需的目标)。这样做可以防止价值估算的方差并导致更高质量的政策更新。

有关创建TD3代理的详细信息,请参阅createTd3agent.帮手功能。有关配置TD3代理选项的信息,请参阅rltd3agentoptions.

指定培训选项和火车代理

对于本例,DDPG和TD3代理的培训选项是相同的。

  • 每次发作持续运行2000次剧集的每个培训课程maxsteps.时间步骤。

  • 在“章节管理器”对话框中显示培训进度(设置绘图选项)并禁用命令行显示(设置verb选项)。

  • 仅当达到最大集数时终止训练(maxEpisodes)。这样做允许在整个训练会话中比较多个代理的学习曲线。

有关更多信息和其他选项,请参见rltringOptions.

maxepisodes = 2000;maxsteps =地板(TF / TS);训练= rltrainingOptions(...'maxepisodes'maxEpisodes,...'maxstepperepisode',maxsteps,...“ScoreAveragingWindowLength”,250,...'verbose',错误的,...“阴谋”“训练进步”...“StopTrainingCriteria”“EpisodeCount”...'stoptriningvalue'maxEpisodes,...'SaveAgentCriteria'“EpisodeCount”...“SaveAgentValue”,maxepisodes);

要并行地训练代理,请指定以下训练选项。并行训练需要并行计算工具箱™。如果没有安装并行计算工具箱软件,请设置使用指α.错误的

  • 设定使用指α.选择T.

  • 以并行异步方式训练代理。

  • 经过每32步后,每个工人都会向主机发送经验。DDPG和TD3代理需要工人向主人发送经验。

训练.Useplate = true;训练.ParlellelizationOptions.Mode =.'async';训练.ParlellelizationOptions.stepsuntataissent = 32;训练.ParlellizationOptions.datatosendfromworkers ='经验'

使用该代理商培训火车功能。此过程是计算密集的,需要几个小时才能为每个代理完成。要在运行此示例的同时节省时间,请通过设置加载预制代理用圆形错误的.训练代理人,套装用圆形真的.由于并行培训中的随机性,您可以预期不同的培训结果,这些培训结果是遵循的地块。使用四名工人并行培训预制药。

dotraining = false;如果用圆形%训练特工。Trainstats =火车(代理,env,训练);别的%加载所选代理类型的预磨料代理。如果Strcmp(Agentselection,“DDPG”) 加载('rlwalkingbipedrebotddpg.mat''代理人'别的负载(“rlWalkingBipedRobotTD3.mat”'代理人'结尾结尾

对于前面的示例训练曲线,DDPG和TD3代理的每个训练步骤的平均时间分别为0.11和0.12秒。TD3 Agent每步需要更多的培训时间,因为它更新了与用于DDPG的单个评论家相比的两个批评网络。

模拟训练有素的代理人

修复随机发生器种子以进行再现性。

rng (0)

为了验证训练agent的性能,在双足机器人环境中进行仿真。有关代理模拟的更多信息,请参见RlsimulationOptions.SIM

simoptions = rlsimulation选项('maxsteps',maxsteps);体验= SIM(ENV,Agent,SimOptions);

比较代理表现

对于以下代理比较,每次使用不同的随机种子训练每次尝试五次。由于随机探测噪声和并行训练中的随机性,每个运行的学习曲线都不同。由于多次运行的代理训练需要几天时间来完成,因此这种比较使用预寄存代理。

对于DDPG和TD3制剂,绘制情节奖励(顶部情节)和情节Q0值(底部情节)的平均值和标准差。章节Q0值是在每一章节开始时,根据对环境的初步观察对贴现的长期奖励的评论家估计。对于一个精心设计的评论家来说,情节Q0的价值接近于真正的贴现的长期回报。

comparePerformance ('ddpgagent''td3agent'

基于学习曲线比较图:

  • DDPG代理似乎更快地提取学习(平均围绕第600号集600),但击中了本地最小值。TD3开始较慢,但最终实现比DDPG更高的奖励,因为它避免了Q值的高估。

  • 与DDPG相比,TD3制剂的学习曲线稳步改善,说明其稳定性有所提高。

基于第Q0 Comparison Plot:

  • 对于TD3药剂,评论家估计的贴现长期报酬(2000集)比DDPG药剂低。这种差异是因为TD3算法在更新目标时采用了保守的方法,使用了最小的两个Q函数。由于对目标的更新延迟,这种行为得到了进一步增强。

  • 尽管这2000例病例的TD3估计值很低,但与DDPG不同,TD3制剂显示出了事件Q0值的稳步增加。

在这个例子中,训练在2000集时停止。对于一个较大的训练周期,TD3代理随着其估计的稳步增加显示出向真正贴现的长期回报收敛的潜力。

有关如何使用DDPG代理训练人形机器人行走的另一个示例,请参见训练人形沃克(Simscape Multibody).有关如何使用DDPG代理训练四足机器人的示例,请参阅使用DDPG代理的四足机器人机器人

参考

[1] LillicRap,Timothy P.,Jonathan J. Hunt,亚历山大Pritzel,Nicolas Heess,Tom Erez,Yuval Tassa,David Silver和Daan Wierstra。“与深增强学习连续控制。”预印刷品,2019年7月5日提交。https://arxiv.org/abs/1509.02971

[2] Heess,Nicolas,Dhruva TB,Srinivasan Sriram,Jay Lemmon,Josh Merel,Greg Wayne,Yuval Tassa等。“富裕环境中运动行为的出现。”预印刷品,2017年7月10日提交。https://arxiv.org/abs/1707.02286

Fujimoto, Scott, Herke van Hoof和David Meger。行动者-评论家方法中的寻址函数近似误差预印本,2018年10月22日提交。https://arxiv.org/abs/1802.09477

另请参阅

相关话题