训练强化学习代理
创建了环境和强化学习代理之后,就可以在环境中使用火车
函数。要配置培训,请使用rlTrainingOptions
函数。例如,创建一个训练选项集选择
,以及火车代理商代理
在环境env
.
选择= rlTrainingOptions (...“MaxEpisodes”, 1000,...“MaxStepsPerEpisode”, 1000,...“StopTrainingCriteria”,“AverageReward”,...“StopTrainingValue”, 480);trainResults =火车(代理,env,选择);
如果env
是否创建了多代理环境rlSimulinkEnv
,将代理参数指定为数组。数组中代理的顺序必须与用于创建的代理顺序匹配env
.MATLAB不支持多智能体训练®环境。
有关创建代理的更多信息,请参见强化学习代理.有关创建环境的更多信息,请参见创建MATLAB强化学习环境而且创建Simulink强化学习环境.
请注意
火车
随着训练的进行,更新代理。这是可能的,因为每个代理都是一个句柄对象。为了保留原始的代理参数供以后使用,请将代理保存到一个mat文件中:
保存(“initialAgent.mat”,“代理”)
控件中指定的条件满足时,训练将自动终止StopTrainingCriteria
而且StopTrainingValue
选择你的rlTrainingOptions
对象感到满意。您也可以通过单击,在达到任何终止条件之前终止培训停止训练在强化学习事件管理器中。
当训练终止时,训练统计数据和结果将存储在trainResults
对象。
因为火车
每集结束时更新特工,因为trainResults
存储最后的训练结果,以及正确地重新创建训练场景和更新插曲管理器的数据,您可以稍后从它停止的确切点恢复训练。为此,在命令行中输入:
trainResults =火车(代理,env, trainResults);
火车
调用。
的trainResults
对象包含作为其属性之一的rlTrainingOptions
对象选择
指定培训选项集。因此,要用更新的训练选项重新启动训练,首先要更改中的训练选项trainResults
使用点符号。如果在上一个培训会话中已经达到了最大集数,则必须增加最大集数。
例如,禁用在剧集管理器上显示训练进度,启用详细的
选项在命令行显示训练进度,将最大集数更改为2000,然后重新启动训练,返回一个新的trainResults
对象作为输出。
trainResults.TrainingOptions.MaxEpisodes = 2000;trainResults.TrainingOptions.Plots =“没有”;trainResults.TrainingOptions.Verbose = 1;trainResultsNew =火车(代理,env, trainResults);
请注意
培训结束时,代理
反映每个特工在最后训练集结束时的状态。最终代理商在培训过程中获得的回报不一定是最高的,因为不断的探索。若要在训练期间保存代理,请创建rlTrainingOptions
对象指定SaveAgentCriteria而且SaveAgentValue属性并将其传递给火车
作为一个trainOpts
论点。
训练算法
一般来说,培训执行以下步骤。
初始化代理。
每集:
重置环境。
初步观察年代0从环境中。
计算初始动作一个0=μ(年代0),μ(年代)为当前政策。
将当前操作设置为初始操作(一个←一个0),将当前观测值设置为初始观测值(年代←年代0).
当插曲没有结束或终止时,执行以下步骤。
应用操作一个对环境和获得下一步的观察年代”和奖励r.
从经验集中学习(年代,一个,r,年代).
计算下一个动作一个“=μ(年代).
用下一个操作更新当前操作(一个←一个“),并用下一个观测值更新当前观测值(年代←年代).
如果满足环境中定义的终止条件,则终止事件。
如果满足培训终止条件,则终止培训。否则,就开始下一集。
软件如何执行这些步骤的细节取决于代理和环境的配置。例如,在每集开始时重置环境可以包括随机初始状态值,如果您将环境配置为这样做的话。有关代理及其训练算法的更多信息,请参见强化学习代理.要使用并行处理和gpu加速训练,请参见使用并行计算和图形处理器训练代理.
事件管理器
默认情况下,调用火车
功能打开强化学习事件管理器,它可以让你可视化训练进度。
情节管理器图显示每一集的奖励(EpisodeReward)及持续平均奖赏值(AverageReward).
对于有评论家的探员,集Q0是对每一集开始时的贴现长期奖励的估计,前提是对环境的初始观察。随着训练的进行,如果批评家设计得很好并且学习成功,集Q0方法在平均的真实折扣长期回报,这可能抵消EpisodeReward价值因为贴现。对于一个设计良好的评论家使用未折现奖励(DiscountFactor
等于1
),然后平均集Q0接近真实的剧情奖励,如上图所示。
章节管理器还显示各种章节和训练统计数据。你也可以使用火车
函数返回集和训练信息。若要关闭强化学习插曲管理器,请设置情节
选择rlTrainingOptions
来“没有”
.
保存候选药物
类中指定的条件,可以保存这些条件的候选代理SaveAgentCriteria
而且SaveAgentValue
选择你的rlTrainingOptions
对象。例如,即使终止训练的总体条件还不满足,您也可以保存任何一个剧集奖励超过一定值的代理。例如,当情节奖励大于One hundred.
.
选择= rlTrainingOptions (“SaveAgentCriteria”,“EpisodeReward”,“SaveAgentValue”, 100年);
火车
方法将保存的代理存储在mat文件中的文件夹中SaveAgentDirectory
选择rlTrainingOptions
.保存的代理可以用于测试在长时间运行的培训过程中生成的候选代理。具体保存条件和保存位置请参见rlTrainingOptions
.
训练完成后,您可以使用保存
函数。例如,保存代理myAgent
到文件finalAgent.mat
在当前工作目录中。
保存(选择。SaveAgentDirectory +“/ finalAgent.mat”,“代理”)
缺省情况下,在保存DDPG和DQN座席时,不保存经验缓冲区数据。如果计划进一步训练所保存的代理,可以以以前的经验缓冲区作为起点开始训练。在本例中,设置SaveExperienceBufferWithAgent
选项真正的
.对于一些代理,例如那些拥有大量经验缓冲区和基于图像的观察的代理,保存经验缓冲区所需的内存是很大的。在这些情况下,必须确保保存的代理有足够的内存可用。
验证培训政策
方法来验证训练过的代理,可以在训练环境中模拟该代理sim卡
函数。若要配置模拟,请使用rlSimulationOptions
.
在验证您的代理时,请考虑检查您的代理如何处理以下内容:
更改模拟初始条件——要更改模型初始条件,请修改环境的reset函数。例如重置函数,请参见使用自定义函数创建MATLAB环境,从模板创建自定义MATLAB环境,创建Simulink强化学习环境.
训练和模拟环境动态之间的不匹配——要检查这种不匹配,请以创建训练环境的相同方式创建测试环境,修改环境行为。
与并行训练一样,如果您有并行计算工具箱™软件,就可以在多核计算机上运行多个并行模拟。如果你有MATLAB并行服务器™软件方面,您可以在计算机集群或云资源上运行多个并行模拟。有关配置模拟以使用并行计算的更多信息,请参见UseParallel
而且ParallelizationOptions
在rlSimulationOptions
.
环境可视化
如果您的培训环境实现了情节
方法,您可以在训练和模拟过程中可视化环境行为。如果你叫情节(env)
在训练或模拟之前,其中env
是您的环境对象,则在训练期间进行可视化更新,以允许您可视化每一集或模拟的进展。
在使用并行计算训练或模拟代理时,不支持环境可视化。
对于自定义环境,必须实现自己的环境情节
方法。有关使用类创建自定义环境的详细信息情节
功能,请参阅从模板创建自定义MATLAB环境.