主要内容

训练强化学习因子

创建了环境和强化学习代理之后,就可以使用火车函数。要配置你的训练,使用rlTrainingOptions函数。例如,创建一个训练选项集选择,和培训代理代理在环境env

选择= rlTrainingOptions (“MaxEpisodes”, 1000,“MaxStepsPerEpisode”, 1000,“StopTrainingCriteria”,“AverageReward”,“StopTrainingValue”, 480);trainStats =火车(代理,env,选择);

有关创建代理的更多信息,请参见强化学习代理。有关创建环境的更多信息,请参见创建用于强化学习的MATLAB环境为强化学习创建金宝appSimulink环境

火车随着培训的进行更新代理。要保留原始代理参数以供以后使用,请将代理保存到一个mat文件中。

保存(“initialAgent.mat”,“代理”)

属性中指定的条件自动终止培训StopTrainingCriteriaStopTrainingValue选择你的rlTrainingOptions对象感到满意。要手动终止正在进行的培训,输入Ctrl + C或者,在“强化学习集管理器”中,单击停止训练。因为火车每集更新代理,您可以通过电话恢复培训火车(代理,env, trainOpts)再一次,不丢失第一次呼叫时学到的训练参数火车

训练算法

一般来说,培训执行以下步骤。

  1. 初始化代理。

  2. 每集:

    1. 重置环境。

    2. 进行初步观察年代0从环境中。

    3. 计算初始动作一个0=μ(年代0),μ(年代)是现行政策。

    4. 将当前动作设置为初始动作(一个一个0),并将当前观测值设置为初始观测值(年代年代0)。

    5. 当情节未完成或终止时,执行以下步骤。

      1. 应用操作一个然后进行下一步的观察年代”和奖励r

      2. 从经验集中学习(年代,一个,r,年代)。

      3. 计算下一个动作一个“=μ(年代)。

      4. 用下一个动作更新当前动作(一个一个“),并将当前的观测资料更新为下一个观测资料(年代年代)。

      5. 如果满足环境中定义的终止条件,则终止插曲。

  3. 满足培训终止条件的,终止培训。否则,开始下一集。

软件如何执行这些步骤的细节取决于代理和环境的配置。例如,如果您将环境配置为这样做,那么在每个章节开始时重置环境可以包括随机初始状态值。有关代理及其训练算法的更多信息,请参见强化学习代理

事件管理器

默认情况下,调用火车功能打开强化学习集管理器,可以可视化训练进度。情节经理情节显示每个情节的奖励(EpisodeReward)和平均奖励值(AverageReward)。此外,对于那些有批评者的经纪人来说,情节显示了评论家在每一集开始时对长期回报的评估(EpisodeQ0)。节目管理器还显示各种节目和培训的统计数据。你也可以用火车返回剧集和培训信息的功能。

对于有评论家的特工来说,集Q0是根据对环境的初步观察,在每一集开始时对长期奖励的折扣估计。随着培训的进行,如果评论家设计得很好。集Q0接近真实的长期奖励折现,如上图所示。

要关闭强化学习集管理器,设置情节选择rlTrainingOptions“没有”

保存候选药物

在培训期间,您可以保存满足条件的候选代理SaveAgentCriteriaSaveAgentValue选择你的rlTrainingOptions对象。例如,您可以保存任何情节奖励超过某个值的代理,即使终止培训的总体条件还不满足。例如,当情节奖励大于One hundred.

选择= rlTrainingOptions (“SaveAgentCriteria”,“EpisodeReward”,“SaveAgentValue”, 100年);

火车控件将保存的代理存储在指定文件夹中的mat文件中SaveAgentDirectory选择rlTrainingOptions。保存的代理可能很有用,例如,用于测试在长时间运行的培训过程中生成的候选代理。保存条件和保存位置请参见rlTrainingOptions

训练完成后,可以从MATLAB中保存最终的训练agent®工作空间使用保存函数。例如,保存代理myAgent到文件finalAgent.mat在当前工作目录中。

保存(选择。SaveAgentDirectory +“/ finalAgent.mat”,“代理”)

