MATLAB - 强化学习(Reinforcement Learning)

系列文章目录


前言


一、什么是强化学习?

        强化学习是一种以目标为导向的计算方法,计算机通过与未知的动态环境交互来学习执行任务。这种学习方法能让计算机在没有人工干预和明确编程的情况下,做出一系列决策,使任务的累积奖励最大化。下图显示了强化学习场景的一般表示方法。

        强化学习的目标是训练智能体 agent 在未知环境中完成任务。agent 接收来自环境的观察结果 observations 和奖励 reward ,并向环境发送行动 actions 。奖励是衡量一个行动在完成任务目标方面成功与否的标准。

        agent 包含两个部分:策略 policy 和学习算法 learning algorithm 

  • 策略是根据环境观测结果选择行动的映射。通常情况下,策略是一个参数可调的函数近似器,如深度神经网络。
  • 学习算法根据行动、观察结果和奖励不断更新策略参数。学习算法的目标是找到最优策略,使任务期间获得的累积奖励最大化。

        换句话说,强化学习是指 agent 在没有人类参与的情况下,通过与环境的反复试错互动来学习最优行为。

        举个例子,考虑使用自动驾驶系统停车的任务。这项任务的目标是让车辆计算机(agent)将车辆停放在正确的位置和方向上。为此,控制器会使用摄像头、加速度计、陀螺仪、GPS 接收器和激光雷达的读数(观测数据 observations )来生成转向、制动和加速指令(操作 actions )。操作命令被发送到控制车辆的执行器。由此产生的观测结果取决于执行器、传感器、车辆动态、路面、风力和许多其他不太重要的因素。所有这些因素,即不是 agent 的一切因素,构成了强化学习中的环境 environment 

        为了学习如何从观察结果中生成正确的操作,计算机会反复尝试使用试错过程来停放车辆。为了引导学习过程,你需要提供一个信号,当汽车成功到达所需的位置和方向时,信号为 1,否则为 0(奖励 reward )。在每次试验过程中,计算机都会使用初始化了一些默认值的映射(策略 policy )来选择操作。每次试验后,计算机都会更新映射,使奖励最大化(学习算法 learning algorithm )。这个过程一直持续到计算机学习到能成功泊车的最佳映射为止。

1.1 强化学习工作流程

        使用强化学习训练 agent 的一般工作流程包括以下步骤。

  1. 提出问题 - 确定 agent 需要学习的任务,包括 agent 与环境的交互方式以及 agent 必须实现的主要和次要目标。
  2. 创建环境 - 定义 agent 运行的环境,包括 agent 与环境之间的接口以及环境动态模型。更多信息,请参阅强化学习环境。
  3. 定义奖励 - 指定 agent 用来衡量其任务目标执行情况的奖励信号,以及如何从环境中计算该信号。更多信息,请参阅自定义环境中定义奖励和观察信号。
  4. 创建 agent - 创建 agent,其中包括定义策略逼近器(actor)和值函数逼近器(critic)以及配置 agent 学习算法。更多信息,请参阅创建策略和价值函数以及强化学习代理。
  5. 训练 agent - 使用定义的环境、奖励和代理学习算法训练代理近似器。更多信息,请参阅训练强化学习代理。
  6. 模拟 agent - 通过模拟 agent 和环境来评估训练好的 agent 的性能。更多信息,请参阅训练强化学习代理。
  7. 部署策略 - 使用生成的 GPU 代码等方式部署训练好的策略近似器。更多信息,请参阅部署训练好的强化学习策略。

        使用强化学习训练 agent 是一个迭代过程。后期阶段的决策和结果可能要求你返回学习工作流程的早期阶段。例如,如果训练过程没有在合理的时间内收敛到最优策略,在重新训练 agent 之前,您可能需要更新以下一些内容:

  • 训练设置
  • 学习算法配置
  • 策略和价值函数(行动者和批评者)近似值
  • 奖励信号定义
  • 行动和观察信号
  • 环境动态

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

        强化学习策略的行为,即该策略如何观察环境并生成行动,从而以最佳方式完成任务,与控制系统中控制器的操作类似。强化学习可以通过以下映射转换为控制系统的表示形式。

