本示例展示了如何训练Simscape™Multibody™中建模的两足机器人使用深度确定性策略梯度(DDPG)代理和双延迟深度确定性策略梯度(TD3)代理行走,并比较了这些训练过的代理的性能。
有关这些代理商的更多信息,请参阅深度确定性政策梯度代理和双延迟深度确定性政策梯度代理.
为了在本例中进行比较,两个agent都是在具有相同模型参数的双足机器人环境中进行训练的。代理还被配置为具有以下公共设置。
Biped机器人的初始条件策略
演员和评论家的网络结构,灵感来自[2]
演员和评论家代表的选项
训练选项(样本时间,折扣因素,小批量大小,经验缓冲长度,探索噪声)
此示例的增强学习环境是一种双链机器人。培训目标是使用最小的控制工作使机器人走进直线。
将模型参数加载到MATLAB®工作空间。
robotParametersRL
打开Simulin万博1manbetxk模型。
mdl ='rlwalkingbipedrobot';open_system (mdl)
该机器人采用Simscape Multibody建模。
对于这个模型:
中立的0
弧度位置是双腿直线和脚踝平。
脚接触使用空间接触力block from Simscape Multibody。
通过应用扭矩信号,可以通过施加扭矩信号来控制3个单个接头,脚踝,膝盖和臀部,在机器人的两条腿上3
来3.
Nm。实际计算的动作信号在-1
和1
.
环境向代理提供了29个观察。观察结果是:
躯干质心的Y(横向)和Z(垂直)平移。Z方向上的平移被归一化到与其他观测值相似的范围。
X(向前),Y(横向)和Z(垂直)平移速度。
躯干的偏航、俯仰和滚转角度。
躯干的偏航、俯仰和滚转角速度。
两腿上3个关节(脚踝,膝盖,臀部)的角度位置和速度。
从前一步的操作值。
如果出现下列任何一种情况,则事件终止。
机器人躯干质心在Z方向(下降)小于0.1 m,在Y方向(横向运动)大于1 m。
横摇、俯仰或偏航的绝对值都大于0.7854弧度。
奖励功能 ,在每个时间步中提供,其灵感来自[1]。这个奖励功能通过为正向速度提供正向奖励来鼓励代理向前移动。它还通过提供持续的奖励来鼓励代理人避免情节终止( )在每次步骤。奖励功能中的其他条款是对横向和垂直翻译的大量变化以及使用过度控制努力的惩罚。
在这里:
是机器人的X方向(向前朝向目标)的翻译速度。
是来自目标直线轨迹的机器人的横向平移位移。
为机器人质心的标准化竖直平移位移。
是关节的扭矩吗我从上一个时间步。
是环境的采样时间。
是最终模拟时间的环境。
创建观察规范。
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 = Rl万博1manbetxsimulinkenv(MDL,BLK,OBSINFO,ACTINFO);env.resetfcn = @(in)walkErresetfcn(inuple_leg_length / 100,depard_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代理使用参与者表示来决定采取何种操作。这个例子中的演员和评论家网络的灵感来自[2]。
关于创建DDPG代理的详细信息,请参见createDDPGAgent
helper函数。有关配置DDPG代理选项的信息,请参阅rlddpgagentoptions.
.
有关创建深度神经网络值函数表示的更多信息,请参见创建策略和值函数表示.有关为DDPG代理创建神经网络的示例,请参见火车DDPG代理控制双积分系统.
TD3代理使用2个评论值函数表示来近似给定的观察和行动的长期奖励。TD3代理决定使用参与者表示对给定的观察采取何种操作。该代理使用的行动者和批评网络的结构与DDPG代理使用的相同。
DDPG代理可以高估Q值。由于此Q值然后用于更新代理的策略(Actor),因此由此产生的策略可以是次优和累积训练错误可能导致不同行为。TD3算法是DDPG的扩展,具有改进,通过防止高估Q值[3]来使其更加稳健。
两个批评网络- TD3代理独立学习两个批评网络,并使用最小值函数估计更新参与者(策略)。这样做可以防止在后续步骤中积累错误和高估Q值。
添加目标策略噪声-将剪切噪声添加到目标动作中,以平滑类似动作的Q函数值。这样做可以防止学习不正确的噪声值估计的尖峰。
延迟策略和目标更新——对于TD3代理,建议延迟参与者网络更新,因为它允许Q函数在更新策略之前有更多时间减少错误(更接近所需的目标)。这样做可以防止值估计中的差异,并导致更高质量的策略更新。
关于创建TD3代理的详细信息,请参见createTd3agent.
helper函数。有关配置TD3代理选项的信息,请参见rltd3agentoptions.
.
对于本例,DDPG和TD3代理的培训选项是相同的。这些选项基于以下需求。
每次发作持续运行2000次剧集的每个培训课程maxSteps
时间步骤。
在“章节管理器”对话框中显示培训进度(设置绘图
选项)并禁用命令行显示(设置详细的
选项)。
仅当达到最大集数时终止训练(maxEpisodes
).这样可以在整个训练过程中比较多个智能体的学习曲线。
有关更多信息和其他选项,请参见rlTrainingOptions
.
maxEpisodes = 2000;maxSteps =地板(Tf / Ts);trainOpts = rlTrainingOptions (...“MaxEpisodes”maxEpisodes,...“MaxStepsPerEpisode”maxSteps,...“ScoreAveragingWindowLength”, 250,...'verbose'假的,...“阴谋”,“训练进步”,...“StopTrainingCriteria”,“EpisodeCount”,...“StopTrainingValue”maxEpisodes,...'SaveAgentCriteria',“EpisodeCount”,...“SaveAgentValue”, maxEpisodes);
指定以下训练选项以并行训练模式训练代理。如果没有安装并行计算工具箱™软件,请设置使用指α.
来错误的
.
设定使用指α.
t选项街
.
以并行异步方式训练代理。
经过每32步后,每个工人都会向主机发送经验。DDPG和TD3代理需要工人将体验发送到主机。
trainOpts。UseParallel = true;trainOpts.ParallelizationOptions.Mode =“异步”;训练.ParlellelizationOptions.stepsuntataissent = 32;训练.ParlellizationOptions.datatosendfromworkers ='经验';
训练特工使用火车
函数。这个过程是计算密集型的,每个代理需要几个小时才能完成。为了节省运行这个示例时的时间,可以通过设置加载一个预先训练过的代理用圆形
来错误的
.亲自训练探员,预备用圆形
来真正的
.由于并行培训中的随机性,您可以期待下面的图中的不同培训结果。使用四名工人并行培训预制药。
doTraining = false;如果用圆形%训练特工。trainingStats =火车(代理,env, trainOpts);别的%为选定的代理加载预训练代理。如果比较字符串(AgentSelection'ddpg') 加载(“rlWalkingBipedRobotDDPG.mat”,'代理人')别的负载(“rlWalkingBipedRobotTD3.mat”,'代理人')结尾结尾
在上述示例训练曲线中,DDPG和TD3 agents每步训练的平均时间分别为0.11和0.12秒。与DDPG使用的单个批评网络相比,TD3代理每步需要更多的训练时间,因为它更新两个批评网络。
修复了可重复性的随机生成器种子。
rng (0)
为了验证训练agent的性能,在双足机器人环境中进行仿真。有关代理模拟的更多信息,请参见rlSimulationOptions
和SIM
.
simOptions = rlSimulationOptions (“MaxSteps”, maxSteps);经验= sim (env,代理,simOptions);
为了进行下面的代理比较,每个代理每次使用不同的随机种子训练五次。由于并行训练的随机探索噪声和随机性,每次运行的学习曲线是不同的。由于多次运行的代理训练需要几天时间才能完成,所以这个比较使用了预先训练的代理。
对于DDPG和TD3制剂,绘制情节奖励(顶部情节)和情节Q0值(底部情节)的平均值和标准差。章节Q0值是在每一章节开始时,根据对环境的初步观察对贴现的长期奖励的评论家估计。对于一个精心设计的评论家来说,情节Q0的价值接近于真正的贴现的长期回报。
comparePerformance ('ddpgagent','td3agent')
基于学习曲线比较阴谋:
DDPG似乎学习得更快(平均约600集),但达到了局部最小值。与DDPG相比,TD3起步较慢,但最终会获得更高的奖励,因为它避免了高估Q值。
TD3代理显示其学习曲线的稳步改善,这表明与DDPG代理相比的稳定性提高。
基于集Q0比较阴谋:
对于TD3代理商,与DDPG代理商相比,折扣长期奖励(2000集)的批评估计率较低。这种差异是因为TD3算法采用保守方法在更新其目标时使用最小两个Q函数更新其目标。由于目标的延迟更新,此行为进一步增强。
虽然这些2000剧集的TD3估计值低,但TD3代理显示出集中Q0值的稳定增加,与DDPG代理商不同。
在此示例中,培训在2000次发作中停止。对于较大的培训期,TD3代理具有稳定增加的估计值表明潜在融合到真正的折扣长期奖励。
[1] Heess, Nicolas, Dhruva TB, Srinivasan Sriram, Jay Lemmon, Josh Merel, Greg Wayne, Yuval Tassa, et al.“丰富环境中运动行为的出现”。ArXiv: 1707.02286 (Cs)2017年7月10日https://arxiv.org/abs/1707.02286.
[2] Lillicrap, Timothy P., Jonathan J. Hunt, Alexander Pritzel, Nicolas Heess, Tom Erez, Yuval Tassa, David Silver,和Daan Wierstra。“深度强化学习的连续控制”。arxiv:1509.02971 [CS,Stat],2019年7月5日。https://arxiv.org/abs/1509.02971.
Fujimoto, Scott, Herke van Hoof和David Meger。行动者-评论家方法中的寻址函数近似误差。ArXiv: 1802.09477 (Cs,统计),2018年10月22日。https://arxiv.org/abs/1802.09477.