创建了一个环境和强化学习代理后,您可以使用该环境和强化学习代理训练
函数。要配置培训,请使用rlTrainingOptions
函数。例如,创建培训选项集选择
,以及火车代理人代理人
在环境中env
.
选择= rlTrainingOptions (......“MaxEpisodes”, 1000,......'maxstepperepisode', 1000,......'stoptrinaincriteria'那“AverageReward”那......“StopTrainingValue”, 480);trainStats =火车(代理,env,选择);
有关创建代理商的更多信息,请参阅强化学习代理.有关创建环境的更多信息,请参见为加强学习创建Matlab环境和创建强化学习的万博1manbetxSimulink环境.
训练
随着培训的进行,更新代理。为了保存原始代理参数供以后使用,请将代理保存到mat -文件中。
保存(“italitagent.mat”那“代理人”)
中指定的条件将自动终止培训stoptrinatreaincriteria.
和stoptriningvalue.
您的选择rlTrainingOptions
对象满意。手动终止正在进行的培训,类型Ctrl + C.或者,在钢筋学习集团管理器中,单击停止训练.因为训练
在每个集中更新代理,您可以通过呼叫恢复培训火车(代理,env, trainOpts)
同样,在不丢失第一次调用时学到的训练参数的情况下训练
.
一般来说,培训执行以下步骤。
初始化代理。
对于每一次集:
重置环境。
获得初始观察S.0.从环境中。
计算初始动作A.0.=μ.(S.0.),在那里μ.(S.)是现行政策。
将当前操作设置为初始操作(A.←A.0.),并将当前观察设置为初始观察(S.←S.0.).
当情节尚未结束或终止时,请执行以下步骤。
申请行动A.对环境并获得下一个观察S''和奖励R..
从经验中学习(S.那A.那R.那S').
计算下一个动作A'=μ.(S').
使用下一个操作更新当前操作(A.←A')通过下次观察更新当前观察(S.←S').
如果满足环境中定义的终止条件,则终止该集。
如果满足培训终止条件,终止培训。否则,就开始下一集。
软件如何执行这些步骤的细节取决于代理和环境的配置。例如,在每一集的开始重置环境可以包括随机初始状态值,如果您配置您的环境这样做。有关代理及其训练算法的更多信息,请参见强化学习代理.
默认情况下,调用训练
函数打开Reinforcement Learning Episode Manager,它让您可视化培训进度。“剧集经理”情节显示了每一集的奖励(EpisodeReward)和运行平均奖励价值(平均).同样,对于有评论家的特工,情节显示了评论家在每一集开始时对折扣长期报酬的估计(EpisodeQ0).Episode Manager还显示各种剧集和培训统计信息。你也可以使用训练
返回剧集和培训信息的功能。
对于批评者的代理商,第六章是在给定初始环境观察的情况下,每一事件开始时对贴现长期回报的估计。随着培训的进行,如果评论家是精心设计的。第六章接近真实的贴现长期回报,如上图所示。
要关闭钢筋学习剧集管理器,请设置情节
选择rlTrainingOptions
到目前为止“没有”
.
在培训期间,您可以保存满足您在SaveAgentCriteria
和SaveAgentValue.
您的选择rlTrainingOptions
对象。例如,即使尚未满足终止培训的整体条件,您还可以保存剧集奖励超出某个值的任何代理。例如,当剧集奖励大于时,保存代理100.
.
选择= rlTrainingOptions (“SaveAgentCriteria”那“EpisodeReward”那'SaveagentValue', 100年);
训练
将已保存的代理存储在指定的文件夹中的mat -文件中SaveAgentDirectory
选择rlTrainingOptions
.例如,已保存的代理可以有用,以测试在长期运行培训过程中生成的候选代理。有关保存标准和保存位置的详细信息,请参阅rlTrainingOptions
.
培训完成后,您可以从MATLAB中保存最终培训的代理®工作区使用保存
函数。例如,保存代理myAgent
到文件FinalAgent.mat.
在当前的工作目录中。
保存(opt.SaveAgentDirectory +“/finalagent.mat”那“代理”)
默认情况下,保存DDPG和DQN代理时,不会保存体验缓冲区数据。如果您计划进一步列出已保存的代理,您可以使用以前的经验缓冲区作为起点开始培训。在这种情况下,设置SaveExperienceBufferWithAgent
选择真实
.对于某些代理,例如具有大经验缓冲区和基于图像的观察的代理,节省体验缓冲区所需的内存很大。在这些情况下,您必须确保已保存的代理商可用的内存足够。
您可以通过运行并行培训模拟来加速代理培训。如果您有并行计算工具箱™软件,则可以在多核计算机上运行并行模拟。如果你有MATLAB并行服务器™软件,您可以在计算机集群或云资源上运行并行模拟。
使用并行计算的培训代理时,主机客户端将代理和环境的副本发送给每个并行工作者。每个工人在环境中模拟代理,并将其模拟数据发送回主机。主机代理从工人发送的数据中学习,并将更新的策略参数发送回工人。
创建一个平行的池N
Workers,请使用以下语法。
池= parpool(n);
如果您没有使用并行池使用parpool.
(并行计算工具箱),这训练
函数使用默认并行池首选项自动创建一个。有关指定这些偏好的更多信息,请参阅指定并行首选项(并行计算工具箱).
对于DDPG和DQN代理等违规代理,请勿使用所有核心以进行并行培训。例如,如果您的CPU有六个核心,用四名工人列车。这样做为主机客户提供更多资源,以根据从工人发送的经验计算渐变。限制工作人员的数量是在工人上计算梯度时的政策代理(如PG和AC代理)。
有关配置培训使用并行计算的更多信息,请参阅UseParallel
和并行化选项
选项rlTrainingOptions
.
为了从并行计算中受益,模拟环境的计算成本必须比向主机发送体验时的参数优化相对昂贵。如果模拟环境的开销不够大,工人就会在等待主机学习并发回更新后的参数时闲置。
当从工人那里发回经验时,当比率(R.)环境步骤对学习复杂性的复杂性很大。如果环境快速模拟(R.很小),您不太可能从基于体验的并行化获得任何益处。如果环境昂贵而模拟,但它也是昂贵的学习(例如,如果迷你批次大小很大),那么您也不太可能提高样本效率。但是,在这种情况下,对于违规代理商,您可以减少迷你批量尺寸R.更大,提高了样品效率。
有关使用Patlab中使用并行计算的代理的示例,请参阅火车AC代理商使用并行计算平衡车杆系统.下面是一个在Simulink中使用并行计算训练代理的示例万博1manbetx®,看看使用并行计算的车道保持辅助列车DQN代理.
当使用深度神经网络函数近似器为演员或评论家表示时,您可以通过在GPU而不是CPU上执行表示操作来加速训练。为此,设置UseDevice
选择“GPU”
.
opt = rlrepresentationOptions(“UseDevice”那“GPU”);
任何性能改进的大小取决于您的特定应用程序和网络配置。
要验证培训的代理,您可以使用培训环境中的代理商使用SIM
函数。要配置模拟,请使用RlsimulationOptions.
.
验证代理时,请考虑检查代理如何处理以下情况:
仿真初始条件的更改 - 要更改模型初始条件,请修改环境的重置功能。例如,重置函数,请参阅使用自定义函数创建MATLAB环境那从模板创建自定义MATLAB环境,和创建强化学习的万博1manbetxSimulink环境.
训练和模拟环境动态之间的不匹配——为了检查这种不匹配,以创建训练环境的相同方式创建测试环境,修改环境行为。
与并行培训一样,如果您有并行计算工具箱软件,则可以在多核计算机上运行多个并行模拟。如果你有MATLAB并行服务器软件,您可以在计算机集群或云资源上运行多个并行模拟。有关配置模拟以使用并行计算的详细信息,请参阅UseParallel
和并行化选项
在RlsimulationOptions.
.
如果您的培训环境实施情节
方法,您可以在培训和仿真期间可视化环境行为。如果你打电话情节(env)
在培训或模拟之前,在哪里env
是您的环境对象,然后是培训期间的可视化更新,允许您可视化每个剧集或模拟的进度。
使用并行计算培训或模拟代理时不支持环境可视化。万博1manbetx
对于自定义环境,您必须实现自己的环境情节
方法。有关创建自定义环境的更多信息情节
功能,请参阅从模板创建自定义MATLAB环境.