什么是强化学习,强化学习在控制系统中的应用以及matlab强化学习工具箱的介绍

一、Reinforcement Learning Toolbox介绍

强化学习工具箱使用强化学习算法(包括DQN,A2C和DDPG)为训练策略(policy)提供函数和模块。您可以使用这些策略为复杂的系统(例如,机器人和自治系统)搭建控制器和开发决策算法。您可以使用深度神经网络,多项式或查找表来实施策略。
该工具箱使您能够通过与MATLAB或Simulink模型所代表的环境进行交互来训练策略。您可以评估算法,使用超参数设置进行实验以及监视训练进度。为了提高训练效果,您可以在云,计算机集群和GPU(使用Parallel Computing Toolbox和MATLAB Parallel Server)上并行运行模拟。
通过ONNX模型格式,可以从TensorFlow Keras和PyTorch等深度学习框架(带有Deep Learning Toolbox™)中导入现有策略。您可以生成优化的C,C ++和CUDA代码,以在微控制器和GPU上部署经过训练的策略。
该工具箱包含参考示例,这些参考示例用于使用强化学习为机器人技术和自动驾驶应用设计控制器。

二、什么是强化学习(Reinforcement Learning)

强化学习是一种目标导向的计算方法,其中计算机通过与未知的动态环境进行交互来学习执行任务。 这种学习方法使计算机可以做出一系列决策,以最大化任务的累积奖励,而无需人工干预,也无需进行明确编程即可完成任务。 下图显示了强化学习方案的一般表示。
在这里插入图片描述
强化学习的目的是训练代理(Agent)在未知环境中完成任务。代理(Agent)从环境中接收观察和奖励,并向环境发送操作(actions)。奖励是衡量某个动作相对于完成任务目标的成功程度的指标。
该代理包含两个组件:策略(policy)和学习算法。

  • 该策略是一种映射,它根据对环境的观察来选择操作。通常,策略是具有可调参数的函数逼近器,例如深度神经网络
  • 学习算法根据动作,观察和奖励不断更新策略参数。学习算法的目标是找到使任务期间收到的累积奖励最大化的最佳策略。

换句话说,强化学习是指代理人(Agent)通过与环境的反复试验和错误交互来学习最佳行为,而无需人工参与。
例如,考虑使用自动驾驶系统停车的任务。该任务的目标是使车辆计算机(agent)将车辆停放在正确的位置和方向。为此,控制器使用摄像机,加速计,陀螺仪,GPS接收器和激光雷达(observations)的读数生成转向,制动和加速命令(actions)。动作命令被发送到控制车辆的执行器。所得的观察结果取决于执行器,传感器,车辆动力学,路面,风和许多其他次要因素。所有这些因素,是除了代理人之外的东西,构成了强化学习的环境(environment)。
为了学习如何根据观察结果生成正确的动作,计算机反复尝试使用试错法(trail-and-error)来停放车辆。为了指导学习过程,您提供了一个信号,当汽车成功到达所需的位置和方向时该信号为1,否则为0(reward)。在每次试用期间,计算机都会使用使用一些默认值初始化的映射(policy)来选择操作。每次尝试后,计算机都会更新映射以最大化奖励(learning algorithm)。这个过程一直持续到计算机学习到可以成功停放汽车的最佳映射为止。

强化学习工作流程

一般的利用强化学习算法训练代理人包含以下几步:
在这里插入图片描述

  1. Formulate Problem:定义代理要学习的任务,包括代理如何与环境交互以及代理必须实现的任何主要和次要目标。
  2. Create Environment:定义代理在其中运行的环境,包括代理与环境之间的接口以及环境动态模型。有关更多信息,请参见Create MATLAB Environment for Reinforcement Learning和Create Simulink Environments for Reinforcement Learning。(后面会介绍)
  3. Define Reward:定义用于根据任务目标衡量其绩效的奖励信号,以及如何从环境中计算该信号。有关更多信息,请参阅Define Reward Signals。
  4. Create Agent:包括定义策略表示和配置代理学习算法。有关更多信息,请参阅 Create Policy and Value Function Representations 和 Reinforcement Learning Agents.
  5. Train Agent:使用定义的环境,奖励和代理学习算法来训练代理策略表示。有关更多信息,请参阅 Train Reinforcement Learning Agents.
  6. Validate Agent:通过一起模拟代理和环境来评估经过培训的代理的性能。有关更多信息,请参阅Train Reinforcement Learning Agents.。
  7. Deploy Policy:部署训练过的策略,例如生成GPU代码。有关更多信息,请参阅Deploy Trained Reinforcement Learning Policies.

使用强化学习训练代理是一个反复的过程。 后期的决策和结果可能要求您返回学习工作流程的较早阶段。 例如,如果培训过程没有在合理的时间内收敛到最佳策略,则在重新培训代理之前,您可能必须更新以下任何一项:

  • 训练设置
  • 学习算法配置
  • 策略表示(policy representation)
  • 奖励信号定义
  • 动作和观测信号
  • 环境动态(environment dynamics)

三、强化学习在控制系统中的应用

强化学习策略的行为(观察环境并以最佳方式生成完成任务的动作)类似于控制系统中控制器的操作。 可以使用以下映射将强化学习转换为控制系统表示形式。
在这里插入图片描述

强化学习 控制系统
策略 控制器
环境 除控制器外的所有东西-在上图中,环境包括被控对象(plant),参考信号和误差的计算值。 通常,环境还可以包含其他元素,例如:· 测量噪声· 干扰信号· 滤波器· 模数和数模转换器
观测 代理可见的来自环境的任何可测量值——在上图中,控制器可以看到来自环境的误差信号。 您还可以创建代理,以观察例如参考信号,测量信号和测量信号的变化率。
动作 操纵变量或控制动作
奖励 测量,误差信号或某些其他性能指标的函数——例如,您可以定义奖励函数,以使稳态误差最小,同时使控制工作量(control effort)最小。
学习算法 自适应控制器的自适应机制

在机器人技术和自动驾驶等领域遇到的许多控制问题都需要复杂的非线性控制架构。诸如增益调度(gain-scheduling),鲁棒控制(robust control)和非线性模型预测控制(MPC)之类的技术可用于解决这些问题,但通常需要控制工程师的大量专业知识。例如,增益和参数很难调整(调参比较困难)。最终的控制器可能会带来实施方面的挑战,例如非线性MPC的计算强度。
您可以使用经过强化学习训练的深度神经网络来实现这种复杂的控制器。这些系统可以自学,无需专家控制工程师的干预。此外,一旦网络被训练,您就可以以计算有效的方式部署强化学习策略。
您还可以使用强化学习来创建端到端控制器,该控制器直接从原始数据(例如图像)生成操作。这种方法对于视频密集型应用程序(例如自动驾驶)很有吸引力,因为您不必手动定义和选择图像功能。

猜你喜欢

转载自blog.csdn.net/weixin_42188287/article/details/108469391
今日推荐