强化学习

什么是强化学习?

你需要知道三件事

强化学习是一种机器学习技术,计算机代理通过与动态环境的反复试验和错误交互来学习执行任务。这种学习方法使代理能够做出一系列决策,使任务的奖励指标最大化,而不需要人工干预,也不需要被明确地编程来完成任务。

经过强化学习训练的人工智能程序在围棋、国际象棋等棋类游戏以及电子游戏中击败了人类玩家。虽然强化学习并不是一个新概念,但最近深度学习和计算能力的进步使人工智能领域取得一些显著成果成为可能。

为什么强化学习很重要

强化学习、机器学习和深度学习

强化学习是机器学习的一个分支(图1)。与无监督和有监督的机器学习不同,强化学习不依赖于静态数据集,而是在动态环境中运行,并从收集的经验中学习。在培训过程中,通过环境和软件代理之间的试错交互收集数据点或经验。强化学习的这一方面是重要的,因为它减轻了在训练前对数据收集、预处理和标记的需要,否则在监督和非监督学习中是必要的。实际上,这意味着,在适当的激励下,强化学习模型可以在没有(人类)监督的情况下开始学习行为。

深度学习涵盖了所有三种机器学习类型;强化学习和深度学习并不相互排斥。复杂的强化学习问题往往依赖于深度神经网络,这一领域被称为深度强化学习。

图1所示。机器学习的三大类:无监督学习,监督学习和强化学习。

强化学习应用的例子

深层神经网络有钢筋学习培训可以编码复杂的行为。这允许替代方法对否则难以应变或更具挑战来解决更传统的方法的应用。例如,在自动驾驶中,神经网络可以通过同时查看诸如相机帧和激光雷达测量的多个传感器来决定如何通过同时查看转向轮。没有神经网络,问题通常会在较小的块中分解,如从相机帧中提取特征,过滤激光雷达测量,融合传感器输出,并根据传感器输入做出“驾驶”决定。

虽然强化学习作为一种方法在生产系统中仍处于评估阶段,但一些工业应用是这种技术的良好候选者。

先进的控制:控制非线性系统是一个具有挑战性的问题,通常通过在不同的操作点线性化系统来解决。增强学习可以直接应用于非线性系统。

自动驾驶考虑到深度神经网络在图像应用中的成功,基于相机输入做出驾驶决策是一个适合强化学习的领域。

机器人强化学习可以在机器人抓取等应用上有所帮助,比如教机械手臂如何操作各种各样的物体,用于取物和放置的应用。其他的机器人应用包括人-机器人和机器人-机器人协作。

调度:调度问题出现在许多场景中,包括交通灯控制和协调工厂车间的资源以实现某些目标。强化学习是解决这些组合优化问题的一种很好的替代进化方法。

校准:涉及参数手动校准的应用,如电子控制单元(ECU)校准,可能是加强学习的良好候选。

强化学习方式如何

强化学习背后的训练机制反映了许多现实世界的场景。例如,考虑通过积极的强化来训练宠物。

图2.狗训练中的加强学习。

使用强化学习术语(图2),在这种情况下,学习的目标是训练狗(代理)在一个环境中完成一项任务,其中包括狗和训练者的环境。首先,训犬者发出命令或提示,狗会观察(观察)。然后狗会采取行动作为回应。如果动作接近期望的行为,训练者可能会提供奖励,如食物或玩具;否则,将不提供任何奖励。在训练开始时,狗狗可能会采取更多随机行动,比如当命令是“坐下”时,狗狗会翻身,因为它试图将具体的观察结果与行动和奖励联系起来。观察和操作之间的这种关联或映射称为策略。从狗的角度来看,理想的情况是它能对每一条线索做出正确的反应,这样它就能得到尽可能多的款待。因此,强化学习训练的全部意义就是“调整”狗的政策,使它学习到期望的行为,从而使某些奖励最大化。训练完成后,狗狗应该能够观察主人并采取适当的行动,例如,根据狗狗制定的内部政策,当主人命令狗狗“坐下”时,狗狗应该坐下。 By this point, treats are welcome but, theoretically, shouldn’t be necessary.

