主要内容

rlTrainingOptions

训练强化学习代理的选项

描述

使用一个rlTrainingOptions对象指定座席的培训选项。训练一个特工,使用火车

有关培训代理的更多信息,请参见训练强化学习代理

创建

描述

trainOpts= rlTrainingOptions返回用于训练强化学习代理的默认选项。使用训练选项为训练会话指定参数,例如要训练的最大集数、停止训练的标准、保存代理的标准以及使用并行计算的选项。配置完成后,请使用trainOpts的输入参数火车

例子

选择= rlTrainingOptions (名称,值创建一个训练选项集并设置对象属性使用一个或多个名称-值对参数。

属性

全部展开

训练代理的最大集数,指定为正整数。不论终止的其他标准如何,培训在MaxEpisodes

例子:“MaxEpisodes”,1000年

每集运行的最大步数,指定为正整数。通常,您可以在环境中定义插曲终止条件。此值是在不满足其他终止条件的情况下在该集中运行的最大步数。

例子:“MaxStepsPerEpisode”,1000年

用于平均每个代理的分数、奖励和步数的窗口长度,指定为标量或向量。

如果培训环境包含单个代理,请指定ScoreAveragingWindowLength作为一个标量。

如果训练环境是一个多agent的Simulink万博1manbetx®环境中,指定一个标量将相同的窗口长度应用于所有代理。

若要为每个代理使用不同的窗口长度,请指定ScoreAveragingWindowLength作为一个向量。在这种情况下,向量中元素的顺序对应于环境创建期间使用的代理的顺序。

对于以平均值表示的期权,ScoreAveragingWindowLength是包含在平均值中的集数。例如,如果StopTrainingCriteria“AverageReward”,StopTrainingValue500对于给定的智能体,那么对于该智能体,当平均奖励超过中指定的集数时,训练结束ScoreAveragingWindowLength等于或超过500.对于其他特工,培训持续到:

  • 所有代理都达到了停止标准。

  • 集数达到MaxEpisodes

  • 单击停止训练停止训练按钮或按下ctrl - c在MATLAB中®命令行。

例子:“ScoreAveragingWindowLength”,10

培训终止条件,指定为以下字符串之一:

  • “AverageSteps”-当每集跑步平均步数等于或超过选项指定的临界值时停止训练StopTrainingValue.平均值是通过窗口计算的“ScoreAveragingWindowLength”

  • “AverageReward”-当跑步平均奖励等于或超过临界值时停止训练。

  • “EpisodeReward”-当当前章节奖励等于或超过临界值时停止训练。

  • “GlobalStepCount”—当所有章节的总步数(代理调用的总次数)等于或超过临界值时,停止训练。

  • “EpisodeCount”—当训练次数大于或等于临界值时,停止训练。

例子:“StopTrainingCriteria”、“AverageReward”

训练终止条件的临界值,指定为标量或向量。

如果培训环境包含单个代理,请指定StopTrainingValue作为一个标量。

如果训练环境是一个多代理的Simulink环境,请指定一个标量,以便对所有代理应用相同的终万博1manbetx止条件。若要为每个代理使用不同的终止条件,请指定StopTrainingValue作为一个向量。在这种情况下,向量中元素的顺序对应于环境创建期间使用的代理的顺序。

类指定的终止条件时,训练结束StopTrainingCriteria选项等于或超过此值。对于其他特工,培训将持续到:

  • 所有代理都达到了停止标准。

  • 集数达到maxEpisodes

  • 单击停止训练停止训练按钮或按下ctrl - c在MATLAB命令行。

例如,如果StopTrainingCriteria“AverageReward”,StopTrainingValueOne hundred.对于给定的智能体,那么对于该智能体,当平均奖励超过中指定的集数时,训练结束ScoreAveragingWindowLength等于或超过One hundred.

例子:“StopTrainingValue”,100年

培训期间保存代理的条件,指定为以下字符串之一:

  • “没有”训练过程中不要保存任何特工。

  • “EpisodeReward”-当当前章节的奖励值等于或超过临界值时,保存代理。

  • “AverageSteps”—当每集运行的平均步数等于或超过该选项指定的临界值时,保存代理StopTrainingValue.平均值是通过窗口计算的“ScoreAveragingWindowLength”

  • “AverageReward”-当所有章节的平均奖励等于或超过临界值时保存代理。

  • “GlobalStepCount”—当所有章节的总步数(调用代理的总次数)等于或超过临界值时,保存代理。

  • “EpisodeCount”—当训练集数大于或等于临界值时,保存座席。

设置此选项以存储根据您指定的标准表现良好的候选代理。当您将此选项设置为“没有”,软件设置SaveAgentValue选项为500。您可以更改该值以指定保存代理的条件。

例如,假设您希望存储产生等于或超过100的插曲奖励的任何代理以供进一步测试。为此,设置SaveAgentCriteria“EpisodeReward”并设置SaveAgentValue选项为100。当一个情节奖励等于或超过100时,火车属性指定的文件夹中的MAT文件中保存相应的代理SaveAgentDirectory选择。调用MAT文件AgentK.mat,在那里K对应的集数。代理存储在MAT文件中saved_agent

例子:“SaveAgentCriteria”、“EpisodeReward”

保存代理的条件的临界值,指定为标量或向量。

如果培训环境包含单个代理,请指定SaveAgentValue作为一个标量。

如果训练环境是一个多代理的Simulink环境,请指定一个标量,以便将相同的保存条件应用到万博1manbetx每个代理。若要在满足特定条件时保存代理,请指定SaveAgentValue作为一个向量。在这种情况下,向量中元素的顺序对应于创建环境时使用的代理的顺序。当满足保存代理的条件时,所有代理都保存在同一个MAT文件中。

指定保存候选代理的条件时使用SaveAgentCriteria时,软件将该值设置为500。更改该值以指定保存代理的条件。看到SaveAgentCriteria选项以获取更多详细信息。

例子:“SaveAgentValue”,100年

保存代理的文件夹,指定为字符串或字符向量。文件夹名称可以包含完整路径或相对路径。类指定的条件下发生的事件SaveAgentCriteria而且SaveAgentValue选项,软件将代理保存在这个文件夹中的一个MAT文件中。如果文件夹不存在,火车创建它。当SaveAgentCriteria“没有”,该选项将被忽略火车不创建文件夹。

例子:'SaveAgentDirectory', pwd + "\run1\Agents"

使用并行训练的标志,指定为逻辑.将此选项设置为真正的将训练配置为使用并行处理来模拟环境,从而支持使用多核、处理器、计算机集群或云资源来加速训练。要指定并行训练的选项,请使用ParallelizationOptions财产。

UseParallel真正的其次是DQN、DDPG、TD3和SACNumStepsToLookAhead属性或相应的代理选项对象必须设置为1,否则产生错误。这保证了体验是连续存储的。在并行训练AC代理时,如果StepsUntilDataIsSent的属性ParallelizationOptions对象设置为与NumStepToLookAheadAC代理选项对象。

注意,如果你想用本地GPU加速深度神经网络计算(比如梯度计算、参数更新和预测),你不需要设置UseParallel为true。相反,在创建参与者或评论家表示时,使用rlRepresentationOptions对象,其中UseDevice选项设置为“图形”.使用并行计算或GPU需要并行计算工具箱™软件。另外还需要使用计算机集群或云资源MATLAB并行服务器.有关使用多核处理器和gpu进行训练的更多信息,请参见使用并行计算和图形处理器训练代理

例子:“UseParallel”,真的

控制并行训练的并行化选项,指定为ParallelTraining对象。有关使用并行计算进行训练的更多信息,请参见训练强化学习代理

ParallelTraining对象具有以下属性,可以在创建rlTrainingOptions对象。

并行计算模式,指定为下列之一:

  • “同步”——使用parpool对现有员工进行同步培训。在这种情况下,工作线程暂停执行,直到所有工作线程都完成。主机根据来自所有工作者的结果更新参与者和评论家参数,并将更新后的参数发送给所有工作者。注意,基于梯度的并行化需要同步训练DataToSendFromWorkers设置为“梯度”然后模式必须设置为“同步”

  • “异步”——使用parpool对可用的工人进行异步培训。在这种情况下,工作线程在完成任务后立即将数据发送回主机,并从主机接收更新的参数。然后工人们继续他们的工作。

工作者发送给主机的数据类型,指定为以下字符串之一:

  • “经验”—模拟由工位进行,学习由主机进行。具体来说,工作人员根据环境模拟智能体,并向主机发送经验数据(观察、动作、奖励、下一次观察和是否达到终端条件的标志)。对于具有梯度的智能体,主机根据经验计算梯度,更新网络参数,并将更新后的参数发送给工作人员,使其可以对环境进行新的模拟。

  • “梯度”-由工人进行模拟和学习。具体来说,工作人员根据环境模拟代理,根据经验计算梯度,并将梯度发送给主机。主机平均梯度,更新网络参数,并将更新后的参数发送给工人,以便他们可以对环境进行新的模拟。这个选项需要同步训练,这就是它所要求的模式设置为“同步”

请注意

对于AC和PG代理,必须指定DataToSendFromWorkers作为“梯度”

对于DQN、DDPG、PPO、TD3和SAC制剂,必须指定DataToSendFromWorkers作为“经验”

工作者向主机发送数据并接收更新参数的步骤数,指定为1或者一个正整数。当这个选项是1时,worker等待到插曲结束,然后将所有步长数据发送给主机。否则,工作线程在发送数据之前等待指定的步数。

请注意

  • AC代理不接受StepsUntilDataIsSent = -1.AC训练,设置StepsUntilDataIsSent等于NumStepToLookAheadAC代理选项。

  • 对于PG代理,必须指定StepsUntilDataIsSent = -1

工人的随机化初始化,指定为以下之一:

  • 1-给每个worker分配一个唯一的随机种子。种子的值是工作者ID。

  • 2-不要给工人分配随机的种子。

  • 矢量-手动指定每个工人的随机种子。vector中元素的数量必须与worker的数量相匹配。

选项,将模型和工作区变量发送给并行工作者,指定为“上”“关闭”.当选项是“上”,主机将在模型中使用并在基本MATLAB工作空间中定义的变量发送给工作者。

附加到并行池的其他文件,指定为字符串或字符串数组。

函数,指定为没有输入参数的函数的句柄。该函数在培训开始前为每个员工运行一次。编写这个函数来执行在训练之前需要的任何处理。

函数在训练结束后运行,指定为没有输入参数的函数的句柄。您可以编写此函数以在训练结束后清理工作区或执行其他处理。

在命令行上显示训练进度,指定为逻辑值(0)或真正的(1).设置为真正的在训练期间将每个训练集的信息写入MATLAB命令行。

选项,在一集期间发生错误时停止训练,指定为“上”“关闭”.当这个选项是“关闭”时,错误被捕获并返回SimulationInfo的输出火车,训练继续到下一集。

选项,使用事件管理器显示培训进度,指定为“训练进步”“没有”.默认情况下,调用火车打开强化学习插曲管理器,它以图形和数字的方式显示有关训练进度的信息,例如每集的奖励、平均奖励、插曲数和总步数。(有关更多信息,请参见火车)。若要关闭此显示,请将此选项设置为“没有”

对象的功能

火车 在指定的环境中训练强化学习代理

例子

全部折叠

创建一个用于训练强化学习代理的选项集。将最大集数和每集最大步数设置为1000。设置当平均奖励等于或超过480时停止训练的选项,并打开命令行显示和Reinforcement Learning Episode Manager以显示训练结果。在创建选项集时,可以使用名称-值对参数设置选项。没有显式设置的任何选项都有默认值。

trainOpts = rlTrainingOptions(...“MaxEpisodes”, 1000,...“MaxStepsPerEpisode”, 1000,...“StopTrainingCriteria”,“AverageReward”,...“StopTrainingValue”, 480,...“详细”,真的,...“阴谋”,“训练进步”
trainOpts = rlTrainingOptions与属性:MaxEpisodes: 1000 MaxStepsPerEpisode: 1000 ScoreAveragingWindowLength: 5 StopTrainingCriteria: "AverageReward" StopTrainingValue: 480 SaveAgentCriteria: "none" SaveAgentValue: "none" SaveAgentDirectory: "savedAgents" Verbose: 1情节:"training-progress" StopOnError: "on" UseParallel: 0 parallelationoptions: [1x1 rl.option.ParallelTraining]

或者,创建一个默认选项集,并使用点表示法更改一些值。

trainOpts = rlTrainingOptions;trainOpts。MaxEpisodes = 1000;trainOpts。MaxStepsPerEpisode = 1000;trainOpts。StopTrainingCriteria =“AverageReward”;trainOpts。StopTrainingValue = 480;trainOpts。详细的= true; trainOpts.Plots =“训练进步”;trainOpts
trainOpts = rlTrainingOptions与属性:MaxEpisodes: 1000 MaxStepsPerEpisode: 1000 ScoreAveragingWindowLength: 5 StopTrainingCriteria: "AverageReward" StopTrainingValue: 480 SaveAgentCriteria: "none" SaveAgentValue: "none" SaveAgentDirectory: "savedAgents" Verbose: 1情节:"training-progress" StopOnError: "on" UseParallel: 0 parallelationoptions: [1x1 rl.option.ParallelTraining]

您现在可以使用trainOpts类的输入参数火车命令。

创建一个选项对象,用于在同一环境中同时训练三个代理。

将最大集数和每集最大步数设置为1000.配置选项,当第一个代理在5集的平均奖励等于或超过400时停止训练,当第二个代理的平均奖励超过时停止训练10集数等于或超过500,第三个是15集的平均奖励等于或超过600。代理的顺序是在环境创建过程中使用的顺序。

当当前章节中第一个agent的奖励超过100时,或者当第二个agent的奖励超过120时,第三个agent的奖励等于或超过140时,保存agent。

同时打开命令行显示和Reinforcement Learning Episode Manager来显示训练结果。在创建选项集时,可以使用名称-值对参数设置选项。没有显式设置的任何选项都有默认值。

trainOpts = rlTrainingOptions(...“MaxEpisodes”, 1000,...“MaxStepsPerEpisode”, 1000,...“ScoreAveragingWindowLength”,[5 10 15],...“StopTrainingCriteria”,“AverageReward”,...“StopTrainingValue”,[400 500 600],...“SaveAgentCriteria”,“EpisodeReward”,...“SaveAgentValue”,[100 120 140],...“详细”,真的,...“阴谋”,“训练进步”
trainOpts = rlTrainingOptions with properties: MaxEpisodes: 1000 MaxStepsPerEpisode: 1000 ScoreAveragingWindowLength: [5 10 15] StopTrainingCriteria: "AverageReward" StopTrainingValue: [400 500 600] SaveAgentCriteria: "EpisodeReward" SaveAgentValue: [100 120 140] SaveAgentDirectory: "savedAgents" Verbose: 1 Plots: "training-progress" StopOnError: "on" UseParallel: 0 ParallelizationOptions: [1x1 rl.option.ParallelTraining]

或者,创建一个默认选项集,并使用点表示法更改一些值。

trainOpts = rlTrainingOptions;trainOpts。MaxEpisodes = 1000;trainOpts。MaxStepsPerEpisode = 1000;trainOpts。ScoreAveragingWindowLength = [5 10 15];trainOpts。StopTrainingCriteria =“AverageReward”;trainOpts。StopTrainingValue = [400 500 600];trainOpts。SaveAgentCriteria =“EpisodeReward”;trainOpts。SaveAgentValue = [100 120 140];trainOpts。详细的= true; trainOpts.Plots =“训练进步”;trainOpts
trainOpts = rlTrainingOptions with properties: MaxEpisodes: 1000 MaxStepsPerEpisode: 1000 ScoreAveragingWindowLength: [5 10 15] StopTrainingCriteria: "AverageReward" StopTrainingValue: [400 500 600] SaveAgentCriteria: "EpisodeReward" SaveAgentValue: [100 120 140] SaveAgentDirectory: "savedAgents" Verbose: 1 Plots: "training-progress" StopOnError: "on" UseParallel: 0 ParallelizationOptions: [1x1 rl.option.ParallelTraining]

您可以指定一个标量,以便对所有代理应用相同的标准。例如,使用窗口长度为10对于所有三个代理。

trainOpts。ScoreAveragingWindowLength = 10
trainOpts = rlTrainingOptions with properties: MaxEpisodes: 1000 MaxStepsPerEpisode: 1000 ScoreAveragingWindowLength: 10 StopTrainingCriteria: "AverageReward" StopTrainingValue: [400 500 600] SaveAgentCriteria: "EpisodeReward" SaveAgentValue: [100 120 140] SaveAgentDirectory: "savedAgents" Verbose: 1 Plots: "training-progress" StopOnError: "on" UseParallel: 0 ParallelizationOptions: [1x1 rl.option.ParallelTraining]

您现在可以使用trainOpts类的输入参数火车命令。

另请参阅

在R2019a中引入