主要内容

用并行计算训练交流Agent平衡车杆系统

此示例演示如何通过异步并行训练,训练演员-评论家(AC)代理来平衡在MATLAB®中建模的车-杆系统。有关演示如何在不使用并行训练的情况下训练agent的示例,请参阅培训交流代理以平衡手推车杆系统

演员平行训练

当您使用AC代理的并行计算时,每个工作人员都会从其代理和环境的副本中生成经验。在每一个N步骤,工作人员根据经验计算梯度,并将计算出的梯度发送回客户端代理(与MATLAB®进程相关的代理,该代理开始培训)。客户端代理更新其参数如下。

  • 对于异步培训,客户端代理应用接收到的梯度,而不需要等待所有的worker发送梯度,并将更新后的参数发送回提供梯度的worker。然后,工作人员继续使用更新后的参数从其环境中生成经验。

  • 对于同步训练,客户端代理等待从所有工作人员接收梯度并使用这些梯度更新其参数。然后,客户端同时将更新后的参数发送给所有工作人员。然后,所有工作人员使用更新后的参数继续生成体验。

有关同步与异步并行化的更多信息,请参见使用并行计算和GPU训练代理

创建车杆MATLAB环境接口

为推车杆系统创建预定义的环境界面。有关此环境的详细信息,请参阅加载预定义的控制系统环境

env = rlPredefinedEnv (“CartPole离散型”); 环境处罚费=-10;

从环境界面获取观察和行动信息。

obsInfo = getObservationInfo (env);numObservations = obsInfo.Dimension (1);actInfo = getActionInfo (env);

修复随机生成器种子以获得再现性。

rng (0)

创建交流代理

AC代理使用批判值函数表示来近似给定的观察和行动的长期回报。要创建批评家,首先创建一个深度神经网络,它有一个输入(观察)和一个输出(状态值)。由于环境提供了4个观测结果,所以评价网络的输入大小为4。有关创建深度神经网络值函数表示的更多信息,请参见创建策略和价值功能表示

批评家= [featureInputLayer(4,“正常化”“没有”“名字”“国家”) fullyConnectedLayer (32,“名字”“CriticStateFC1”) reluLayer (“名字”“CriticRelu1”) fullyConnectedLayer (1,“名字”“CriticFC”)]; criticOpts=rlRepresentationOptions(“LearnRate”1飞行,“梯度阈值”1);评论家= rlValueRepresentation (criticNetwork obsInfo,“观察”,{“国家”},批判者);

在给定的观察结果下,AC代理使用一个参与者表示来决定采取哪个动作。要创建参与者,需要创建一个具有一个输入(观察)和一个输出(动作)的深度神经网络。actor网络的输出大小为2,因为agent可以对环境施加两个力值-10和10。

actorNetwork=[featureInputLayer(4,“正常化”“没有”“名字”“国家”) fullyConnectedLayer (32,“名字”“ActorStateFC1”) reluLayer (“名字”“ActorRelu1”) fullyConnectedLayer (2“名字”“行动”)]; actorOpts=rlRepresentationOptions(“LearnRate”1飞行,“梯度阈值”,1); actor=rl随机性actor表示(actorNetwork、obsInfo、actInfo、,...“观察”,{“国家”}, actorOpts);

要创建AC代理,首先使用rlACAgentOptions

agentOpts = rlACAgentOptions (...“NumStepsToLookAhead”32岁的...“EntropyLossWeight”,0.01,...“折扣演员”, 0.99);

然后使用指定的参与者表示和代理选项创建代理。有关详细信息,请参阅rlACAgent

代理= rlACAgent(演员、评论家、agentOpts);

并行训练选项

要培训代理,请首先指定培训选项。对于本例,请使用以下选项。

  • 每次训练最多进行一次1000每集最多持续一集500时间的步骤。

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

  • 当代理收到的平均累积奖励大于时,停止培训50010连续的情节。此时,代理可以在垂直位置平衡摆锤。

trainOpts = rlTrainingOptions (...“最大集”, 1000,...“MaxStepsPerEpisode”, 500,...“冗长”错误的...“阴谋”“训练进步”...“StopTrainingCriteria”“平均向上”...“停止训练值”, 500,...“ScoreAveragingWindowLength”,10);

您可以在训练或模拟期间使用情节函数。

地块(环境)

Figure Cart Pole Visualizer包含一个轴对象。轴对象包含6个类型为线、多边形的对象。

要使用并行计算训练代理,请指定以下训练选项。

  • 设置使用并行选项符合事实的

  • 通过设置异步并行训练代理ParallelizationOptions.Mode选项“异步”

  • 在每32步之后,每个工作人员根据经验计算梯度并将其发送给客户端。

  • AC代理要求工人发送“梯度”给客户。

  • AC代理需要“StepsUntilDataIsSent”等于agentOptions。NumStepsToLookAhead

trainOpts.UseParallel=true;trainOpts.ParallelizationOptions.Mode=“异步”;trainOpts.ParallelizationOptions.DataToSendFromWorkers=“梯度”; trainOpts.ParallelizationOptions.StepsUntilDataIsSent=32;

有关详细信息,请参阅RL培训选项

火车代理

使用火车作用训练代理是一个计算密集型过程,需要几分钟才能完成。要在运行此示例时节省时间,请通过设置doTraining.要亲自培训特工,请设置doTraining符合事实的. 由于异步并行训练中的随机性,您可以从以下训练图中预期不同的训练结果。图中显示了六名工人的培训结果。

doTraining=false;如果doTraining培训代理商。trainingStats=列车(代理人、环境、列车员);其他的%加载示例的预训练代理。负载(“MATLABCartpoleParAC.mat”“代理”);结束

模拟交流代理

在模拟过程中,可以使用“绘图”功能可视化推车杆系统。

地块(环境)

为了验证训练过的代理的性能,在车杆环境中模拟它。有关代理模拟的更多信息,请参见模拟选项sim卡

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

Figure Cart Pole Visualizer包含一个轴对象。轴对象包含6个类型为线、多边形的对象。

totalReward =总和(experience.Reward)
总报酬=500

参考文献

[1] Mnih、Volodymyr、AdriáPuigdomènech Badia、Mehdi Mirza、Alex Graves、Timothy P.Lillicrap、Tim Harley、David Silver和Koray Kavukcuoglu.“深度强化学习的异步方法”。ArXiv: 1602.01783 (Cs), 2016年6月16日。https://arxiv.org/abs/1602.01783

另请参阅

|

相关的例子

更多关于