主要内容

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

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

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

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

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

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

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

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

双足机器人模型

本例中的强化学习环境是一个biped机器人。训练目标是使机器人以最小的控制力在直线上行走。

将模型参数加载到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 特遣部队 )在每一个时间步。奖励函数中的其他术语是对横向和纵向翻译的实质性变化以及对过度控制努力的使用的惩罚。

创建环境接口

创建观察规范。

numObs = 29;obsInfo = rlNumericSpec([nummobs 1]); / /指定对象obsInfo。Name =“观察”

创建操作规范。

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

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

黑色= [mdl,' / RL代理'];env=rlSim金宝appulinkEnv(mdl、blk、obsInfo、actInfo);env.ResetFcn=@(in)walkerResetFcn(in,上肢长度/100,下肢长度/100,h/100);

选择并创建用于培训的代理

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

代理选择=“TD3”开关代理选择案例“DDPG”agent=createDDPGAgent(numObs、obsInfo、numAct、actInfo、Ts);案例“TD3”代理= createTD3Agent (numObs obsInfo、numAct actInfo, Ts);否则disp ('输入DDPG或TD3进行代理选择'终止

createDDPGAgentcreateTD3Agent辅助函数执行以下操作。

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

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

  • 使用创建的网络和指定的选项创建参与者和评论家表示。

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

  • 创建代理。

DDPG代理

DDPG代理使用临界值函数表示来近似给定观察和行动的长期回报。DDPG代理通过使用参与者表示来决定执行给定观察的操作。本例中的演员和评论家网络的灵感来源于[1]。

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

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

TD3试剂

TD3代理使用两种临界值函数表示来近似给定观察和动作的长期回报。TD3代理使用参与者表示来决定采取给定观察的动作。用于此代理的参与者和批评家网络的结构与用于DDPG代理的结构相同。

DDPG代理可能会高估Q值。由于agent使用Q值来更新其策略(actor),因此生成的策略可能是次优的,累积的训练错误可能导致不同的行为。TD3算法是DDPG的扩展,通过防止Q值[3]的过高估计,改进了DDPG,使其更加健壮。

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

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

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

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

指定培训选项和培训代理

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

  • 每节培训课程进行2000集,每集最多持续时间maxSteps时间步长。

  • 在“插曲管理器”对话框中显示培训进度(设置阴谋选项)并禁用命令行显示(设置冗长的选项)。

  • 只有当达到最大的集数时才终止训练(maxEpisodes).这样做可以比较整个训练过程中多个代理的学习曲线。

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

maxEpisodes = 2000;maxSteps =地板(Tf / Ts);trainOpts = rlTrainingOptions (...“MaxEpisodes”maxEpisodes,...“MaxStepsPerEpisode”maxSteps,...“ScoreAveragingWindowLength”,250,...“冗长”假的,...“阴谋”“训练进步”...“StopTrainingCriteria”“EpisodeCount”...“StopTrainingValue”maxEpisodes,...“SaveAgentCriteria”“EpisodeCount”...“SaveAgentValue”,最大集数);

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

  • 设定使用并行选择t

  • 并行异步训练代理。

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

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

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

doTraining = false;如果溺爱培训代理商。trainingStats=列车(代理人、环境、列车员);其他的%为所选代理类型加载预训练代理。如果比较字符串(AgentSelection“DDPG”)装载(“rlWalkingBipedRobotDDPG.mat”“代理人”其他的负载(“rlWalkingBipedRobotTD3.mat”“代理人”终止终止

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

模拟训练有素的特工

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

rng (0)

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

simOptions = rlSimulationOptions (“MaxSteps”, maxSteps);经验= sim (env,代理,simOptions);

对比剂的性能

对于下面的agent比较,每个agent每次使用不同的随机种子进行5次训练。由于随机探索噪声和并行训练的随机性,每次跑的学习曲线是不同的。由于多次运行的代理训练需要几天时间才能完成,所以这个比较使用的是预先训练过的代理。

对于DDPG和TD3 agents,绘制集奖励(上图)和集Q0值(下图)的平均值和标准差。情景Q0值是在给定初始环境观察的情况下,每一情景开始时对贴现长期回报的评论家估计。对于一个设计良好的影评人来说,Q0情节的价值接近于真正的贴现长期回报。

comparePerformance (“DDPGAgent”“TD3Agent”

根据学习曲线对比图:

  • DDPG代理的学习速度似乎更快(平均在第600集左右),但达到了局部最低值。TD3启动较慢,但最终比DDPG获得更高的回报,因为它避免了对Q值的高估。

  • 与DDPG相比,TD3试剂在学习曲线上表现出了稳定的改善,表明稳定性得到了提高。

根据情节Q0对比图:

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

  • 虽然对这2000年的TD3估计较低,但与DDPG药剂不同,TD3药剂在Q0值中显示出稳定的增长。

在这个例子中,培训在2000集时停止。在更长的训练时间内,TD3代理的估价值稳步增加,显示出收敛到真正贴现的长期回报的潜力。

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

工具书类

[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

Fujimoto, Scott, Herke van Hoof和David Meger。“解决行动者-批评方法中的函数近似错误”。预印本,2018年10月22日提交。https://arxiv.org/abs/1802.09477

另请参阅

相关话题