主要内容

列车空调代理使用并行计算平衡Cart-Pole系统

这个例子展示了如何训练一个actor-critic (AC)代理来平衡cart-pole MATLAB®系统中建模通过使用异步并行训练。为例,展示了如何培养剂不使用并行训练,明白了培训交流代理Cart-Pole平衡系统

演员并行训练

当你使用并行计算与AC代理,每个工人产生经验的复制代理和环境。在每一个N步骤,工人从经验和计算梯度计算梯度发送回主机代理。主机代理更新它的参数如下。

  • 为异步训练,主机代理接收到的梯度而不必等待所有工人适用于发送梯度,并发送更新后的参数回的职工提供了梯度。然后,工人继续从它的环境使用更新后的参数生成的经验。

  • 同步训练,主机代理等待收到所有的工人和更新其梯度参数使用这些梯度。主机发送更新参数,所有的工人在同一时间。然后,所有工人继续使用更新后的参数生成的经验。

创造Cart-Pole MATLAB环境接口

创建一个预定义的环境界面cart-pole系统。这个环境的更多信息,请参阅负载预定义的控制系统环境

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

从环境中获得的观察和操作信息界面。

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

解决随机发生器再现性的种子。

rng (0)

创建交流代理

AC代理接近长期奖励,观察和操作,使用批评价值函数表示。创建评论家,首先创建一个深层神经网络与一个输入(观察)和一个输出(状态值)。评论家网络的输入大小4因为环境提供了观察。更多信息创建一个深层神经网络价值函数表示,看到的创建政策和价值函数表示

criticNetwork = [featureInputLayer (4“归一化”,“没有”,“名字”,“状态”)fullyConnectedLayer (32,“名字”,“CriticStateFC1”)reluLayer (“名字”,“CriticRelu1”)fullyConnectedLayer (1,“名字”,“CriticFC”));criticOpts = rlRepresentationOptions (“LearnRate”1飞行,“GradientThreshold”1);评论家= rlValueRepresentation (criticNetwork obsInfo,“观察”,{“状态”},criticOpts);

AC代理决定哪些操作,观察,使用一个演员表示。创建演员,创建一个深层神经网络与一个输入(观察)和一个输出(行动)。网络的输出大小演员是2自代理可以对环境施加2力值,-10年和10。

actorNetwork = [featureInputLayer (4“归一化”,“没有”,“名字”,“状态”)fullyConnectedLayer (32,“名字”,“ActorStateFC1”)reluLayer (“名字”,“ActorRelu1”)fullyConnectedLayer (2“名字”,“行动”));actorOpts = rlRepresentationOptions (“LearnRate”1飞行,“GradientThreshold”1);演员= rlStochasticActorRepresentation (actorNetwork obsInfo actInfo,“观察”,{“状态”},actorOpts);

创建交流代理,首先使用指定AC代理选项rlACAgentOptions

agentOpts = rlACAgentOptions (“NumStepsToLookAhead”32岁的“EntropyLossWeight”,0.01,“DiscountFactor”,0.99);

然后创建代理和代理选项使用指定的演员表示。有关更多信息,请参见rlACAgent

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

并行训练选项

培训代理商,首先指定培训选项。对于这个示例,使用以下选项。

  • 运行每个培训1000年集,每集持久的最多500年时间的步骤。

  • 在事件管理器对话框显示培训进展(设置情节在命令行选项)和禁用显示(设置详细的选项)。

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

trainOpts = rlTrainingOptions (“MaxEpisodes”,1000,“MaxStepsPerEpisode”,500,“详细”假的,“阴谋”,“训练进步”,“StopTrainingCriteria”,“AverageReward”,“StopTrainingValue”,500,“ScoreAveragingWindowLength”10);

你可以想象cart-pole系统可以在训练或仿真使用情节函数。

情节(env)

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

  • 设置UseParallel选项真正的

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

  • 每32个步骤之后,每个工人计算梯度从经验和送他们到主机。

  • AC代理要求工人发送”梯度”主机。

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

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

有关更多信息,请参见rlTrainingOptions

火车代理

火车代理使用火车函数。培训代理是一个计算密集型的过程需要几分钟才能完成。节省时间在运行这个例子中,加载一个pretrained代理设置doTraining。训练自己代理,集doTraining真正的。由于随机性的异步并行训练,你可以期待不同的培训结果如下图。情节显示了结果与六名工人的培训。

doTraining = false;如果doTraining%培训代理。trainingStats =火车(代理,env, trainOpts);其他的%加载pretrained代理的例子。负载(“MATLABCartpoleParAC.mat”,“代理”);结束

模拟交流代理

你可以想象情节cart-pole系统功能仿真。

情节(env)

验证培训代理的性能,模拟在cart-pole环境。代理模拟更多的信息,请参阅rlSimulationOptionssim卡

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

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

引用

[1]Mnih之上,阿德里亚Puigdomenech十二月,Mehdi殿下,亚历克斯坟墓,蒂莫西·p·Lillicrap大卫银、蒂姆•哈雷Koray Kavukcuoglu。“异步深强化学习方法”。ArXiv: 1602.01783 (Cs),2016年6月16日。https://arxiv.org/abs/1602.01783

另请参阅

|

相关的话题