强化学习智能体创建总览

  • 强化学习介绍
  • 内置智能体
  • 选择智能体类型
  • 自定义智能体
  • 关于强化学习的更多介绍

强化学习介绍

强化学习的目标是训练智能体在不确定的环境中完成任务。智能体从环境中接收观察和奖励,并向环境发送操作。奖励是衡量某个动作相对于完成任务目标的成功程度的指标。该智能体包含两个组件:策略和学习算法

  1. 该策略是一种映射,它根据对环境的观察来选择操作。通常,策略是带有可调参数的函数逼近器,例如深度神经网络。

  2. 学习算法根据动作,观察和奖励不断更新策略参数。学习算法的目标是找到使任务期间收到的预期累积长期奖励最大化的最佳策略。


智能体根据学习算法维护一个或多个参数化函数逼近器,以训练策略。 逼近器可以两种方式使用。

  1. 评论者-对于给定的观察和行动,评论者将任务的累积长期奖励的期望值作为输出返回。

  2. 参与者-对于给定的观察,参与者将使预期的累积长期奖励最大化的动作作为输出返回。

仅使用批评者来选择其行为的智能体,依赖于间接策略表示。 这些智能体也称为基于值的代理,它们使用逼近器表示值函数或Q值函数。 通常,这些智能体在离散的操作空间中可以更好地工作,但对于连续的操作空间,在计算上可能会变得昂贵。

仅使用行动者选择其行动的智能体依赖于直接的策略表示。 这些智能体也称为基于策略的。 该策略可以是确定性的,也可以是随机的。 通常,尽管训练算法对噪声测量敏感并且可以收敛于局部最小值,但是这些智能体更简单并且可以处理连续的动作空间。

同时使用行动者和评论者的智能体称为actor-critic agents。 在这些智能体中,行动者在训练过程中会使用评论者的反馈(而不是直接使用奖励)来学习采取的最佳行动。 同时,评论者从奖励中学习价值函数,从而可以恰当地批评行动者。 通常,这些智能体可以处理离散和连续的动作空间。

内置智能体

强化学习工具箱™软件提供了以下内置智能体。 您可以在具有连续或离散观察空间以及以下操作空间的环境中训练这些智能体。

下表总结了所有内置智能体的类型,操作空间和表示形式。 对于每个智能体,观察空间可以是离散的也可以是连续的。

内置智能体:类型和动作空间


内置智能体:每个智能体必须使用的表示形式

具有默认网络的智能体—除Q-Learning和SARSA外,所有智能体均支持行动者和评论者的默认网络。 您可以基于环境中的观察和操作规范,使用默认的行动者和评论者表示形式创建智能体。 为此,请执行以下步骤。

  1. 为您的环境创建观察规范。 如果您已经有一个环境接口对象,则可以使用getObservationInfo获得这些规范。

  2. 为您的环境创建操作规范。 如果已经有了环境接口对象,则可以使用getActionInfo获得这些规范。

  3. 如果需要,请指定每个可学习层中的神经元数量或是否使用LSTM层。 为此,请使用rlAgentInitializationOptions创建智能体初始化选项对象。

  4. 如果需要,可以通过为特定智能体创建选项对象集来指定智能体选项。

  5. 使用相应的智能体创建功能来创建智能体。 生成的智能体包含上表中列出的适当行动者和评论者表示。 行动者和评论者使用默认的特定于智能体的深度神经网络作为内部近似器。

有关创建角色和评论函数逼近器的更多信息,请参见创建策略和值函数表示形式。

选择智能体类型

选择智能体时,最佳实践是从与您的行动和观察空间兼容的更简单(且训练速度更快)算法开始。 如果较简单的算法无法按预期执行,则可以逐步尝试更复杂的算法。

离散的动作和观察空间—对于具有离散的动作和观察空间的环境,Q学习智能体是最简单的兼容智能体,其次是DQN和PPO。

离散动作空间和连续观察空间—对于具有离散动作空间和连续观察空间的环境,DQN是紧随PPO之后最简单的兼容智能体。

连续动作空间—对于同时具有连续动作和观察空间的环境,DDPG是最简单的兼容智能体,其次是TD3,PPO和SAC。 对于此类环境,请首先尝试DDPG。 一般来说:

  1. TD3是DDPG的改进,更复杂的版本。

  2. PPO具有更稳定的更新,但需要更多的训练。

  3. SAC是DDPG的改进,更复杂的版本,可生成随机策略。

自定义智能体

您还可以通过创建自定义智能体,使用其他学习算法来训练策略。 为此,您将创建自定义智能体类的子类,并使用一组必需和可选方法来定义智能体行为。 有关更多信息,请参见自定义智能体。

关于强化学习的更多介绍

https://ww2.mathworks.cn/help/releases/R2020b/reinforcement-learning/ug/what-is-reinforcement-learning.html

