MATLAB强化学习实战(一) 强化学习智能体训练总览

简介

创建环境和强化学习智能体后,您可以使用训练功能在环境中训练智能体。 要配置您的训练,请使用rlTrainingOptions函数。 例如,创建训练选项集opt,并在环境env中训练智能体。

opt = rlTrainingOptions(...
    'MaxEpisodes',1000,...
    'MaxStepsPerEpisode',1000,...
    'StopTrainingCriteria',"AverageReward",...
    'StopTrainingValue',480);
trainStats = train(agent,env,opt);

有关创建智能体的更多信息,请参见强化学习智能体。 有关创建环境的更多信息,请参见创建用于强化学习的MATLAB环境创建用于强化学习的Simulink环境

训练随着训练的进行而更新智能体。 要保留原始智能体参数以供以后使用,请将智能体保存到MAT文件中

save("initialAgent.mat","agent")

当您在rlTrainingOptions对象的StopTrainingCriteria和StopTrainingValue选项中指定的条件得到满足时,训练将自动终止。 要手动终止进行中的训练,请键入Ctrl + C,或者在“强化学习情节管理器”中单击“停止训练”。 由于Train在每个情节上都会更新智能体,因此您可以通过再次调用train(agent,env,trainOpts)来恢复训练,而不会丢失在第一次训练中学习到的训练参数

训练算法

通常,训练执行以下步骤。

  1. 初始化智能体。

  2. 对于每个episode:

    a.重置环境。

    b.从环境中获取初始观测值 s 0 s_0 s0

    c.计算初始操作 a 0 = μ ( s 0 ) a_0 =μ(s_0) a0=μ(s0),其中 μ ( s ) μ(s) μ(s)是当前策略。

    d.将当前操作设置为初始操作 ( a ← a 0 ) (a←a_0) (aa0),并将当前观察值设置为初始观察值 ( s ← s 0 ) (s←s_0) (ss0)

    e.在episode还没有结束或终止时,请执行以下步骤。

    1. 将动作a应用于环境并获得下一个观察值s’'和奖励r。

    2. 从经验集 ( s , a , r , s ′ ) (s,a,r,s') sars中学习。

    3. 计算下一个动作 a ′ = μ ( s ′ ) a'=μ(s') a=μs

    4. 用下一个动作 ( a ← a ′ ) (a←a') aa更新当前动作,并用下一个观测值 ( s ← s ′ ) (s←s') ss更新当前观察。

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

  3. 如果满足训练终止条件,请终止训练。 否则,开始下一轮训练。

软件如何执行这些步骤的细节取决于智能体和环境的配置。 例如,如果您配置了环境,则在每个episode开始时重置环境可以包括随机化初始状态值。 有关智能体及其训练算法的更多信息,请参阅强化学习智能体

情节管理器

默认情况下,调用训练功能会打开“强化学习情节管理器”,您可以通过它直观地看到训练进度。 情节管理器图显示每个情节的奖励(EpisodeReward)和运行平均奖励值(AverageReward)。 此外,对于有评论者的智能体,该图显示了评论者在每个情节开始时对长期奖励折价的估计(EpisodeQ0)。 情节管理器还显示各种情节和训练统计数据。 您还可以使用训练功能返回剧情节和训练信息。

在这里插入图片描述
对于有评论家的智能体,根据对环境的初步观察,第 Q 0 Q0 Q0集是每个情节开始时长期折扣奖励的估计。 随着训练的进行,如果评论家的设计很好。 如上图所示,情节 Q 0 Q0 Q0接近真实的长期折扣奖励。

关闭“强化学习情节管理器”,请将rlTrainingOptions的“绘图”选项设置为“none”。

保存候选智能体

在训练期间,您可以保存满足在rlTrainingOptions对象的SaveAgentCriteria和SaveAgentValue选项中指定的条件的候选智能体。 例如,即使尚未满足终止训练的总体条件,您也可以保存任何情节奖励超过一定值的智能体。 例如,当情节奖励大于100时,保存智能体。

