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