Reinforcement Learning

强化学习

Control Systems

控制系统

Policy

策略

Controller

控制器

Environment

环境

Everything that is not the controller — In the preceding diagram, the environment includes the plant, the reference signal, and the calculation of the error. In general, the environment can also include additional elements, such as:

  • Measurement noise

  • Disturbance signals

  • Filters

  • Analog-to-digital and digital-to-analog converters

控制器之外的一切 - 在上图中,环境包括工厂、参考信号和误差计算。一般来说,环境还包括其他元素,例如:

  • 测量噪声
  • 干扰信号
  • 滤波器
  • 模数转换器和数模转换器

Observation

观察

Any measurable value from the environment that is visible to the agent — In the preceding diagram, the controller can see the error signal from the environment. You can also create agents that observe, for example, the reference signal, measurement signal, and measurement signal rate of change.

agent 可以从环境中看到的任何可测量值 - 在上图中,控制器可以从环境中看到误差信号。您还可以创建可观察参考信号、测量信号和测量信号变化率等的 agent。

Action

操作

Manipulated variables or control actions

操纵变量或控制操作

Reward

奖励

Function of the measurement, error signal, or some other performance metric — For example, you can implement reward functions that minimize the steady-state error while minimizing control effort. When control specifications such as cost and constraint functions are available, you can use generateRewardFunction to generate a reward function from an MPC object or model verification blocks. You can then use the generated reward function as a starting point for reward design, for example by changing the weights or penalty functions.

测量、误差信号或其他性能指标的奖励函数 - 例如,您可以执行奖励函数,在最小化控制努力的同时使稳态误差最小化。当成本和约束函数等控制规范可用时,可使用 generateRewardFunction 从 MPC 对象或模型验证模块生成奖励函数。然后,您可以使用生成的奖励函数作为奖励设计的起点,例如通过更改权重或惩罚函数。

Learning Algorithm

学习算法

Adaptation mechanism of an adaptive controller

自适应控制器的适应机制

        机器人和自动驾驶等领域遇到的许多控制问题都需要复杂的非线性控制架构。增益调度、鲁棒控制和非线性模型预测控制 (MPC) 等技术可用于解决这些问题,但通常需要控制工程师具备大量的领域专业知识。例如,增益和参数很难调整。由此产生的控制器会给实施带来挑战,例如非线性 MPC 的计算强度。

        您可以使用强化学习训练的深度神经网络来实现这种复杂的控制器。这些系统可以自学,无需专家控制工程师的干预。此外,一旦系统经过训练,您就能以计算效率高的方式部署强化学习策略。

        您还可以使用强化学习创建端到端控制器,直接从原始数据(如图像)生成动作。这种方法对视频密集型应用(如自动驾驶)很有吸引力,因为您无需手动定义和选择图像特征。

