主要内容

用并行计算训练AC-Agent平衡车杆系统

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

演员平行训练

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

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

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

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

创建MATLAB环境接口

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

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

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

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

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

rng(0)

创建AC代理

AC智能体使用临界值函数表示,在给定观察和行动的情况下,近似长期奖励。要创建临界值,首先创建一个具有一个输入(观察)和一个输出(状态值)的深度神经网络。由于环境提供4个观测值,因此批评家网络的输入大小为4。有关创建深度神经网络值函数表示的更多信息,请参阅创建策略和值函数表示.

关键网络=[featureInputLayer(4,“正常化”,“没有”,“姓名”,“国家”)完全连接层(32,“姓名”,“CriticStateFC1”)雷卢耶(“姓名”,“CriticRelu1”)完全连接层(1,“姓名”,“临界CFC”)]; criticOpts=rlRepresentationOptions(“LearnRate”,1e-2,“梯度阈值”,1); critic=rlValueRepresentation(关键网络、obsInfo、,“观察”,{“国家”},批判者);

AC代理根据给定的观察结果,使用参与者表示来决定采取何种行动。要创建参与者,请创建一个具有一个输入(观察)和一个输出(行动)的深度神经网络。参与者网络的输出大小为2,因为代理可以向环境应用2个力值–10和10。

actorNetwork=[featureInputLayer(4,“正常化”,“没有”,“姓名”,“国家”)完全连接层(32,“姓名”,“ActorStateFC1”)雷卢耶(“姓名”,“ActorRelu1”)完全连接层(2,“姓名”,“行动”)]; actorOpts=rlRepresentationOptions(“LearnRate”,1e-2,“梯度阈值”,1); actor=rl随机性actor表示(actorNetwork、obsInfo、actInfo、,...“观察”,{“国家”},actorOpts);

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

agentOpts=rlACAgentOptions(...“NumStepsToLookAhead”,32,...“无熵重量”,0.01,...“折扣演员”,0.99);

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

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

并行培训选项

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

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

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

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

培训选项=RL培训选项(...“最大集”,1000,...“MaxStepsPerEpisode”, 500,...“冗长”错误的...“情节”,“培训进度”,...“停止培训标准”,“平均向上”,...“停止训练值”,500,...“ScoreAveragingWindowLength”,10);

您可以在训练或模拟期间使用情节作用

地块(环境)

Figure Cart Pole可视化工具包含一个Axis对象。Axis对象包含6个类型为line、polygon的对象。

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

  • 设定使用并行选择符合事实的.

  • 通过设置ParallelizationOptions.Mode选择“异步”.

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

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

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

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

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

列车员

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

doTraining=false;如果溺爱%培训代理人。trainingStats=列车(代理人、环境、列车员);其他的%加载示例的预训练代理。装载(“MATLABCartpoleParAC.mat”,“代理人”);终止

模拟交流代理

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

地块(环境)

要验证经过培训的代理的性能,请在cart-pole环境中对其进行模拟。有关代理模拟的更多信息,请参阅模拟选项模拟.

simOptions=rlSimulationOptions(“MaxSteps”,500);经验=sim(环境、代理、sim选项);

Figure Cart Pole可视化工具包含一个Axis对象。Axis对象包含6个类型为line、polygon的对象。

totalReward=总和(经验奖励)
总报酬=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.

另见

|

相关实例

更多关于