强化学习智能体训练总览

  • 简介
  • 训练算法
  • 情节管理器
  • 保存候选智能体
  • 并行计算
  • GPU加速
  • 验证训练后的策略
  • 环境验证

简介

创建环境和强化学习智能体后,您可以使用训练功能在环境中训练智能体。 要配置您的训练,请使用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.从环境中获取初始观测值s0s_0s0​。

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

    d.将当前操作设置为初始操作(a←a0)(a←a_0)(a←a0​),并将当前观察值设置为初始观察值(s←s0)(s←s_0)(s←s0​)。

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

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

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

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

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

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

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

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

情节管理器

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


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

关闭“强化学习情节管理器”,请将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环境。

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

  1. MATLAB强化学习实战(十三) 使用强化学习智能体训练Biped机器人行走

    使用强化学习智能体训练Biped机器人行走 两足机器人模型 创建环境接口 选择和创建训练智能体 DDPG Agent TD3 Agent 指定训练选项和训练智能体 仿真训练过的智能体 比较智能体性能 ...

  2. MATLAB强化学习工具箱(十二)强化学习智能体创建总览

    强化学习智能体创建总览 强化学习介绍 内置智能体 选择智能体类型 自定义智能体 关于强化学习的更多介绍 强化学习介绍 强化学习的目标是训练智能体在不确定的环境中完成任务.智能体从环境中接收观察和奖励, ...

  3. 多智能体强化学习:鼓励共享多智能体强化学习中的多样性

    题目:Celebrating Diversity in Shared Multi-Agent Reinforcement Learning 出处:Neural Information Processi ...

  4. 多智能体强化学习(四)多智能体RL

    多智能体强化学习(四)多智能体RL 1. 问题的公式:随机博弈 2. 解决随机对策 2.1 基于价值的MARL方法 2.2 基于策略的MARL方法 2.3 纳什均衡的求解概念 2.4 特殊类型的随机策 ...

  5. 论文阅读-基于深度强化学习的方法解决多智能体防御和攻击问题

    论文原题目:A deep reinforcement learning-based method applied for solving multi-agent defense and attack ...

  6. 2000亿次开放学习后,DeepMind的智能体成精了

    丰色 发自 凹非寺 量子位 报道 | 公众号 QbitAI 有这样一批智能体,在完全没有见过的游戏任务里,也学会了游刃有余地解决目标. 譬如面对下面这样一个高地,它们要取到上面的紫色金字塔. 没有跳跃 ...

  7. 15万奖金强化学习赛事!Go-Bigger多智能体决策智能挑战赛来了!

    <球球大作战>是一款风靡全球的休闲电子竞技游戏,以大球吃小球为目标,简单有趣却又斗智斗勇. 你不知道的是,AI世界也拥有了自己的<球球大作战>. 前不久,OpenDILab开源 ...

  8. DeepMind提出强化学习新算法,教智能体从零学控制

    来源:人工智能和大数据 摘要:3月2日,DeepMind发表博客文章,提出一种称为SAC-X(计划辅助控制)的新学习范式,旨在解决让AI以最少的先验知识,从头开始学习复杂控制问题的挑战. 这在真实环境 ...

  9. 多智能体强化学习Multi agent,多任务强化学习Multi task以及多智能体多任务强化学习Multi agent Multi task概述

    概述 在我之前的工作中,我自己总结了一些多智能体强化学习的算法和通俗的理解. 首先,关于题目中提到的这三个家伙,大家首先想到的就是强化学习的五件套: 状态:s 奖励:r 动作值:Q 状态值:V 策略: ...

最新文章

  1. 干货!Java 学习路线指南,看这文就够了!
  2. 分布式一致性协议paxos
  3. Oracle表分区和索引分区汇总
  4. CCNA配置试验之六 标准ACL和扩展ACL的配置
  5. .NET Core Web API:您需要了解的最少知识(第1部分,共2部分)
  6. Ubuntu 20.04 LTS 开发周期的重要任务:移除 Python 2
  7. Swift中类与结构的初始化
  8. Java Web学习总结(15)——JSP指令
  9. python模板注入_Python 模板引擎的注入问题分析
  10. 计算机组策略恢复,Win10重置组策略编辑器的方法
  11. 视频图像协议接口大全
  12. 心理学matlab入门书籍,零基础MATLAB和PSYCHTOOLBOX自学
  13. html的空心箭头,CSS实现空心三角指示箭头
  14. RPL(5):RFC6550翻译(5)---ICMPv6 RPL控制报文
  15. ORACLE执行计划学习总结
  16. JAVA的jdk1.8中文文档
  17. awk 4.0+ man手册翻译第一版本
  18. PHP模式-单例模式
  19. 数学建模竞赛常用软件培训2
  20. inprivate浏览是什么意思_打开浏览器无痕是什么意思

热门文章

  1. 入门c语言。(1建立开发环境)
  2. 游戏软件寄售官网源码带后台
  3. 红米9a手动root方法
  4. EasyCVR使用大华SDK接入时录像显示失败是什么原因?该如何解决?
  5. 必应每日一图php,自建必应每日一图API接口
  6. 一个好的浏览器是多么重要,强烈推荐一个好用的浏览器.........
  7. P3387ybtoj【图论】4章1题【【模板】缩点】
  8. 计算机房常配用的,计算机房常配用的是( )灭火器。
  9. ug java环境变量设置_关于UG环境变量
  10. Redis之持久化实操(Linux版)