本例显示了如何使用深度确定性策略梯度(DDPG)代理和双延迟深度确定性策略梯度(TD3)代理训练biped机器人行走。在本例中,还比较了这些经过训练的代理的性能。本例中的机器人在Simscape中建模™ 多体™.
有关这些代理的更多信息,请参见深度确定性策略梯度代理和双延迟深度确定性策略梯度代理.
为了在本例中进行比较,本例在两足机器人环境下用相同的模型参数训练两个agent。该示例还将代理配置为具有以下通用设置。
双足机器人的初始条件策略
演员和评论家的网络结构,灵感来自[1]
演员和评论家代表的选择
培训选项(样本时间,折扣系数,小批量大小,经验缓冲长度,探索噪音)
本例的强化学习环境是一个两足机器人。训练目标是使机器人以最小的控制力沿直线行走。
将模型的参数加载到MATLAB®工作空间中。
机器人参数
打开Simulin万博1manbetxk模型。
mdl =“rlWalkingBipedRobot”;开放式系统(mdl)
该机器人采用Simscape多体建模。
对于这个模型:
在中性0弧度位置,双腿伸直,脚踝平直。
脚的接触是用空间接触力(Simscape多体)块。
agent可以通过施加来自机器人的扭矩信号来控制机器人两条腿上的3个独立关节(踝关节、膝关节和髋关节)-3
来3.
N·m。实际计算的动作信号被归一化-1
和1
.
环境向代理提供以下29个观察结果。
躯干重心的Y(横向)和Z(垂直)平移。Z方向上的平移标准化为与其他观测值类似的范围。
X(正向)、Y(横向)和Z(垂直)平移速度。
躯干的偏航,俯仰和滚转角度。
偏航,俯仰和翻滚的躯干角速度。
双腿三个关节(踝关节、膝关节、髋关节)的角度位置和速度。
上一个时间步骤的动作值。
如果出现以下任何一种情况,则事件终止。
机器人躯干质心Z向小于0.1 m(机器人下落)或Y向大于1 m(机器人离侧太远)。
横摇、俯仰或偏航的绝对值大于0.7854 rad。
以下是奖励功能 ,在每一个步骤中都会提供[2]。
在这里:
为机器人在X方向(向目标方向)的平移速度。
为机器人从目标直线轨迹的侧向平移位移。
为机器人质心的归一化垂直平移位移。
是来自接头的扭矩我从上一时间步开始。
为环境的采样时间。
是环境的最终模拟时间。
这个奖励功能通过为正向速度提供正向奖励来鼓励代理向前移动。它还通过提供持续的奖励( )。奖励功能中的其他术语是对横向和纵向翻译的重大改变以及使用额外控制努力的惩罚。
创建观察规范。
numObs=29;obsInfo=rlNumericSpec([numObs 1]);obsInfo.Name=“观察”;
创建操作规范。
numAct = 6;actInfo = rlNumericSpec([numAct 1],“LowerLimit”,-1,“UpperLimit”1);actInfo。Name =“英尺扭矩”;
为步行机器人模型创建环境界面。
blk=[mdl,' / RL代理'];env = rl万博1manbetxSimulinkEnv (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('输入DDPG或TD3进行代理选择')结束
的createDDPGAgent
和createTD3Agent
辅助函数执行以下操作。
建立演员和评论家网络。
为演员和影评人表示指定选项。
使用创建的网络和指定的选项创建演员和影评人表示。
配置代理特定选项。
创建代理。
DDPG代理使用批判价值函数表示来近似给定观察和行动的长期奖励。DDPG代理通过使用参与者表示来决定对给定的观察采取什么行动。这个例子中的演员和评论家网络受到[1]的启发。
有关创建DDPG代理的详细信息,请参阅createDDPGAgent
helper函数。有关配置DDPG代理选项的信息,请参见rlDDPGAgentOptions
.
有关创建深度神经网络值函数表示的更多信息,请参见创建策略和价值功能表示。有关为DDPG代理创建神经网络的示例,请参阅培训DDPG Agent控制双积分系统.
TD3代理使用两个批判值函数表示来近似给定观察和行动的长期奖励。TD3代理使用参与者表示来决定对给定的观察采取什么操作。该代理所使用的行动者和评论家网络的结构与DDPG代理相同。
DDPG代理可能会高估Q值。由于代理使用Q值更新其策略(actor),因此生成的策略可能是次优的,累积的训练错误可能会导致发散行为。TD3算法是DDPG的一个扩展,并进行了改进,通过防止Q值高估,使其更加健壮[3]。
两个批评网络——TD3代理独立学习两个批评网络,并使用最小值函数估计更新行动者(策略)。这样做可以防止在后续步骤中积累错误和过高估计Q值。
添加目标策略噪声-在值函数中添加剪切噪声,在类似操作中平滑Q函数值。这样做可以防止学习一个不正确的尖峰噪声值估计。
延迟策略和目标更新-对于TD3代理,延迟参与者网络更新允许Q功能在更新策略之前有更多时间减少错误(接近所需目标)。这样做可以防止值估计的差异,并导致更高质量的策略更新。
关于创建TD3代理的详细信息,请参见createTD3Agent
辅助函数。有关配置TD3代理选项的信息,请参阅rlTD3AgentOptions
.
对于本例,DDPG和TD3代理的培训选项是相同的。
每次训练2000集,每集最多持续一次最大步骤
时间的步骤。
在“插曲管理器”对话框中显示培训进度(设置情节
选项),并禁用命令行显示(设置冗长的
选项)。
只有当达到最大的集数时才终止训练(maxEpisodes
)。这样可以在整个培训课程中比较多个代理的学习曲线。
有关更多信息和其他选项,请参见RL培训选项
.
最大值=2000;最大台阶=地板(Tf/Ts);培训选项=RL培训选项(...“最大集”maxEpisodes,...“MaxStepsPerEpisode”,maxSteps,...“ScoreAveragingWindowLength”, 250,...“详细”错误的...“阴谋”,“训练进步”,...“StopTrainingCriteria”,“EpisodeCount”,...“停止训练值”maxEpisodes,...“SaveAgentCriteria”,“EpisodeCount”,...“SaveAgentValue”, maxEpisodes);
要并行地培训代理,请指定以下培训选项。并行培训需要并行计算工具箱™。如果未安装并行计算工具箱软件,请设置UseParallel
来假
.
设置UseParallel
t选项街
.
并行异步训练代理。
在每32步之后,让每个工作者将经验发送到并行池客户端(开始培训的MATLAB®过程)。DDPG和TD3代理商要求工作人员向客户发送经验。
trainOpts.UseParallel=true;trainOpts.ParallelizationOptions.Mode=“异步”;trainOpts.ParallelizationOptions.StepsUntilDataIsSent = 32;trainOpts.ParallelizationOptions.DataToSendFromWorkers =“经验”;
使用火车
函数。此过程需要大量计算,每个代理需要几个小时才能完成。要在运行此示例时节省时间,请通过设置doTraining
来假
.要亲自培训特工,请设置doTraining
来符合事实的
.由于平行训练的随机性,您可以从下面的图中预期不同的训练结果。预训练的代理使用四名工人进行平行训练。
doTraining = false;如果doTraining培训代理商。trainingStats=列车(代理人、环境、列车员);其他的%加载所选代理类型的预培训代理。如果strcmp(代理商选择,“DDPG”)负载(“RLWalkingBipedrobotdPG.mat”,“代理”)其他的负载(“rlWalkingBipedRobotTD3.mat”,“代理”)结束结束
在前面的示例训练曲线中,DDPG和TD3 agents每步训练的平均时间分别为0.11秒和0.12秒。TD3代理每步需要更多的训练时间,因为与DDPG中使用的单个批评家相比,它更新两个批评家网络。
修复随机生成器种子以获得再现性。
rng (0)
为了验证训练agent的性能,在双足机器人环境中进行仿真。有关代理模拟的更多信息,请参见rlSimulationOptions
和sim卡
.
simOptions = rlSimulationOptions (“MaxSteps”,maxSteps);体验=sim(环境、代理、simOptions);
对于以下agent比较,每次使用不同的随机种子对每个agent进行五次训练。由于随机探索噪声和并行训练中的随机性,每次训练的学习曲线不同。由于多次训练agent需要几天才能完成,此比较使用预训练代理人。
对于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代理的四足机器人运动.
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.
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.