主要内容

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

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

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

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

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

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

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

  • 培训选项(采样时间,折扣因子,小批量大小,经验缓冲长度,探索噪声)

两足机器人模型

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

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

robotParametersRL

打开Simulink模型。

mdl =“rlWalkingBipedRobot”;open_system (mdl)

该机器人使用Simscape多体建模。

对于这个模型:

  • 在中立的0弧度位置,双腿伸直,脚踝平。

  • 脚的接触是建模使用空间接触力(Simscape多体)块。

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

环境向代理提供以下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([numObs 1]);obsInfo。Name =“观察”

创建操作规范。

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

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

黑色= [mdl,' / RL代理'];env = rlSimulinkEnv (mdl,黑色,obsInfo actInfo);env。ResetFcn = @(in) walkerResetFcn(in,upper_leg_length/100,lower_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 '结束

createDDPGAgent而且createTD3Agent助手函数执行以下操作。

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

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

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

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

  • 创建代理。

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代理的详细信息,请参见createTD3Agenthelper函数。有关配置TD3代理选项的信息,请参见rlTD3AgentOptions

指定培训选项和培训代理

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

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

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

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

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

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

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

  • 设置UseParallelt选项

  • 并行异步地训练代理。

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

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

训练代理使用火车函数。这个过程计算量很大,每个代理需要数小时才能完成。要在运行此示例时节省时间,请通过设置加载预先训练过的代理doTraining.亲自训练探员,设doTraining真正的.由于并行训练中的随机性,您可以从下面的图中预期不同的训练结果。经过预先训练的特工由四名工作人员并行训练。

doTraining = false;如果doTraining培训代理。trainingStats =火车(代理,env, trainOpts);其他的为所选代理类型加载经过预先训练的代理。。如果比较字符串(AgentSelection“DDPG”)负载(“rlWalkingBipedRobotDDPG.mat”“代理”其他的负载(“rlWalkingBipedRobotTD3.mat”“代理”结束结束

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

模拟训练有素的特工

固定随机生成器种子的再现性。

rng (0)

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

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

对比剂的性能

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

对于DDPG和TD3两个agent,绘制集奖励的平均值和标准差(上图)和集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的四足机器人运动

参考文献

[1]利利卡普、蒂莫西·P、乔纳森·j·亨特、亚历山大·普里策尔、尼古拉斯·赫斯、汤姆·埃雷兹、尤瓦尔·塔萨、大卫·西尔弗和达安·威尔斯特拉。“深度强化学习的持续控制。”预印本,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

藤本,斯科特,赫克·范·霍夫,大卫·梅格。在行动者-批评家方法中寻址函数近似误差。预印本,2018年10月22日提交。https://arxiv.org/abs/1802.09477

另请参阅

相关的话题

相关的话题

Baidu
map