三、强化学习环境

        在强化学习场景中,你要训练 agent 完成一项任务,环境就是 agent 与之交互的外部系统(即世界)的模型。多 agent 环境可同时与多个 agent 进行交互。

        在控制系统应用中,这个外部系统通常被称为被控系统。环境中还包括可能需要由某些环境变量跟踪的任何参考信号。

        agent 和环境在一连串离散时间步中的每一步都会相互作用:

  1. 在给定的时间步长 t,环境处于一种状态 S(t),从而产生观测值 O(t)。根据 O(t)和内部策略函数,agent 计算出一个行动 A(t)。
  2. 基于状态 S(t) 和行动 A(t),并根据其内部动态,环境将其状态更新为 S(t+1),从而产生下一个观测值 O(t+1)。
  3. 根据 S(t)、A(t) 和 S(t+1),环境还会计算出一个标量奖励 R(t+1)。奖励是衡量行动 A(t) 好坏的直接标准。请注意,下一个观测值 O(t+1) 和奖励 R(t+1) 都不取决于下一个行动 A(t+1)。
  4. 在下一个时间步骤 t+1 中,agent 会收到观察结果 O(t+1) 和奖励 R(t+1)。
  5. 根据观察结果和收到的奖励的历史记录,学习算法会更新 agent 的策略参数,试图改进策略函数。参数更新可能发生在每一步,也可能发生在一系列步骤之后。
  6. 根据 O(t+1) 和它的策略函数,agent 计算出下一个行动 A(t+1),并重复这一过程。

        从时间 t=1 开始,用下标表示时间,事件的因果序列(通常也称为轨迹)可概括为 O1、A1、R2、O2、A2。下图也说明了环境与 agent 之间的相互作用,其中虚线表示延迟一步。

        按照惯例,观测数据可分为一个或多个通道,每个通道都包含一组单一元素,这些元素都属于数值(无限连续)集合或有限(离散)集合。每组元素可以按照任意维数(例如矢量或矩阵)进行组织。操作只允许有一个通道;此外,奖励必须是数字标量。有关动作和观察结果规范对象的更多信息,请参阅 rlFiniteSetSpec 和 rlNumericSpec。

3.1 环境对象

        Reinforcement Learning Toolbox™ 使用 MATLAB® 对象表示环境。这些对象使用诸如 step 或 reset 等对象函数(方法)与 agent 进行交互。具体来说,在每次训练或模拟开始时,(训练或模拟函数)都会调用重置函数来设置环境初始条件。然后,在每个训练或模拟时间步长内,调用 step 函数更新环境状态,并返回下一个状态和奖励。

        在 MATLAB 工作区中创建环境对象后,可以从变量中提取观察(observation)和操作规范(action specifications)。然后,您可以使用这些规范创建一个在环境中工作的 agent。然后,您可以使用环境变量和 agent 变量作为内置函数 train 和 sim 的参数,分别在环境中训练或模拟 agent。或者,您也可以创建自定义的训练或模拟循环,直接调用环境重置和步进函数。

        以下章节总结了软件提供的不同环境类型。

3.2 马尔可夫决策过程(MDP)环境

        马尔可夫决策过程环境是指状态和观测都属于有限空间的环境,状态转换一般受随机规则的支配。

        网格世界环境是 MDP 环境的一种特例。在这里,状态代表二维网格中的一个位置,而行动则代表 agent 可能尝试的从当前位置到下一个位置的移动。在许多强化学习入门示例中,经常会用到网格世界环境。

        你可以使用三种类型的 MDP 环境。

  • 预定义网格世界环境

        强化学习工具箱提供了三种预定义的网格世界环境对象类型。对于预定义环境,所有状态、动作和奖励都已定义。您可以使用它们来学习基本的强化学习概念,并熟悉强化学习工具箱的软件功能。有关预定义网格世界环境的介绍,请参阅加载预定义网格世界环境。

  • 自定义网格世界环境

        您可以创建任意大小的自定义网格世界,并自定义奖励、状态转换和障碍物配置。创建自定义网格世界环境后,您就可以像使用预定义环境一样使用它来训练和模拟 agent。

有关自定义网格世界的介绍,请参阅创建自定义网格世界环境。

  • 自定义马尔可夫决策过程 (MDP) 环境

        您还可以通过提供自己的状态和行动集来创建自定义通用 MDP 环境。要创建通用 MDP 环境,请参阅 createMDP 和 rlMDPEnv。