记住狗训练的例子,考虑使用自动驾驶系统停车的任务(图3)。目标是通过强化学习教会车辆计算机(代理)在正确的停车位停车。就像在训练狗的情况下,环境是agent之外的一切,可能包括车辆的动力学,附近的其他车辆,天气条件,等等。在训练期间,代理使用来自传感器的读数,如摄像机、GPS和激光雷达(观察),以产生转向、刹车和加速命令(行动)。为了了解如何从观察(策略调优)生成正确的操作,代理使用试错过程反复尝试泊车。可以提供奖励信号来评估试验的好坏,并指导学习过程。

图3。强化自主停车的学习。

在狗训练的例子中,训练是在狗的大脑内部进行的。在自动停车的例子中,训练是由训练算法来处理的。训练算法负责根据收集的传感器读数、动作和奖励调整代理的策略。训练完成后,车辆的计算机应该能够仅使用调整后的政策和传感器读数停车。

需要记住的一件事是,强化学习不是样本效率。也就是说,它需要agent和环境之间进行大量的交互来收集训练所需的数据。例如,AlphaGo,第一个在围棋比赛中击败世界冠军的计算机程序,经过几天不间断的训练,下了数百万盘棋,积累了几千年的人类知识。即使是相对简单的应用,训练时间也可能从几分钟到几小时或几天不等。此外,正确设置问题可能是具有挑战性的,因为需要做出一系列设计决策,这可能需要几次迭代才能实现。这包括,例如,为神经网络选择合适的架构,调整超参数,以及塑造奖励信号。

强化学习工作流程

使用强化学习训练agent的一般工作流包括以下步骤(图4):

图4。强化学习工作流程。

1.创建环境

首先,您需要定义强化学习代理操作的环境,包括代理与环境之间的接口。环境可以是仿真模型,也可以是真实的物理系统,但模拟环境通常是很好的第一步,因为它们更安全,允许进行实验。

2.定义奖励

接下来,指定代理用于根据任务目标度量其性能的奖励信号,以及如何从环境中计算这个信号。奖励的塑造是很棘手的,可能需要几次迭代才能完成。

3.创建代理

然后创建agent,它由策略和强化学习训练算法组成。所以你需要:

a)选择一种表示策略的方法(例如使用神经网络或查找表)。

b)选择合适的训练算法。不同的表示通常与特定类别的训练算法相关联。但一般来说,大多数现代强化学习算法依赖于神经网络,因为它们是大型状态/动作空间和复杂问题的良好候选对象。

4.培训和验证代理商

设置培训选项(如停止条件)并培训代理调优策略。确保培训结束后验证培训政策。如果有必要,可以重新考虑奖励信号和政策架构等设计选择,并再次进行培训。强化学习通常被认为是样本低效的;根据应用程序的不同,培训时间从几分钟到几天不等。对于复杂的应用程序,在多个cpu、gpu和计算机集群上进行并行训练可以提高速度(图5)。

图5。并行计算下的训练样本低效学习问题。

5.部署策略

使用例如生成的C / C ++或CUDA代码部署训练策略表示。此时,该政策是独立的决策系统。

利用强化学习训练agent是一个迭代过程。后期阶段的决策和结果可能需要您返回到学习工作流的早期阶段。例如,如果培训过程在合理的时间内没有收敛到最优策略,那么在对代理进行再培训之前,您可能必须更新以下任何一项:

  • 培训设置
  • 强化学习算法配置
  • 政策表示
  • 奖励的信号定义
  • 动作和观测信号
  • 环境动态

强化学习与MATLAB和Simulink万博1manbetx

MATLAB®强化学习工具箱™简化强化学习任务。通过强化学习工作流的每个步骤,您可以为复杂系统(如机器人和自主系统)实现控制器和决策算法。具体地说,您可以:

1.使用MATLAB和Simulink创建环境和奖励函数万博1manbetx®

2.使用深度神经网络、多项式和查找表来定义强化学习策略

图6教授一款双层机器人与钢筋学习工具箱™一起行走

3.切换、评估和比较流行的强化学习算法,如DQN、DDPG、PPO和SAC,只需要少量的代码更改,或创建您自己的自定义算法

4.使用并行计算工具箱™MATLAB并行服务器™利用多个gpu、多个cpu、计算机集群和云资源,更快地培训强化学习策略

5.使用MATLAB Coder™和GPU Coder™生成代码并将强化学习策略部署到嵌入式设备

6.开始使用强化学习参考例子

开始快

加固学习ondramp.

开始使用强化学习方法来解决控制问题。