这个例子展示了如何使用深度确定性策略梯度(DDPG) agent和双延迟深度确定性策略梯度(TD3) agent训练双足机器人行走。在本例中,您还将比较这些训练过的代理的性能。本例中的机器人是在Simscape™Multibody™中建模的。
有关这些代理商的更多信息,请参阅深度确定性政策梯度代理和双延迟深度确定性政策梯度代理.
出于该示例中的比较目的,该示例在具有相同模型参数的Biped机器人环境上列出了两个代理。该示例还将代理配置为具有以下内容的常见设置。
Biped机器人的初始条件策略
演员和评论家的网络结构,灵感来自[1]
演员和批评者的选项
培训选项(采样时间,折扣系数,迷你批量大小,体验缓冲长度,勘探噪声)
此示例的增强学习环境是一种双链机器人。培训目标是使用最小的控制工作使机器人走进直线。
将模型的参数加载到MATLAB®工作区中。
robotParametersRL
打开Simulin万博1manbetxk模型。
mdl ='rlwalkingbipedrobot';open_system (mdl)
该机器人采用Simscape Multibody进行建模。
对于此模型:
在中性的0弧度位置,双腿伸直,脚踝平。
脚接触使用空间接触力(Simscape Multibody)堵塞。
通过施加来自机器人的两条腿,代理可以通过施加扭矩信号来控制3个单独的关节(脚踝,膝盖和臀部)-3
到3.
n·m。实际计算的动作信号是归一化的-1
和1
.
环境为代理提供了以下29个观察。
躯干重心的Y(横向)和Z(垂直)平移。Z方向的平移归一化到与其他观测值相似的范围。
X(向前),Y(横向)和Z(垂直)平移速度。
躯干的偏航,俯仰和滚动角。
摇摆,沥青和滚动角速度的偏航。
两腿上三个关节(踝关节、膝关节、髋关节)的角度位置和速度。
从前一步的操作值。
如果出现下列任何一种情况,则该集终止。
在Z方向(机器人落下)的机器人躯干中心的质量尺寸小于0.1μm,或者在任一个方向上超过1μm(机器人移动到侧面太远)。
滚转、俯仰或偏航的绝对值均大于0.7854 rad。
以下奖励功能 ,每个时间步骤都提供,灵感来自[2]。
这里:
是机器人X方向(向前朝向目标)的翻译速度。
是来自目标直线轨迹的机器人的横向平移位移。
是机器人质量中心的标准化垂直翻译位移。
是来自关节的力矩吗一世从上一个时间步骤。
是环境的采样时间。
是环境的最终模拟时间。
此奖励功能鼓励代理通过提供积极的前瞻性速度来向前迈进。它还鼓励代理人通过提供不断的奖励来避免派生终止( )在每次步骤。奖励功能中的其他条款是对横向和垂直翻译的大量变化以及使用过度控制努力的惩罚。
创建观察规范。
numObs = 29;obsInfo = rlNumericSpec([nummobs 1]); / /指定对象obsInfo。Name ='观察';
创建操作规范。
numact = 6;Actinfo = rlnumericspec([Numact 1],'lowerimit',-1,'上限',1);Actinfo.name =.“foot_torque”;
为行走机器人模型创建环境界面。
黑色= [mdl,'/ rl代理'];Env = Rl万博1manbetxsimulinkenv(MDL,BLK,OBSINFO,ACTINFO);env.resetfcn = @(in)walkErresetfcn(inuple_leg_length / 100,depard_leg_length / 100,h / 100);
此示例提供了使用DDPG或TD3代理培训机器人的选项。要使用您选择的代理模拟机器人,请设置鼓励
相应的国旗。
Agentselection =.'td3';开关鼓励案件'ddpg'代理= createdDpgagent(numobs,obsinfo,numact,actinfo,ts);案件'td3'代理= createTd3agent(numobs,obsinfo,numact,actinfo,ts);否则disp ('输入DDPG或TD3以获得Agentselection')结尾
这createdDpgagent.
和createTd3agent.
辅助功能执行以下操作。
创建演员和批评网络。
为演员和批评者表示指定选项。
使用已创建的网络和指定选项创建演员和批评者表示。
配置代理特定选项。
创建代理。
DDPG代理近似于使用批评价值函数表示,给定的长期奖励和操作。DDPG代理决定通过使用演员表示来考虑观察的行动。此示例的演员和批评网络是由[1]的启发。
创建DDPG代理的详细信息请参见createdDpgagent.
helper函数。有关配置DDPG代理选项的信息,请参阅rlddpgagentoptions.
.
有关创建深度神经网络值函数表示的更多信息,请参见创建策略和值函数表示.有关为DDPG代理创建神经网络的示例,请参见火车DDPG代理控制双积分系统.
TD3代理使用两个批评价值函数表示近似长期奖励给定的观察和行动。TD3代理决定使用演员表示来考虑观察的行动。用于该代理的演员和批评网络的结构与用于DDPG代理的批评网络相同。
DDPG代理可能会高估Q值。由于agent使用Q值来更新其策略(actor),因此生成的策略可能是次优的,累积的训练错误可能导致不同的行为。TD3算法是DDPG的扩展,通过防止Q值[3]的过高估计,改进了DDPG,使其更加健壮。
两个批评网络 - TD3代理商独立学习两个批评网络,并使用最小值函数估计以更新Actor(策略)。这样做可以防止后续步骤和高估Q值的累积。
添加目标策略噪声 - 将剪切噪声添加到值函数平滑Q函数值在类似的操作上。这样做可以防止学习错误的嘈杂值估计的尖锐峰值。
延迟策略和目标更新——对于TD3代理,延迟参与者网络更新允许Q函数在更新策略之前有更多的时间来减少错误(更接近所需的目标)。这样做可以防止价值估计中的差异,并导致更高质量的策略更新。
关于创建TD3代理的详细信息,请参见createTd3agent.
helper函数。有关配置TD3代理选项的信息,请参见rltd3agentoptions.
.
对于此示例,DDPG和TD3代理的培训选项是相同的。
每次发作持续运行2000次剧集的每个培训课程maxSteps
时间步骤。
在Episode Manager对话框中显示培训进度(设置绘图
选项)并禁用命令行显示(设置verb
选项)。
仅在达到最大剧集数时终止培训(maxepisodes.
).这样做可以比较整个训练过程中多个代理的学习曲线。
有关更多信息和其他选项,请参阅rlTrainingOptions
.
maxEpisodes = 2000;maxSteps =地板(Tf / Ts);trainOpts = rlTrainingOptions (......“MaxEpisodes”,maxepisodes,......“MaxStepsPerEpisode”maxSteps,......'scoreaveragingwindowlength',250,......'verbose'假的,......'plots'那'培训 - 进步'那......'stoptrinaincriteria'那'episodecount'那......“StopTrainingValue”,maxepisodes,......'SaveAgentCriteria'那'episodecount'那......'SaveagentValue',maxepisodes);
要并行培训代理,请指定以下培训选项。并行培训需要并行计算工具箱™。如果您没有安装并行计算工具箱软件,请设置使用指α.
到错误的
.
设定使用指α.
选择T.后悔
.
培训代理以异步并行。
经过每32步后,每个工人都会向主机发送经验。DDPG和TD3代理需要工人向主人发送经验。
trainOpts。UseParallel = true;trainOpts.ParallelizationOptions.Mode ='async';训练.ParlellelizationOptions.stepsuntataissent = 32;训练.ParlellizationOptions.datatosendfromworkers ='经验';
训练代理人使用火车
函数。这个过程是计算密集型的,每个代理需要几个小时才能完成。为了节省运行此示例的时间,请通过设置加载预先训练过的代理用圆形
到错误的
.自己训练代理人,设置用圆形
到真正的
.由于并行训练中的随机性,您可以从下面的图中预期不同的训练结果。预先训练的药剂由四名工作人员同时训练。
doTraining = false;如果用圆形%训练代理人。Trainstats =火车(代理,env,训练);别的%加载所选代理类型的预磨料代理。如果比较字符串(AgentSelection'ddpg') 加载(“rlWalkingBipedRobotDDPG.mat”那'代理人')别的加载('rlwalkingbipedrobottd3.mat'那'代理人')结尾结尾
对于前面的示例训练曲线,DDPG和TD3代理的每个训练步骤的平均时间分别为0.11和0.12秒。TD3 Agent每步需要更多的培训时间,因为它更新了与用于DDPG的单个评论家相比的两个批评网络。
修复随机生成器种子的再现性。
RNG(0)
要验证培训的代理的性能,请在Biped机器人环境中模拟它。有关代理模拟的更多信息,请参阅rlSimulationOptions
和SIM
.
simOptions = rlSimulationOptions (“MaxSteps”, maxSteps);经验= sim (env,代理,simOptions);
对于下面的agent比较,每个agent每次使用不同的随机种子进行5次训练。由于随机探索噪声和并行训练的随机性,每次跑的学习曲线是不同的。由于多次运行的代理训练需要几天时间才能完成,所以这个比较使用的是预先训练过的代理。
对于DDPG和TD3代理,绘制集发作奖励(顶部图)的平均和标准偏差和第Q0值(底部图)。第一个Q0值是批评估计每集发作开始时折扣长期奖励的估计鉴于环境初步观察环境。对于精心设计的评论家,第Q0的综合评论者将涉及真正的折扣长期奖励。
CompateDerformance('ddpgagent'那'td3agent')
根据学习曲线对比图:
DDPG代理似乎更快地提取学习(平均围绕第600号集600),但击中了本地最小值。TD3开始较慢,但最终实现比DDPG更高的奖励,因为它避免了Q值的高估。
TD3代理显示其学习曲线的稳步改善,这表明与DDPG代理相比的稳定性提高。
基于第Q0 Comparison Plot:
对于TD3代理商,与DDPG代理商相比,批评长期奖励(2000集)的批评估计率较低。这种差异是因为TD3算法采用保守方法在更新其目标时使用至少两个Q函数更新其目标。由于目标的延迟更新,此行为进一步增强。
尽管对于这些2000剧集的TD3估计值低,但是TD3代理显示出集中Q0值的稳定增加,与DDPG代理不同。
在这个例子中,培训在2000集中停了下来。对于较大的培训期,TD3代理具有稳定增加的估计值表明潜在融合到真正的折扣长期奖励。
有关如何使用DDPG代理训练人形机器人的另一个例子,请参阅训练人形沃克(Simscape Multibody).有关如何训练四足机器人使用DDPG代理行走的示例,请参见基于DDPG Agent的四足机器人运动.
[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.
[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] Fujimoto,Scott,Herke Van Hoof和David Meger。“参与演员批评方法中的函数近似误差。”预印刷品,2018年10月22日提交。https://arxiv.org/abs/1802.09477..