3.3 预定义控制系统环境

        控制系统环境是表示动态系统的环境,其中的状态和观测通常属于无限(不可数)的数值向量空间。在这种环境中,状态转换规律是确定性的,通常是通过对所要建模的底层物理系统的动力学进行离散化推导出来的。请注意,在这些环境中,动作仍然可以属于有限集合。

        强化学习工具箱提供了多个预定义的控制系统环境对象,用于模拟双积分器或小车摆杆系统等动态系统。一般来说,每个预定义环境都有两个版本,一个是离散(有限)动作空间,另一个是连续(无限和不可数)动作空间。

        依赖底层 Simulink® 模型计算状态转换、奖励和观测的环境称为 Simulink 环境。一些预定义的控制系统环境就属于这一类。

        多 agent 环境是指可以一起训练和模拟多个 agent 的环境。一些预定义的控制系统环境就属于多代理环境。

        您可以使用预定义的控制系统环境来学习如何将强化学习应用于物理系统的控制,熟悉强化学习工具箱的软件功能,或者测试自己的 agent。有关预定义控制系统环境的介绍,请参阅加载预定义控制系统环境。

3.4 自定义环境

        您可以创建不同类型的自定义环境。创建自定义环境后,就可以像使用其他环境一样训练和模拟 agent。

        有关在自定义环境中定义奖励和观察信号的关键注意事项,请参阅在自定义环境中定义奖励和观察信号。

        您可以创建三种不同类型的自定义环境。

  • 自定义功能环境

        自定义函数环境依赖于自定义步长和重置 MATLAB 函数(用于计算状态转换、奖励、观察和初始状 态)。

        对于单 agent 环境,一旦您定义了行动和观察规范并编写了自定义步长和重置函数,您就可以使用 rlFunctionEnv 返回一个环境对象,该对象可以以与其他环境相同的方式与您的 agent 进行交互。

        有关自定义函数环境的示例,请参阅使用步进和重置函数创建自定义环境。

        您还可以创建两种不同的自定义多代理函数环境:

  • 具有通用采样时间的多代理环境,其中所有 agent 都在同一步骤中执行。
  • 基于回合的函数环境,其中 agent 轮流执行。具体来说,环境每次只分配给一组 agent 执行,轮到该组 agent 执行时,该组 agent 执行。有关示例,请参阅 "训练 agent 玩回合制游戏"。

        对于这两种多代理环境,观察和行动规范都是规范对象的单元数组,其中每个元素对应一个代理。

        对于具有通用采样时间的自定义多代理功能环境,请使用 rlMultiAgentFunctionEnv 返回环境对象。对于自定义的基于回合的多代理功能环境,请使用 rlTurnBasedFunctionEnv。

要指定在多代理环境中训练 agent 的选项,请创建并配置 rlMultiAgentTrainingOptions 对象。例如,您可以指定是以分散方式还是集中方式训练不同的 agent 组。在一组接受分散培训的 agent 中,每个 agent 都会收集自己的经验集,并从自己的经验集中学习。在接受集中式培训的代理群中,每个代理都会与群中的其他代理分享自己的经验,群中的每个代理都会从集体分享的经验中学习。

        您可以在多代理环境中分别使用 train 和 sim 来训练和模拟代理。您可以使用强化学习训练管理器可视化所有 agent 的训练进度。

  • 自定义模板环境

        自定义模板环境基于修改过的类模板。

        要创建自定义模板环境,需要使用 rlCreateEnvTemplate 打开包含环境模板类的 MATLAB 脚本,然后修改模板,指定环境属性、所需环境函数和可选环境函数。

        虽然这一过程比编写自定义步长和重置函数要复杂得多,但它能让您更灵活地添加应用程序可能需要的属性或方法。例如,您可以编写自定义 plot 方法,以绘制给定时间内环境的可视化表示。

        有关使用模板创建环境的介绍,请参阅从类模板创建自定义环境。

  • 自定义 Simulink 环境

        自定义 Simulink 环境基于您设计的 Simulink 模型。

        您还可以使用 Simulink 设计多代理环境。特别是,Simulink 允许您为具有多速率执行的环境建模,其中每个 agent 可能都有自己的执行速率。

        有关创建自定义 Simulink 环境的介绍,请参阅创建自定义 Simulink 环境。

