主要内容

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

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

有关这些代理的更多信息,请参见深度确定性策略梯度(DDPG)代理双延迟深度确定性(TD3)策略梯度代理

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

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

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

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

  • 培训选项(样本时间、折扣系数、小批量大小、经验缓冲长度、勘探噪声)

双足机器人模型

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

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

robotParametersRL

打开Simulin金宝appk模型。

mdl =“rlWalkingBipedRobot”;open_system (mdl)

采用Simscape Multibody软件对机器人进行建模。

对于这个模型:

  • 在中性0度位置,两腿伸直,脚踝平。

  • 脚部接触是用空间接触力(Simscape多体)块。

  • agent可以通过施加扭矩信号来控制机器人双腿上的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 u t - 1 2

在这里:

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

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

  • z ˆ 为机器人质心的归一化垂直平移位移。

  • u t - 1 扭力来自关节吗从前一个时间步开始。

  • Ts 是环境的采样时间。

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

这个奖励功能通过为正向速度提供正向奖励来鼓励代理向前移动。它还通过提供持续的奖励( 25 Ts 特遣部队 )。奖励函数中的其他术语是对横向和垂直转换的重大变化的惩罚,以及对过度控制努力的使用。

创建环境界面

创建观察规范。

nummobs = 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, block,obsInfo,actInfo);env。ResetFcn = @(in) walkerResetFcnupper_leg_length / 100,lower_leg_length / 100,h / 100);

选择并创建培训代理

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

AgentSelection =“DDPG”开关AgentSelection情况下“DDPG”agent = createDDPGAgent(nummobs,obsInfo,numAct,actInfo,Ts);情况下“TD3”agent = createTD3Agent(nummobs,obsInfo,numAct,actInfo,Ts);否则disp (“将AgentSelection分配给DDPG或TD3”结束

createDDPGAgentcreateTD3AgentHelper函数执行以下操作。

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

  • 指定演员和评论家表示的选项。

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

  • 配置代理特定的选项。

  • 创建代理。

DDPG代理

DDPG代理在连续动作空间上使用参数化确定性策略,该策略由连续确定性参与者学习,并使用参数化q值函数逼近器来估计策略的值。使用神经网络对策略和q值函数进行建模。这个例子中的演员和评论家网络受到[1]的启发。

关于如何创建DDPG代理,请参见createDDPGAgenthelper函数。有关配置DDPG代理选项的信息,请参见rlDDPGAgentOptions

有关创建深度神经网络值函数表示的更多信息,请参见创建策略和价值功能。有关为DDPG代理创建神经网络的示例,请参见训练DDPG代理控制双积分器系统

TD3代理

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

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

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

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

用于此代理的演员和评论家网络的结构与用于DDPG代理的结构相同。关于创建TD3代理的详细信息,请参见createTD3Agenthelper函数。有关配置TD3代理选项的信息,请参见rlTD3AgentOptions

指定培训选项和培训代理

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

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

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

  • 只有当训练达到最大集数(maxEpisodes)。这样可以在整个训练过程中比较多个智能体的学习曲线。

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

maxEpisodes = 2000;maxSteps = floor(Tf/Ts);trainopt = rlTrainingOptions(MaxEpisodes = MaxEpisodes,MaxStepsPerEpisode = maxSteps,ScoreAveragingWindowLength = 250,Verbose = false,情节=“训练进步”StopTrainingCriteria =“EpisodeCount”StopTrainingValue = maxEpisodes,SaveAgentCriteria =“EpisodeCount”SaveAgentValue = maxEpisodes);

要并行训练代理,请指定以下训练选项。并行训练需要并行计算工具箱™。如果未安装并行计算工具箱软件,请设置UseParallel

  • 设置UseParallel选项t

  • 并行异步地训练代理。

  • 每32步后,让每个工人将经验发送到并行池客户端(开始培训的MATLAB®进程)。DDPG和TD3代理要求工作人员向客户端发送体验。

trainOpts。UseParallel = true;trainOpts.ParallelizationOptions.Mode =“异步”;trainoptions . parallelationoptions . steppsuntildataissent = 32;trainOpts.ParallelizationOptions.DataToSendFromWorkers =“经验”

对代理进行培训火车函数。这个过程是计算密集型的,每个代理需要几个小时才能完成。为了在运行此示例时节省时间,请通过设置加载预训练的代理doTraining。自己训练代理,设置doTraining真正的。由于并行训练的随机性,您可以期望从随后的图中得到不同的训练结果。预先训练的代理使用四名工人并行训练。

doTraining = false;如果doTraining%培训座席。trainingStats = train(agent,env,trainOpts);其他的为选定的代理类型加载预训练的代理。如果比较字符串(AgentSelection“DDPG”)负载(“rlWalkingBipedRobotDDPG.mat”“代理”其他的负载(“rlWalkingBipedRobotTD3.mat”“代理”结束结束

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

模拟训练过的代理人

修复随机生成器种子的再现性。

rng (0)

为了验证训练代理的性能,在双足机器人环境中对其进行模拟。有关代理模拟的更多信息,请参见rlSimulationOptionssim卡

simOptions = rlSimulationOptions(MaxSteps= MaxSteps);experience = sim(env,agent,simOptions);

比较座席性能

对于接下来的智能体比较,每个智能体都使用不同的随机种子训练了五次。由于随机探索噪声和并行训练的随机性,每次运行的学习曲线是不同的。由于多次运行的代理的训练需要几天才能完成,因此该比较使用预训练的代理。

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

comparePerformance (“DDPGAgent”“TD3Agent”

基于学习曲线对比图:

  • DDPG代理似乎学习得更快(平均在第600集左右),但达到了局部最小值。《TD3》开始较慢,但最终获得比《DDPG》更高的奖励,因为它避免了对Q值的高估。

  • TD3药剂在学习曲线上表现出稳定的改善,这表明与DDPG药剂相比,TD3药剂的稳定性有所提高。

根据Q0集的对比图:

  • 对于TD3代理,评论家对打折长期奖励(2000集)的估计比DDPG代理低。这种差异是因为TD3算法采用保守方法,通过使用至少两个Q函数来更新其目标。由于对目标的延迟更新,这种行为进一步增强。

  • 虽然这2000次发作的TD3估计值很低,但与DDPG不同,TD3制剂显示出发作Q0值的稳定增加。

在这个例子中,训练在2000集时停止。对于更长的训练周期,TD3智能体随着其估计值的稳定增长,显示出收敛于真实贴现长期奖励的潜力。

有关如何使用DDPG代理训练人形机器人行走的另一个示例,请参见训练人形行走器(Simscape多体)。有关如何使用DDPG代理训练四足机器人行走的示例,请参见基于DDPG Agent的四足机器人运动

参考文献

b[1] Lillicrap, Timothy P., Jonathan J. Hunt, Alexander 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

[3]藤本,斯科特,赫尔克·范·霍夫和大卫·梅格。“处理行为-批评方法中的函数近似误差”。预印本,提交2018年10月22日。https://arxiv.org/abs/1802.09477

另请参阅

功能

对象

相关的例子

更多关于