一文入门 深度强化学习

Python与算法社区

共 3681字,需浏览 8分钟

 · 2021-10-22

深度强化学习是人工智能最有趣的分支之一。它是人工智能社区许多显着成就的基石,它在棋盘、视频游戏、自动驾驶、机器人硬件设计等领域击败了人类冠军。
深度强化学习利用深度神经网络的学习能力,可以解决对于经典强化学习(RL)技术来说过于复杂的问题。深度强化学习比机器学习的其他分支要复杂得多。在这篇文章中,我们将尝试在不涉及技术细节的情况下,揭开它的神秘面纱。

状态、奖励和行动

每个强化学习问题的核心都是代理和环境。环境提供有关系统状态的信息。代理观察这些状态并通过采取行动与环境交互。动作可以是离散的(例如,拨动开关)或连续的(例如,转动旋钮)。这些操作会使环境转换到新状态。根据新状态与系统目标相关性的大小,代理会收到不同程度的奖励(如果它使代理远离其目标,则奖励也可以为零或负)。

「状态-动作-奖励」的每个循环都称为一个步骤。强化学习系统持续循环迭代,直到达到所需状态或达到最大步数。这一系列的步骤称为一个「情节」或者「集」。在每一个情节开始时,环境设置为初始状态,代理的奖励重置为零。

强化学习的目标是训练智能体采取行动,以最大化其回报。代理的行动功能称为策略。一个代理通常需要很多情节来学习一个好的策略。对于更简单的问题,几百个情节可能足以让代理学习到一个体面的策略。而对于更复杂的问题,代理可能需要数百万次训练。
强化学习系统有更微妙的细微差别。例如,RL 环境可以是确定性的或非确定性的。在确定性环境中,多次运行一系列「状态-动作对」总是会产生相同的结果。相比之下,在非确定性 RL 问题中,环境状态可能会因代理行为以外的事物(例如,时间的流逝、天气、环境中的其他代理)而发生变化。
强化学习应用

为了更好地理解强化学习的组成部分,让我们考虑几个例子。

Chess:这里的环境是棋盘,环境的状态是棋子在棋盘上的位置;RL 代理可以是参与者之一(或者,两个参与者都可以是 RL 代理,在同一环境中分别训练);一盘棋局则是一集。这一集从初始状态开始,黑板和白板的边缘排列着黑色和白色的棋子。在每一步,代理观察棋盘(状态)并移动其中的一部分(采取行动),从而将环境转换为新状态。代理会因棋局中使对手变为「将死状态」而获得奖励,否则将获得零奖励。智能体在将对手「将死」之前不会获得任何奖励,这使得它很难学习;这是国际象棋对 AI 来说主要的挑战之一。
Atari Breakout:Breakout 是一款玩家控制球拍的游戏。有一个球在屏幕上移动,每次被球拍击中,它都会弹向屏幕顶部,那里排列着一排排的砖块。每次球碰到砖块时,砖块都会被破坏,球会反弹回来。在 Breakout 中,环境是游戏屏幕。状态是球拍和砖块的位置,以及球的位置和速度。代理可以采取的行动是向左移动、向右移动。每次球击中砖块时,代理都会收到正奖励,如果球越过球拍并到达屏幕底部,则代理会收到负奖励。
自动驾驶汽车:在自动驾驶中,代理就是汽车,环境就是汽车行驶的世界。RL 代理通过摄像头、激光雷达以及其他传感器观察环境状态。代理可以执行导航操作,例如加速、刹车、左转、右转或维持现状。RL 代理因使汽车保持在道路上、避免碰撞,且遵守驾驶规则和保证路线正确,而获得奖励。
强化学习功能
强化学习的目标是用最大化奖励的方式,将状态映射到动作。但是 RL 代理究竟学习了什么?
RL 系统的学习算法分为三类:
基于策略的算法:这是最通用的优化类型。策略将状态映射到操作。学习策略的 RL 代理可以创建从当前状态到目标状态的动作轨迹。
假设一个正在通过优化策略来导航走出迷宫的代理。首先,它进行随机移动,但不会收到任何奖励;只有它最终到达出口时,才会获得出口奖励。它回溯其轨迹并根据代理与最终目标的接近程度重新调整每个状态-动作对的奖励。在下一集中,RL 代理进一步理解给定每个状态需对应采取哪些行动;它逐渐调整策略,直到收敛到最优解。
REINFORCE 是一种基于策略的算法。基于策略的算法,优势在于它们可以应用于各种强化学习问题;但是其样本效率很低,需要大量训练才能收敛得到最佳解决方案。
基于值的算法:基于值的函数学习评估状态和动作的值。基于值的函数可帮助 RL 代理评估当前状态与动作的预期回报。
基于值的函数有两种变体:Q 值和 V 值。Q 函数估计状态-动作对的预期回报。V 函数仅估计状态的值。Q 函数更容易将状态-动作对转换为 RL 策略,所以更常见一些。
SARSA 和 DQN 是两种基于价值的算法。基于值的算法比基于策略的 RL 具有更高的样本效率。它们也存在局限性,就是它们仅适用于离散的动作空间(除非你对它们进行一些更改)。
基于模型的算法:基于模型的算法采用不同的方法进行强化学习。他们不是评估状态和动作的价值;而是尝试,在给定当前状态和动作的情况下,预测环境的状态。基于模型的强化学习允许代理在采取任何行动之前,预先模拟不同的轨迹。

