列车空调代理使用并行计算平衡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环境。代理模拟更多的信息,请参阅rlSimulationOptions
和sim卡
。
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。