列车空调代理使用并行计算平衡Cart-Pole系统
这个例子展示了如何训练一个actor-critic (AC)代理来平衡cart-pole MATLAB®系统中建模通过使用异步并行训练。为例,展示了如何培养剂不使用并行训练,明白了培训交流代理Cart-Pole平衡系统。
演员并行训练
当你使用并行计算与AC代理,每个工人产生经验的复制代理和环境。在每一个N
步骤,工人从经验和计算梯度计算梯度发送回客户端代理(代理与MATLAB®相关流程开始训练)。客户平均梯度,更新网络参数并发送更新后的参数回工人他们可以继续模拟代理与新参数。
这种类型的基于并行训练也被称为梯度并行化,并允许您实现,原则上,速度提高近线性数量的工人。然而,这个选项需要同步训练(即模式
财产的rlTrainingOptions
对象传递给火车必须设置为函数同步
)。这意味着员工必须暂停执行,直到所有的工人都完成了,结果只训练进步速度是最慢的工人允许。
关于同步与异步并行化的更多信息,请参阅培训代理商使用并行计算和gpu。
创造Cart-Pole MATLAB环境接口
创建一个预定义的环境界面cart-pole系统。这个环境的更多信息,请参阅负载预定义的控制系统环境。
env = rlPredefinedEnv (“CartPole-Discrete”);env。PenaltyForFalling = -10;
从环境中获得的观察和操作信息界面。
obsInfo = getObservationInfo (env);numObservations = obsInfo.Dimension (1);actInfo = getActionInfo (env);
解决随机发生器再现性的种子。
rng (0)
创建交流代理
Actor-critic代理使用一个参数化的值函数近似者估计价值的政策。值函数批评以当前观测作为输入并返回一个标量输出(估计折扣累积长期奖励政策后的状态对应于当前观察)。
在评论家,模型参数化的值函数使用一个输入神经网络层(接收观测通道的内容,按照奥林匹克广播服务公司信息
)和一个输出层(返回标量值)。请注意,刺激(obsInfo.Dimension)
返回总数的维度观察空间无论观察空间是一个列向量,行向量或矩阵。
层的网络定义为一个数组对象。
criticNetwork = [featureInputLayer (prod (obsInfo.Dimension)) fullyConnectedLayer (32) reluLayer fullyConnectedLayer (1)];
创造的价值函数近似者对象使用criticNetwork
和观测规范和环境的行动。
评论家= rlValueFunction (criticNetwork obsInfo);
Actor-critic代理使用参数化随机策略,对离散行动空间由一个离散实现分类的演员。这演员需要一个观察作为输入并返回输出随机行动采样(在有限数量的可能的行动)从分类概率分布。
模型中的参数化政策的演员,使用一个输入神经网络层(接收环境观察频道的内容,规定obsInfo
)和一个输出层。输出层必须返回一个向量的概率为每个可能的行动,是指定的actInfo
。请注意,元素个数(actInfo.Dimension)
返回的元素数量的离散动作空间。
层的网络定义为一个数组对象。
actorNetwork = [featureInputLayer (prod (obsInfo.Dimension)) fullyConnectedLayer (32) reluLayer fullyConnectedLayer(元素个数(actInfo.Dimension)));
创建角色接近者对象使用actorNetwork
和观测规范和环境的行动。
演员= rlDiscreteCategoricalActor (actorNetwork obsInfo actInfo);
有关创建接近者对象的更多信息,如演员和评论家,明白了创建政策和价值功能。
使用指定选项的批评家和演员rlOptimizerOptions
。
criticOpts = rlOptimizerOptions (LearnRate = 1飞行,GradientThreshold = 1);actorOpts = rlOptimizerOptions (LearnRate = 1飞行,GradientThreshold = 1);
使用指定AC代理选项rlACAgentOptions
的训练选项,包括演员和评论家。
agentOpts = rlACAgentOptions (…ActorOptimizerOptions = actorOpts,…CriticOptimizerOptions = criticOpts,…EntropyLossWeight = 0.01);
使用指定的演员表示创建代理和代理的选择。有关更多信息,请参见rlACAgent
。
代理= rlACAgent(演员、评论家、agentOpts);
并行训练选项
培训代理商,首先指定培训选项。对于这个示例,使用以下选项。
运行每个培训
1000年
集,每集持久的最多500年
时间的步骤。在事件管理器对话框显示培训进展(设置
情节
在命令行选项)和禁用显示(设置详细的
选项)。停止训练当代理接收到平均累积奖励大于
500年
在10
连续集。在这一点上,代理可以平衡钟摆在直立位置。
trainOpts = rlTrainingOptions (…MaxEpisodes = 1000,…MaxStepsPerEpisode = 500,…Verbose = false,…情节=“训练进步”,…StopTrainingCriteria =“AverageReward”,…StopTrainingValue = 500,…ScoreAveragingWindowLength = 10);
你可以想象cart-pole系统可以在训练或仿真使用情节
函数。
情节(env)
培训代理使用并行计算,指定以下培训选项。
设置
UseParallel
选项真正的
。火车通过设置异步并行代理
ParallelizationOptions.Mode
选项“异步”
。
trainOpts。UseParallel = true;trainOpts.ParallelizationOptions。模式=“异步”;
有关更多信息,请参见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。