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