3.5 神经网络环境

        神经网络环境是依靠神经网络计算状态转换的自定义环境。在这里,状态和观测属于连续空间,状态转换规律可以是确定性的,也可以是随机的。

        神经网络环境可以在基于模型的强化学习 agent(如基于模型的策略优化 (MBPO) agent)中使用。

        有关如何创建神经网络环境的更多信息,请参阅 rlNeuralNetworkEnvironment。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/397964.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

cmake 编译教程

参考链接:cmake使用详细教程(日常使用这一篇就足够了)_cmake教程-CSDN博客 一、只有一个源文件的程序编译 首先在当前目录下创建两个文件 hello.cpp CMakeLists.txt (注意CMakeLists大小写,不要写错了) …

推荐一个优秀的 .NET MAUI 组件库

目录 前言 组件介绍 组件展示 布局 按钮 复选框 进度条 导航栏 组件地址 最后 前言 .NET MAUI 的发布,项目中可以使用这个新的跨平台 UI 框架来轻松搭建的移动和桌面应用。 为了帮助大家更快地构建美观且功能丰富的应用,本文将推荐一款优秀…

AcCode核心思路

文章目录 在线OJ项目核心思路1. 项目介绍2.预备知识理解多进程编程为啥采用多进程而不使用多线程?标准输入&标准输出&标准错误 3.项目实现题目API实现相关实体类定义新增/修改题目获取题目列表 编译运行编译运行流程 4.统一功能处理 在线OJ项目核心思路 1. 项目介绍 …

有序转化数组(LeetCode)

题目 给你一个已经 排好序 的整数数组 和整数 、 、 。对于数组中的每一个元素 ,计算函数值 ,请 按升序返回数组 。 解题 在时间复杂度为解决问题 def sortTransformedArray(nums, a, b, c):def f(x):return a * x * x b * x cn len(nums)result…

4个从阿里毕业的P7打工人,当起了包子铺的老板

吉祥知识星球http://mp.weixin.qq.com/s?__bizMzkwNjY1Mzc0Nw&mid2247483727&idx1&sndb05d8c1115a4539716eddd9fde4e5c9&chksmc0e47813f793f105017fb8551c9b996dc7782987e19efb166ab665f44ca6d900210e6c4c0281&scene21#wechat_redirect 《网安面试指南》h…

学生公寓电费信息管理小程序的设计

管理员账户功能包括:系统首页,个人中心,公寓管理员管理,学生管理,楼层信息管理,用电情况管理,缴费清单管理,系统管理 微信端账号功能包括:系统首页,用电情况…

【数据结构】六、图:4.图的遍历(深度优先算法DFS、广度优先算法BFS)

三、基本操作 文章目录 三、基本操作1.图的遍历1.1 深度优先遍历DFS1.1.1 DFS算法1.1.2 DFS算法的性能分析1.1.3 深度优先的生成树和生成森林 1.2 广度优先遍历BFS1.2.1 BFS算法1.2.2 BFS算法性能分析1.2.3 广度优先的生成树和生成森林 1.3 图的遍历与图的连通性 1.图的遍历 图…

Nginx系列-Nginx Location匹配规则

文章目录 Nginx系列-Nginx Location匹配规则1. 语法基础2. 匹配规则2.1 精确匹配()2.2. 最长前缀匹配(^~)2.3. 正则表达式匹配(~和~*)2.4. 普通前缀匹配(无修饰符)2.5. 默认匹配&…

贷齐乐hpp+php特性注入

