主要内容

火车AC代理商使用并行计算平衡车杆系统

这个例子展示了如何使用异步并行训练训练一个行动者-评论家(AC)代理平衡一个在MATLAB®中建模的车杆系统。有关如何在不使用并行训练的情况下训练代理的示例,请参见训练空调代理人平衡车杆系统

演员并行训练

使用与AC代理的并行计算时,每个工作人员从其代理和环境的副本生成体验。毕竟N步骤,工人从体验中计算渐变,并将计算的渐变返回给客户端代理(与启动训练的Matlab®进程关联的代理)。客户端代理如下更新其参数。

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

  • 对于同步培训,客户端代理等待接收来自所有工人的渐变并使用这些渐变更新其参数。然后,客户端同时向所有工人发送更新的参数。然后,所有工人继续使用更新的参数生成经验。

有关同步与异步并行化的更多信息,请参阅使用并行计算和gpu的列车代理

创建购物车MATLAB环境界面

为车杆系统创建一个预定义的环境接口。有关此环境的更多信息,请参见负载预定义控制系统环境

Env = Rlpredefinedenv(“CartPole-Discrete”);env。PenaltyForFalling = -10;

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

ObsInfo = GetobservationInfo(ENV);numobservations = Obsinfo.dimension(1);Actinfo = GetActionInfo(Env);

修复随机生成器种子的再现性。

RNG(0)

创建AC代理

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

批评= [featureInputLayer(4,“归一化”'没有任何''姓名'“状态”)全连接列(32,'姓名'“CriticStateFC1”)剥离('姓名'“CriticRelu1”)全康连接层(1,'姓名''批评'));criticOpts = rlRepresentationOptions ('学习',1e-2,“GradientThreshold”1);评论家= rlValueRepresentation (criticNetwork obsInfo,'观察', {“状态”}, criticOpts);

AC代理商决定使用演员代表的观察到进行哪些行动。要创建演员,请创建一个具有一个输入(观察)和一个输出(动作)的深神经网络。Actor网络的输出大小为2,因为代理可以将2力值应用于环境,-10和10。

[featureInputLayer(4,“归一化”'没有任何''姓名'“状态”)全连接列(32,'姓名''ActorstateFC1')剥离('姓名'“ActorRelu1”)全连接列(2,'姓名''行动'));actorOpts = rlRepresentationOptions ('学习',1e-2,“GradientThreshold”1);演员= rlStochasticActorRepresentation (actorNetwork obsInfo actInfo,......'观察', {“状态”},actoropts);

要创建AC代理,请先使用AC代理选项指定使用rlACAgentOptions

代理= rlacagentoptions(......“NumStepsToLookAhead”,32,......'entropylossweight', 0.01,......“DiscountFactor”,0.99);

然后使用指定的参与者表示和代理选项创建代理。有关更多信息,请参见rlacagent.

代理= rlacagent(演员,批评者,代理商);

并行培训选项

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

  • 每次训练最多跑一次1000剧集,每一集最多持久500.时间步骤。

  • 在Episode Manager对话框中显示培训进度(设置绘图选项),并禁用命令行显示(设置详细的选项)。

  • 停止训练时,代理收到的平均累积奖励大于500.超过10.连续集。在这一点上,代理可以平衡摆在直立的位置。

训练= rltrainingOptions(......“MaxEpisodes”,1000,......“MaxStepsPerEpisode”, 500,......“详细”假的,......'plots''培训 - 进步'......'stoptrinaincriteria'“AverageReward”......“StopTrainingValue”,500,......'scoreaveragingwindowlength'10);

您可以可视化的车杆系统可以在训练或模拟使用阴谋函数。

情节(env)

图车杆视觉器包含轴对象。轴对象包含6个类型的类型线,多边形。

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

  • 设定UseParallel选项真正的

  • 通过设置培训代理ParallelizationOptions。模式选项“异步”

  • 经过每32个步骤后,每个工人从体验中计算渐变并将它们发送到客户端。

  • AC代理需要工人发送“渐变“给客户端。

  • AC代理要求“StepsUntilDataIsSent”等于AgentOptions.NumStepStolookahead.

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

有关更多信息,请参见rlTrainingOptions

火车代理

训练代理人使用火车函数。训练代理是一个计算密集型的过程,需要几分钟才能完成。为了节省运行此示例的时间,请通过设置加载预先训练过的代理用圆形错误的.自己训练代理人,设置用圆形真正的.由于异步并行训练的随机性,您可以从下面的训练图中期待不同的训练结果。这张图显示了训练六名工人的结果。

doTraining = false;如果用圆形%训练代理人。trainingStats =火车(代理,env, trainOpts);其他的%加载示例的预训练代理。加载('matlabcartpoleplac.mat''代理人');结尾

模拟交流代理

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

情节(env)

要验证培训的代理的性能,请在推车杆环境中模拟它。有关代理模拟的更多信息,请参阅rlSimulationOptionsSIM

simOptions = rlSimulationOptions (“MaxSteps”,500);体验= SIM(ENV,Agent,SimOptions);

图车杆视觉器包含轴对象。轴对象包含6个类型的类型线,多边形。

TotalReward = Sum(经验.Rward)
totalReward = 500

参考文献

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

也可以看看

|

相关例子

更多关于