opt = rlTrainingOptions('SaveAgentCriteria',"EpisodeReward",'SaveAgentValue',100');

训练将保存的智能体存储在使用rlTrainingOptions的SaveAgentDirectory选项指定的文件夹中的MAT文件中。 保存的智能体可能有用,例如,测试在长时间运行的训练过程中生成的候选智能体。 有关保存条件和保存位置的详细信息,请参见rlTrainingOptions

训练完成后,您可以使用保存功能从MATLAB®工作区中保存最终的训练后的智能体。 例如,将智能体myAgent保存到当前工作目录中的文件finalAgent.mat。

save(opt.SaveAgentDirectory + "/finalAgent.mat",'agent')

默认情况下,保存DDPG和DQN智能体时,不保存体验缓冲区数据。 如果您打算进一步训练您保存的智能体,则可以以以前的经验缓冲区为起点开始训练。 在这种情况下,请将SaveExperienceBufferWithAgent选项设置为true。 对于某些智能体,例如具有较大经验缓冲区和基于图像的观察结果的智能体,保存经验缓冲区所需的内存很大。 在这些情况下,必须确保有足够的内存可用于已保存的智能体。

并行计算

您可以通过运行并行训练模拟来加速训练智能体。 如果您具有Parallel Computing Toolbox™软件,则可以在多核计算机上运行并行仿真。 如果您具有MATLAB Parallel Server™软件,则可以在计算机群集或云资源上运行并行仿真。

使用并行计算训练智能体时,主机客户端会将智能体和环境的副本发送给每个并行工作器。 每个工作人员都会在环境中模拟智能体,然后将其模拟数据发送回主机。 主机智能体从工作人员发送的数据中学习,并将更新的策略参数发送回工作人员。
在这里插入图片描述
要创建由N个工作程序组成的并行池,请使用以下语法。

pool = parpool(N);

如果未使用parpool(并行计算工具箱)创建并行池,则训练功能将使用默认的并行池首选项自动创建一个并行池。 有关指定这些首选项的更多信息,请参见指定并行首选项(并行计算工具箱)。

对于off-policy智能体(例如DDPG和DQN代理),请勿使用所有核心进行并行训练。 例如,如果您的CPU有六个核心,请使用四个。 这样做为主机客户端提供了更多资源,以根据工作者发回的经验来计算梯度。 当对工作者计算梯度时,对于诸如PG和AC智能体这样的on-policy智能体,没有必要限制工作者的数量。

有关将您的训练配置为使用并行计算的更多信息,请参见rlTrainingOptions中的UseParallel和ParallelizationOptions选项。

为了从并行计算中受益,与将体验发送回主机时的参数优化相比,用于模拟环境的计算成本必须相对较高。 如果环境模拟的成本还不够高,则工作人员会在等待主机学习并发送回更新的参数的同时闲置。

当从工作者那里发回经验时,如果环境步复杂度与学习复杂度之比(R)大,则可以提高样本效率。 如果环境可以快速模拟(R很小),则您不太可能从基于经验的并行化中获得任何好处。 如果环境的模拟成本很高,但学习的成本也很高(例如,如果小批量生产的尺寸很大),那么您也不太可能提高样品效率。 但是,在这种情况下,对于off-policy 智能体,您可以减小最小批处理大小以使R更大,从而提高采样效率。

有关在MATLAB中使用并行计算训练代理的示例,请参见训练AC代理使用并行计算来平衡料车系统。 有关在Simulink®中使用并行计算训练智能体的示例,请参阅使用并行计算训练DQN智能体以保持车道

GPU加速

将深层神经网络函数逼近器用于行动者或评论者表示时,您可以通过在GPU而非CPU上执行表示操作来加快训练速度。 为此,请将UseDevice选项设置为“ gpu”。

opt = rlRepresentationOptions('UseDevice',"gpu");

性能提高的程度取决于您的特定应用程序和网络配置。

验证训练后的策略

要验证您训练后的智能体,您可以使用sim函数在训练环境中模拟智能体。 要配置模拟,请使用rlSimulationOptions

验证智能体时,请考虑检查智能体如何处理以下内容:

  1. 更改模拟初始条件—要更改模型初始条件,请修改环境的重置功能。 有关重置函数的示例,请参见使用自定义函数创建MATLAB环境从模板创建自定义MATLAB环境和创建用于强化学习的Simulink环境

  2. 训练和模拟环境动力学之间的不匹配—要检查此类不匹配,请以与创建训练环境相同的方式创建测试环境,并修改环境行为。

与并行训练一样,如果您具有Parallel Computing Toolbox软件,则可以在多核计算机上运行多个并行模拟。 如果您具有MATLAB Parallel Server软件,则可以在计算机群集或云资源上运行多个并行模拟。 有关配置模拟以使用并行计算的更多信息,请参见rlSimulationOptions中的UseParallel和ParallelizationOptions。

环境验证

如果您的训练环境实现了plot方法,则可以在训练和模拟过程中可视化环境行为。 如果在训练或模拟之前调用plot(env),其中env是您的环境对象,则可视化会在训练过程中进行更新,以使您可以直观地观察每个情节或模拟的进度。

使用并行计算训练或模拟智能体时,不支持环境可视化。

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

猜你喜欢

转载自blog.csdn.net/wangyifan123456zz/article/details/109563543