MATLAB强化学习工具箱(十二)强化学习智能体创建总览相关推荐

  1. Vue.js 学习笔记十二:Vue CLI 之创建一个项目

    目录 创建一个项目 创建一个项目 运行以下命令来创建一个新项目: vue create vuecli-demo 你会被提示选取一个 preset.你可以选默认的包含了基本的 Babel + ESLin ...

  2. GUI学习之十二——QPlainTextEdit学习总结

    QPlainTextEdit可以说是一个简化版的QTextEdit类控件,和QTextEdit的功能差不多,使用了QTextEdit和QTextDocument作为背后实现的技术支撑. 由于QPlai ...

  3. MATLAB强化学习实战(十二) 创建自定义强化学习算法的智能体

    创建自定义强化学习算法的智能体 创建环境 定义策略 自定义智能体类 智能体属性 构造函数 相关函数 可选功能 创建自定义智能体 训练自定义智能体 自定义智能体仿真 本示例说明如何为您自己的自定义强化学 ...

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

    强化学习智能体训练总览 简介 训练算法 情节管理器 保存候选智能体 并行计算 GPU加速 验证训练后的策略 环境验证 简介 创建环境和强化学习智能体后,您可以使用训练功能在环境中训练智能体. 要配置您 ...

  5. Python语言入门这一篇就够了-学习笔记(十二万字)

    Python语言入门这一篇就够了-学习笔记(十二万字) 友情提示:先关注收藏,再查看,12万字保姆级 Python语言从入门到精通教程. 文章目录 Python语言入门这一篇就够了-学习笔记(十二万字 ...

  6. C++语言学习(十二)——C++语言常见函数调用约定

    C++语言学习(十二)--C++语言常见函数调用约定 一.C++语言函数调用约定简介 C /C++开发中,程序编译没有问题,但链接的时候报告函数不存在,或程序编译和链接都没有错误,但只要调用库中的函数 ...

  7. 20145240《信息安全系统设计基础》第十二周学习总结

    20145240<信息安全系统设计基础>第十二周学习总结 前三周博客链接 第九周学习总结 第十周学习总结 第十一周学习总结 视频学习内容总结 指针数组与数组指针 数组指针(也称行指针) 定 ...

  8. Tensorflow深度学习之十二:基础图像处理之二

    Tensorflow深度学习之十二:基础图像处理之二 from:https://blog.csdn.net/davincil/article/details/76598474   首先放出原始图像: ...

  9. 20145206 《信息安全系统设计基础》第十二周学习总结

    20145206 <信息安全系统设计基础>第十二周学习总结 本周学习目标 1.第九周代码检查 2.第十周代码检查 3.第十一周代码检查 博客链接 20145206 <信息安全系统设计 ...

最新文章

  1. Centos下Yum安装PHP5.5,5.6
  2. javaweb开发3.基于Servlet+JSP+JavaBean开发模式的用户登录注册
  3. makefile 最简单用法
  4. 【Java】continue和break区别
  5. 导师推荐 | 第 5 期临床基因组家系分析,同时解决科研和临床问题
  6. ccd视觉定位教程_CCD视觉检测机有哪些作用?
  7. 系统工程理论与实践投稿经验_钱学森的系统工程 | 如是读
  8. [物理学与PDEs]第5章习题6 各向同性材料时强椭圆性条件的等价条件
  9. 酒精传感器实验-传感器原理及应用实验
  10. [网络安全提高篇] 一一三.Powershell恶意代码检测 (1)论文总结及抽象语法树(AST)提取
  11. 想要空号检测软件检测结果更加准确 那么注意选择
  12. java开发工程师面试问题大全及答案大全
  13. C++ 引用的本质是什么?
  14. oracle中if语句用法,Oracle IF语句的使用 | 学步园
  15. imx6ul mqs 音频爆破音
  16. 想学明白PostgreSQL,得先捋一捋体系架构
  17. 冷笑话,笑不笑随你,哈哈!
  18. linux系统取消时间同步,Linux系统时间不同步问题
  19. uni-app学习路线 - 计划
  20. Arduino控制舵机详解(含代码)

热门文章

  1. 高清不卡!MIT用机器学习让你更流畅的观看在线视频
  2. win10双系统ubuntu安装+卸载driver+cuda+cudnn+anaconda+mxnet编译(好文推荐+实际动手填坑系列)
  3. bug3:No ParameterResolver registered for parameter
  4. UE4 C++:事件绑定(输入、碰撞检测、定时器)
  5. B2C电商平台解决方案
  6. makefile(五):makefile的条件判断与循环
  7. [C++]分数类的定义(成员函数、运算符重载)
  8. Miscellaneos:ISV
  9. 股票、债券和期货对比
  10. 多播数据报的寻址方式(怎么找到目的主机)