主要内容

用强化学习代理训练两足机器人行走

这个例子展示了如何使用深度确定性策略梯度(DDPG)代理和双延迟深度确定性策略梯度(TD3)代理训练双足机器人行走。在本例中,还将比较这些经过训练的代理的性能。本例中的机器人使用Simscape™Multibody™建模。

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

出于该示例中的比较目的,该示例在具有相同模型参数的Biped机器人环境上列出了两个代理。该示例还将代理配置为具有以下内容的常见设置。

  • 两足机器人的初始条件策略

  • 演员和评论家的网络结构,灵感来自[1]

  • 演员和批评者的选项

  • 培训选项(采样时间,折扣系数,迷你批量大小,体验缓冲长度,勘探噪声)

两足机器人模型

本例的强化学习环境是一个两足机器人。训练目标是让机器人用最小的控制努力走直线。

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

robotParametersRL

打开Simulin金宝appk模型。

mdl ='rlwalkingbipedrobot';open_system (mdl)

机器人使用Simscape Multibody建模。

对于这个模型:

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

  • 脚部接触是使用空间接触力(Simscape Multibody)堵塞。

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

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

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

  • X(向前),Y(横向)和Z(垂直)平移速度。

  • 躯干的偏航,俯仰和滚动角。

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

  • 两腿上三个关节(踝关节、膝关节、髋关节)的角度位置和速度。

  • 从前一步的操作值。

如果出现下列任何一种情况,则事件终止。

  • 机器人躯干质心在Z方向小于0.1 m(机器人坠落)或在Y方向大于1 m(机器人向一侧移动太远)。

  • 横摇、俯仰或偏航的绝对值都大于0.7854 rad。

以下奖励功能 R. T. ,在每个时间步中提供,其灵感来自[2]。

R. T. = V. X - 3. y 2 - 50 Z. ˆ 2 + 25 Ts 特遣部队 - 0. 02 一世 T. - 1 一世 2

在这里:

  • V. X 为机器人在X方向(向目标前进)的平移速度。

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

  • Z. ˆ 是机器人质量中心的标准化垂直翻译位移。

  • T. - 1 一世 是关节的扭矩吗一世从上一个时间步。

  • Ts 是环境的采样时间。

  • 特遣部队 是最终模拟时间的环境。

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

创建环境接口

创建观察规范。

numObs = 29;obsInfo = rlNumericSpec([numObs 1]);obsInfo。Name =“观察”;

创建操作规范。

numact = 6;Actinfo = rlnumericspec([Numact 1],“LowerLimit”, 1'上限'1);actInfo。Name ='foot_torque';

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

黑色= [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相应的国旗。

AgentSelection =“TD3”;开关AgentSelection情况下“DDPG”代理= createDDPGAgent (numObs obsInfo、numAct actInfo, Ts);情况下“TD3”代理= createTd3agent(numobs,obsinfo,numact,actinfo,ts);除此以外disp ('为AgentSelection输入DDPG或TD3 '结尾

createDDPGAgentcreateTd3agent.辅助功能执行以下操作。

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

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

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

  • 配置特定于代理的选项。

  • 创建代理。

DDPG代理

DDPG代理使用评价值函数表示来近似给定的观察和行动的长期奖励。DDPG代理通过使用参与者表示来决定采取何种操作。这个例子中的演员和评论家网络的灵感来自[1]。

关于创建DDPG代理的详细信息,请参见createDDPGAgenthelper函数。有关配置DDPG代理选项的信息,请参见rlddpgagentoptions.

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

TD3代理

TD3代理使用两种批评价值函数表示来近似给定的观察和行动的长期奖励。TD3代理决定使用参与者表示对给定的观察采取何种操作。该代理使用的行动者和批评网络的结构与DDPG代理使用的相同。

DDPG代理可能会高估Q值。由于代理使用Q值来更新其策略(参与者),因此生成的策略可能不是最优的,累积的训练错误可能导致不同的行为。TD3算法是DDPG的扩展,通过防止Q值[3]的高估使其更加鲁棒。

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

  • 添加目标策略噪声-在值函数中添加剪切噪声可以平滑类似动作的Q函数值。这样做可以防止学习不正确的噪声值估计的尖峰。

  • 延迟策略和目标更新——对于TD3代理,延迟参与者网络更新允许Q函数在更新策略之前有更多时间减少错误(更接近所需的目标)。这样做可以防止价值估计中的差异,并导致更高质量的策略更新。

关于创建TD3代理的详细信息,请参见createTd3agent.helper函数。有关配置TD3代理选项的信息,请参见rltd3agentoptions.

指定培训选项和培训代理

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

  • 每次训练最多持续2000集maxSteps时间步骤。

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

  • 仅当达到最大集数时终止训练(maxepisodes.).这样可以在整个训练过程中比较多个智能体的学习曲线。

有关更多信息和其他选项,请参阅rlTrainingOptions

maxEpisodes = 2000;maxSteps =地板(Tf / Ts);trainOpts = rlTrainingOptions (...“MaxEpisodes”maxEpisodes,...'maxstepperepisode'maxSteps,...'scoreaveragingwindowlength', 250,...“详细”假的,...'plots'“训练进步”...'stoptrinaincriteria'“EpisodeCount”...“StopTrainingValue”maxEpisodes,...“SaveAgentCriteria”“EpisodeCount”...'SaveagentValue', maxEpisodes);

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

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

  • 培训代理以异步并行。

  • 每32步之后,让每个工作者向主机发送经验。DDPG和TD3代理要求工作人员将经验发送给主机。

训练.Useplate = true;训练.ParlellelizationOptions.Mode =.“异步”;训练.ParlellelizationOptions.stepsuntataissent = 32;训练.ParlellizationOptions.datatosendfromworkers ='经验';

使用该代理商培训火车函数。这个过程是计算密集型的,每个代理需要几个小时才能完成。为了节省运行这个示例时的时间,可以通过设置加载一个预先训练过的代理用圆形错误的.亲自训练探员,预备用圆形真正的.由于并行训练的随机性,您可以从下面的图中期待不同的训练结果。预先训练的特工使用四名工作人员进行平行训练。

doTraining = false;如果用圆形%训练特工。trainingStats =火车(代理,env, trainOpts);别的%加载所选代理类型的预磨料代理。如果比较字符串(AgentSelection“DDPG”) 加载('rlwalkingbipedrebotddpg.mat'“代理”别的负载('rlwalkingbipedrobottd3.mat'“代理”结尾结尾

在上述示例训练曲线中,DDPG和TD3 agents每步训练的平均时间分别为0.11和0.12秒。与DDPG使用的单个批评网络相比,TD3代理每步需要更多的训练时间,因为它更新两个批评网络。

模拟训练有素的特工

修复了可重复性的随机生成器种子。

rng (0)

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

simoptions = rlsimulation选项('maxsteps', maxSteps);经验= sim (env,代理,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估计值低,但是TD3代理显示出集中Q0值的稳定增加,与DDPG代理不同。

在这个例子中,训练在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

hess, 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.

也可以看看

相关的话题