缺省情况下,保存DDPG和DQN座席时,不保存体验缓冲区数据。如果您计划进一步培训您保存的代理,您可以从以前的经验缓冲开始培训。在这种情况下,设置SaveExperienceBufferWithAgent选项真正的。对于一些agent来说,例如具有较大的经验缓冲区和基于图像的观察的agent,保存经验缓冲区所需的内存很大。在这些情况下,您必须确保为保存的代理提供足够的内存。

并行计算

您可以通过运行并行训练模拟来加速特工训练。如果您有并行计算工具箱™软件,您可以在多核计算机上运行并行模拟。如果你有MATLAB并行服务器™软件,您可以在计算机集群或云资源上运行并行模拟。

当您使用并行计算训练代理时,主机客户机将向每个并行工作器发送代理和环境的副本。每个worker模拟环境中的代理,并将它们的模拟数据发送回主机。主机代理从工人发送的数据中学习,并将更新后的策略参数发送回工人。

要创建一个并行池Nworkers,使用下面的语法。

池= parpool (N);

如果您没有使用parpool(并行计算工具箱),火车函数使用默认的并行池首选项自动创建一个。有关指定这些首选项的更多信息,请参见指定并行首选项(并行计算工具箱)

对于非策略代理,例如DDPG和DQN代理,不要将所有核心用于并行培训。例如,如果你的CPU有六个核,那就用四个工人来训练。这样做可以为主机客户机提供更多的资源,以便根据从工作人员发回的经验计算梯度。当对工人计算梯度时,限制工人的数量对于政策代理来说是不必要的,例如PG和AC代理。

有关配置使用并行计算的培训的更多信息,请参见UseParallelParallelizationOptions选项rlTrainingOptions

为了从并行计算中获益,模拟环境的计算成本与将经验发送回主机时优化参数的成本相比必须相对昂贵。如果对环境的模拟不够昂贵,工作人员就会空闲,等待主机学习并发回更新后的参数。

当从工人那里发送经验时,当比率(R)的环境步长复杂度对学习复杂度的影响较大。如果环境可以快速模拟(R),您不太可能从基于经验的并行化中获得任何好处。如果环境的模拟成本很高,但学习成本也很高(例如,如果小批的规模很大),那么您也不太可能提高样本效率。但是,在这种情况下,对于非策略代理,您可以减少要生成的小批大小R更大,提高了样品效率。

有关在MATLAB中使用并行计算训练代理的示例,请参阅用并行计算训练AC代理平衡车-杆系统。举一个在Simulink中使用并行计算训练代理的例子金宝app®,请参阅训练DQN代理使用并行计算进行车道保持辅助

GPU加速

当为actor或critical表示使用深度神经网络函数近似器时,您可以通过在GPU上执行表示操作来加速训练,而不是在CPU上。为此,设置UseDevice选项“图形”

选择= rlRepresentationOptions (“UseDevice”,“图形”);

任何性能改进的大小取决于特定的应用程序和网络配置。

验证培训政策

要验证训练过的代理,可以使用sim卡函数。要配置模拟,请使用rlSimulationOptions

在验证代理时,请考虑检查代理如何处理以下情况:

与并行训练一样,如果您有并行计算工具箱软件,您可以在多核计算机上运行多个并行模拟。如果你有MATLAB并行服务器软件,您可以在计算机集群或云资源上运行多个并行模拟。有关配置模拟以使用并行计算的详细信息,请参阅UseParallelParallelizationOptionsrlSimulationOptions

环境可视化

如果您的培训环境实现了情节方法,您可以在训练和模拟过程中可视化环境行为。如果你叫情节(env)训练或模拟之前,在哪里env是您的环境对象,然后可视化在训练期间更新,以允许您可视化每个情节或模拟的进展。

在使用并行计算训练或模拟代理时,不支持环境可视化。金宝app

对于自定义环境,必须实现自己的环境情节方法。有关使用的自定义环境的更多信息情节功能,请参阅创建自定义的MATLAB环境从模板

另请参阅

相关的话题