强化学习是一种机器学习技术,计算机代理通过与动态环境的反复试验和错误交互来学习执行任务。这种学习方法使代理能够做出一系列决策,使任务的奖励指标最大化,而不需要人工干预,也不需要被明确地编程来完成任务。
经过强化学习训练的人工智能程序在围棋、国际象棋等棋类游戏以及电子游戏中击败了人类玩家。虽然强化学习并不是一个新概念,但最近深度学习和计算能力的进步使人工智能领域取得一些显著成果成为可能。
强化学习是机器学习的分支(图1)。与无监督和监督机器学习不同,加固学习不依赖于静态数据集,但在动态环境中运营并从收集的体验中学习。在培训期间通过环境和软件代理之间的试验和错误交互收集数据点或经验。强化学习的这一方面很重要,因为它减轻了在培训前需要进行数据收集,预处理和标签,否则有必要的监督和无监督的学习。实际上,这意味着,鉴于正确的激励,强化学习模型可以自行开始学习行为,没有(人类)监督。
深度学习涵盖了所有三种机器学习类型;强化学习和深度学习并不相互排斥。复杂的强化学习问题往往依赖于深度神经网络,这一领域被称为深度强化学习。
深层神经网络强化学习训练可以编码复杂的行为。这就为应用程序提供了一种替代方法,这些应用程序在其他情况下难以处理,或者用更传统的方法处理更具挑战性。例如,在自动驾驶中,神经网络可以取代驾驶员,通过同时观察多个传感器(如相机框架和激光雷达测量)来决定如何转动方向盘。如果没有神经网络,问题通常会被分解成更小的部分,比如从相机帧中提取特征,过滤激光雷达测量数据,融合传感器输出,并根据传感器输入做出“驾驶”决定。
虽然加强作为一种方法的加固学习仍处于生产系统的评估,但一些工业应用是这项技术的良好候选人。
先进的控制:控制非线性系统是一个具有挑战性的问题,通常通过在不同的操作点对系统进行线性化来解决。强化学习可以直接应用于非线性系统。
自动驾驶考虑到深度神经网络在图像应用中的成功,基于相机输入做出驾驶决策是一个适合强化学习的领域。
机器人:加固学习可以帮助掌控抓地的应用程序,例如教授机器人手臂如何操纵各种对象进行拾取和放置应用。其他机器人应用包括人机和机器人机器人协作。
安排:调度问题出现在许多场景中,包括交通灯控制和工厂楼层的协调资源,朝着一些目标。强化学习是解决这些组合优化问题的进化方法的良好替代方法。
校准:涉及手动校准参数的应用,例如电子控制单元(ECU)校准,可以是增强学习的好候选者。
强化学习背后的训练机制反映了许多现实世界的场景。例如,考虑通过积极的强化来训练宠物。
使用强化学习术语(图2),在这种情况下,学习的目标是训练狗(代理)在一个环境中完成一项任务,其中包括狗和训练者的环境。首先,训犬者发出命令或提示,狗会观察(观察)。然后狗会采取行动作为回应。如果动作接近期望的行为,训练者可能会提供奖励,如食物或玩具;否则,将不提供任何奖励。在训练开始时,狗狗可能会采取更多随机行动,比如当命令是“坐下”时,狗狗会翻身,因为它试图将具体的观察结果与行动和奖励联系起来。观察和操作之间的这种关联或映射称为策略。从狗的角度来看,理想的情况是它能对每一条线索做出正确的反应,这样它就能得到尽可能多的款待。因此,强化学习训练的全部意义就是“调整”狗的政策,使它学习到期望的行为,从而使某些奖励最大化。训练完成后,狗狗应该能够观察主人并采取适当的行动,例如,根据狗狗制定的内部政策,当主人命令狗狗“坐下”时,狗狗应该坐下。 By this point, treats are welcome but, theoretically, shouldn’t be necessary.
请记住狗训练示例,考虑使用自动化驱动系统停放车辆的任务(图3)。目标是用加强学习教授车辆计算机(代理)停放在正确的停车位。与狗训练箱一样,环境是代理以外的一切,并且可以包括车辆的动态,可能在附近的其他车辆,天气条件等。在培训期间,代理使用来自传感器的读数,例如摄像机,GPS和LIDAR(观察)以产生转向,制动和加速命令(动作)。要了解如何生成从观察(策略调整)的正确操作(策略调整),代理反复尝试使用试验和错误过程停止车辆。可以提供奖励信号来评估试验的善良并指导学习过程。
在狗训练的例子中,训练是在狗的大脑内部进行的。在自动停车的例子中,训练是由训练算法来处理的。训练算法负责根据收集的传感器读数、动作和奖励调整代理的策略。训练完成后,车辆的计算机应该能够仅使用调整后的政策和传感器读数停车。
需要记住的一件事是,强化学习不是样本效率。也就是说,它需要agent和环境之间进行大量的交互来收集训练所需的数据。例如,AlphaGo,第一个在围棋比赛中击败世界冠军的计算机程序,经过几天不间断的训练,下了数百万盘棋,积累了几千年的人类知识。即使是相对简单的应用,训练时间也可能从几分钟到几小时或几天不等。此外,正确设置问题可能是具有挑战性的,因为需要做出一系列设计决策,这可能需要几次迭代才能实现。这包括,例如,为神经网络选择合适的架构,调整超参数,以及塑造奖励信号。
使用强化学习训练agent的一般工作流包括以下步骤(图4):
首先,您需要定义强化学习代理操作的环境,包括代理与环境之间的接口。环境可以是仿真模型,也可以是真实的物理系统,但模拟环境通常是很好的第一步,因为它们更安全,允许进行实验。
接下来,指定代理用于根据任务目标度量其性能的奖励信号,以及如何从环境中计算这个信号。奖励的塑造是很棘手的,可能需要几次迭代才能完成。
然后您创建代理,该代理包括策略和强化学习训练算法。所以你需要:
a)选择一种表示策略的方法(例如使用神经网络或查找表)。
b)选择合适的训练算法。不同的表示通常与特定类别的训练算法相关联。但一般来说,大多数现代强化学习算法依赖于神经网络,因为它们是大型状态/动作空间和复杂问题的良好候选对象。
设置培训选项(如停止标准)并培训代理商调整政策。确保在培训结束后验证培训的策略。如有必要,请重新审视设计选择,如奖励信号和政策架构和培训。众所周知,增强学习是样本效率;培训可以在几分钟到几天,具体取决于申请。对于复杂的应用程序,在多个CPU,GPU和计算机集群上并行化培训将速度速度(图5)。
例如,使用生成的C/ c++或CUDA代码部署训练过的策略表示。在这一点上,政策是一个独立的决策系统。
利用强化学习训练agent是一个迭代过程。后期阶段的决策和结果可能需要您返回到学习工作流的早期阶段。例如,如果培训过程在合理的时间内没有收敛到最优策略,那么在对代理进行再培训之前,您可能必须更新以下任何一项:
MATLAB®和强化学习工具箱™简化强化学习任务。通过强化学习工作流的每个步骤,您可以为复杂系统(如机器人和自主系统)实现控制器和决策算法。具体地说,您可以:
1.使用MATLAB和Simulink创建环境和奖励函数万博1manbetx®
2.使用深神经网络,多项式和查找表来定义强化学习策略
3.切换、评估和比较流行的强化学习算法,如DQN、DDPG、PPO和SAC,只需要少量的代码更改,或创建您自己的自定义算法
4.使用并行计算工具箱™和MATLAB并行服务器™利用多个gpu、多个cpu、计算机集群和云资源,更快地培训强化学习策略
5.使用MATLAB Coder™和GPU Coder™生成代码并将强化学习策略部署到嵌入式设备
6.使用加强学习开始使用参考例子。