文章目录 运行过程waf第一层waf拦截第二层waf拦截 数据库查询语句注入思路注入 运行过程 foreach ($_REQUEST as $key > $value) {$_REQUEST[$key] dowith_sql($value);}$request_uri explode("?", $_SERVER[REQUEST_URI]);if (isset($request_uri[1])) {$rewr…

OpenGL3.3_C++_Windows(34)

demo 1 Fresnel-Schlick PBR直接光源 顾名思义:直接光源指有光源直接照射到点p 的辐射强度,由于一个光源只会有一个光线wi影响点p,所以和之前的计算没什么差异对于影响p的光源,并不需要积分计算半球形辐照度,遍历每个…

redis面试(十)锁释放

自动释放 首先锁的释放分为两种,一种是自动释放,加入说加锁的线程宕机了不在了,我们之前说过这个。 那这个线程中的对redis这个锁不断刷新过期时间的看门狗逻辑就没有了,所以这个锁最多等待30s的时间就会自动过期删除&#xff0c…

为什么选择在Facebook投放广告?

2024年了你还没对 Facebook 广告产生兴趣?那你可就亏大了! 今天这篇文章,我们会分享它对你扩大业务的好处。要知道,Facebook 广告凭借它庞大的用户群和先进的定位选项,已经是企业主们有效接触目标受众的必备神器。接下…

【uniapp】uniapp+vue2微信小程序实现分享功能

uniappvue2做的微信小程序实现分享功能 问题描述 uniappvue2做的微信小程序,发布以后点击右上角三个点,分享小程序的时候,转发和分享按钮都是灰色 解决方案 转发、分享、复制链接这几个功能需要自己来手动写方法,考虑到每个页…

Unity入门3——脚本入门

本文使用的代码编辑器为VSCode 安装接口有: 通过将变量设置为public,可以直接在unity的Inspector面板中看到相关变量。此时可直接将需要的素材拖拽到变量处。 [SerializeField]可序列化:定义后可以使非公共的属性也显示在unity面板 [Range]…

搜维尔科技:【研究】大屏幕沉浸式系统的优势,视觉冲击强、‌分辨率高、‌画面层次感强以及沉浸式交互性体验好等!

大屏幕沉浸式系统的优势主要体现在视觉冲击强、‌分辨率高、‌画面层次感强以及沉浸式交互性体验好。‌ 视觉冲击强:‌大屏幕沉浸式系统通过使用多台投影机投射画面,‌结合高质量影片,‌营造出场景环境,‌通过视觉艺术直击体验者…

js 深入理解原型(prototype)及如何创建对象

目录 1. 概述2. 工厂模式3. 构造函数模式3.1 创建的格式3.2 JS内部执行步骤3.3 constructor 构造器3.4 构造函数也是函数3.5 构造函数的问题 4. 原型模式 prototype4.1 理解原型本质4.2 原型层级(访问一个属性,查询的次序)4.2.1 查询次序:实例…

SeaTunnel 实战: Apache SeaTunnel 安装与部署

文章目录 一、准备工作1.1 环境1.2 下载 二、SeaTunnel安装2.1 解压安装包2.2.配置环境变量2.3.配置立刻生效2.4 下载SeaTunnel相关jar包2.5 测试验证2.6 启动服务 三、SeaTunnel Web 1.0.1安装3.1 将下载的压缩包解压缩到指定目录下3.2 设置 SeaTunnel Web 环境变量3.3 初始化…

pythonUI自动化008::allure测试报告(安装及应用)

allure报告预览 1 下载jdk,配置jdk Path变量: https://www.cnblogs.com/FBGG/p/15103119.html(这里不作阐述,请看该偏文章配置即可) 2 下载allure驱动,配置allure Path变量: 下载allure驱动&a…

【免费】最新区块链钱包和私钥的助记词碰撞器,bybit使用python开发

使用要求 1、用的是google里面的扩展打包成crx文件,所以在使用之前你需要确保自己电脑上有google浏览器,而且google浏览器版本需要在124之上。(要注意一下,就是电脑只能有一个Chrome浏览器) 2、在win10上用vscode开发…

锂电池剩余寿命预测 | Matlab基于Transformer-GRU的锂电池剩余寿命预测

目录 预测效果基本介绍程序设计参考资料 预测效果 基本介绍 Matlab基于Transformer-GRU的锂电池剩余寿命预测,Transformer结合门控循环单元。 Matlab基于Transformer-GRU的锂电池剩余寿命预测(单变量) 运行环境Matlab2023b及以上。 首先从…