基于模型的方法为代理提供了「远见」,减小了对手动收集数据的依赖。这在收集训练数据和经验,既昂贵又缓慢的应用中非常有利(例如,机器人和自动驾驶汽车)。

对于基于模型的强化学习来说,创建真实的环境模型可能非常困难,这可能是这类方法的主要挑战。非确定性环境(例如现实世界)很难建模;在某些情况下,开发人员设法创建接近真实环境的模拟;但即使是学习这些模拟环境的模型,也非常困难。
尽管如此,基于模型的算法已经在诸如国际象棋和围棋等确定性问题中广泛应用。蒙特卡罗树搜索 (MTCS) 是一种比较流行的基于模型的方法,可应用于确定性环境。
组合方法:为了克服各类强化学习算法的缺点,科学家们开发了组合算法,这类算法包含了不同类型学习函数的元素。例如,Actor-Critic 算法结合了基于策略和基于值的函数的优点。这些算法使用来自价值函数(好比,评论家)的反馈来引导策略学习者(好比,演员)朝着正确的方向前进,从而产生更高效的系统。
为什么是深度强化学习?

到目前为止,我们还没有谈到深度神经网络。事实上,你可以以任何你想要的方式实现上述所有算法。例如,Q-learning 是一种经典的强化学习算法,它在代理与环境交互时创建了一个状态-动作-奖励值表。当你处理状态和操作数量非常少的简单环境时,此类方法非常有效。

但是,当你处理一个复杂的环境时,其中动作和状态的组合数量可能非常巨大,或者环境是不确定的,并且可能存在的状态几乎是无限的;这时,评估每个可能的状态-动作对就变得不可能了。
在这种情况下,你需要一个近似函数,它可以根据有限的数据学习归纳出最佳策略。给定正确的架构和优化函数,深度神经网络可以直接学习最优策略,而无需遍历系统的所有可能状态。深度强化学习代理仍然需要大量数据(例如,在 Dota 和星际争霸中进行数千小时的游戏),但它们可以解决经典强化学习系统无法解决的问题。
比如,深度强化学习模型可以使用卷积神经网络,从视觉数据中提取状态信息。循环神经网络可以从帧序列中提取有用的信息,例如球的朝向,或者汽车是否停放或移动。这种复杂的学习能力,可以帮助 RL 代理理解更复杂的环境,并将其状态映射到动作。
深度强化学习可与监督机器学习相媲美。该模型生成动作,并根据来自环境的反馈调整其参数。然而,不同于传统的监督学习,深度强化学习会面临一些独特的挑战。
与模型具有一组标记数据的监督学习问题不同,RL 代理只能访问其自身经验的结果。它能够根据在不同训练阶段收集的经验来学习最佳策略;但它也可能错过许多其他获得更好政策的最佳轨迹。强化学习还需要评估状态-动作对的轨迹;这比监督学习所要面对的,每个训练示例与其预期结果配对问题更难学习。
这种复杂性增加了深度强化学习模型的数据要求。但与监督学习不同,深度强化学习模型在训练期间收集数据,而监督学习需要人工提前策划和准备训练数据。
深度强化学习和通用人工智能
AI 社区对深度强化学习的发展方向存在分歧。一些科学家认为,使用正确的 RL 架构,可以解决任何类型的问题,包括通用人工智能。这些科学家相信,强化学习与产生自然智能的算法相同,如果有足够的时间和精力,并配备适当的奖励,我们可以重建人类级别的智能。
其他人则认为强化学习并没有解决人工智能的一些最基本的问题。他们认为,尽管取得了许多成就,但深度强化学习代理需要明确定义问题;并且它无法自行发现新问题,更没办法提出针对新问题提出解决方案。
无论如何,不可否认的是,深度强化学习已经帮助解决了许多非常复杂的问题,并且将继续成为 AI 社区的重要研究领域。
相关报道:https://venturebeat.com/2021/09/04/demystifying-deep-reinforcement-learning/

扫码关注我的视频号:程序员zhenguo

浏览 59
点赞
评论
收藏
分享

手机扫一扫分享

举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

举报