强化学习

什么是强化学习?

你需要知道三件事

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

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

为什么强化学习很重要

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

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

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

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

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

面板的导航

强化学习应用的例子

深层神经网络经过强化学习的训练可以编码复杂的行为。这就为应用程序提供了一种替代方法,以解决传统方法难以处理或更具挑战性的问题。例如,在自动驾驶中,一个神经网络可以代替驾驶员,并通过同时查看相机帧和激光雷达测量。如果没有神经网络,问题通常会被分解成更小的部分,比如从相机帧中提取特征,过滤激光雷达测量值,融合传感器输出以及根据传感器输入做出“驾驶”决定。

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

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

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

机器人强化学习可以帮助机器人抓取等应用,比如教机械臂如何操作各种物体拾起并定位应用程序.其他机器人技术应用包括人-机器人和机器人-机器人合作

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

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

强化学习是如何起作用的

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

图2。强化学习在狗的训练。

图2。强化学习在狗的训练。

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

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

图3。自动停车强化学习。

图3。自动停车强化学习。

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

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

强化学习工作流程

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

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

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

1.创建环境

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

2.定义了奖励

接下来,指定代理用来根据任务目标衡量其性能的奖励信号,以及如何从环境计算该信号。奖励的塑造可能很棘手,可能需要多次迭代才能得到正确的效果。

3.创建代理

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

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

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

4.培训和验证代理

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

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

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

5.部署策略

例如,使用生成的C/ c++或CUDA代码部署训练过的策略表示。在这一点上,政策是一个独立的决策系统。

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

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

用MATLAB和Simulink进行强化学习

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

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

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

图6使用强化学习工具箱™教两足机器人走路

图6使用强化学习工具箱™教两足机器人走路

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

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

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

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

开始快

强化学习斜坡弯道

从控制问题的强化学习方法开始。

Baidu
map