Python强化学习实战之“强化学习的应用”

Python强化学习实战之“强化学习的应用”,第1张

概述强化学习导论阅读过我以前的著作——IntroductiontoDeepLearningUsingR(Apress,2018)和AppliedNaturalLearningUsingPython(Apress,2017)的读者,很荣幸你们能够再次成为我的读者。新读者,欢迎你们!在过去的几年里,深度学习软件包和相关技术持续不断地涌现和发展,推动了许多

强化学习导论

阅读过我以前的著作—— Introduction to Deep Learning Using R(Apress,2018)和ApplIEd Natural Learning Using Python (Apress,2017)的读者,很荣幸你们能够再次成为我的读者。新读者,欢迎你们!在过去的几年里,深度学习软件包和相关技术持续不断地涌现和发展,推动了许多行业发生革命性的变化。毫无疑问,强化学习(Reinforcement Learning,RL)是该领域最引人注目的篇章之一。本质上,强化学习是众多AI技术的应用,例如能够学习如何玩电子游戏或下棋的软件。强化学习的优点在于,假设问题可以建模为包含动作、环境、agent的框架,则agent可以自行通晓各种任务。问题可以覆盖从破解简单的游戏到更复杂的3D游戏,再到教授无人驾驶汽车如何在不同的地点接送乘客,以及教授机械臂如何抓取物品并将它们放在厨房柜台之上。

训练良好并部署的强化学习算法意义显著,因为它们追求将人工智能技术应用到更广阔的领域,而不只是我之前著作中提到的一些狭义的AI应用场景。算法不再只是简单地预测一个目标或标记,而是 *** 纵环境中的agent,这些agent具有一组动作集,可选择其中

的动作以实现目标/奖励。一些公司和机构投入大量的时间研究强化学习技术,如Deep Mind和OpenAI,它们在该领域取得了一些领先的解决方案突破。首先,让我们简要概述该领域的发展史。

1强化学习的发展史

在某种意义上讲,强化学习是最优控制(optimal control)的重塑,而最优控制是从控制理论扩展而来的概念。最优控制起源于20世纪50—60年代,当时它被用来描述一类问题,即人们试图达到某种“最佳”标准以及达到这一标准需要的“控制”法则。通常,将最优控制定义为一组微分方程。这些方程定义了一条使得误差函数最小化的路径。最优控制的核心理论由理查德·贝尔曼(Richard Bellman)所做的工作推向顶峰,尤其是他提出的动态规划(dynamic programming)方法。动态规划是20世纪50年代提出的一种优化方法,强调通过将大问题分解为更小且更易于解决的小问题来求解。动态规划被认为是解决随机最优控制问题的唯一可行方法,更一般意义上,最优控制方法通常都属于强化学习范畴。

贝尔曼对最优控制的最著名贡献是哈密尔顿-雅可比-贝尔曼方程(Hamilton-Jacobi-Bellman equation,HJB方程)。HJB方程如下:

其中(,)Vxt是V关于时间变量t的偏导数。“·”表示点乘,(,)Vxt为贝尔曼价值函数(未知标量),代表系统从时间t处的状态x开始,按照最优方式控制,直到时间T时的成本,C为标量成本速率函数,D为最终效用状态函数,x(t)为系统状态向量,x(0)假设已知,其中0≤t≤T。

该方程得出的解是价值函数或者是给定动态系统的最小成本。

HJB方程是解决最优控制问题的经典方法。此外,动态规划通常是解决随机最优控制问题的唯一可行方式或方法。马尔可夫决策过程(Markov Decision Process,MDP)是此类问题之一,研究动态规划方法正是为了帮助求解它们。

 MDP及其与强化学习的关系

我们将MDP描述为离散时间随机控制过程。具体来说,将离散时间随机过程定义为下标变量是一组离散或特殊的值(相对于连续值来说)的随机过程。MDP特别适用于结果受过程中参与者影响且过程也表现出一定程度随机性的应用环境。MDP和动态规划因此成为强化学习理论的基础。

简而言之,基于马尔可夫特性,我们假设未来只与现在有关,而与过去无关。此外,如果一个状态对未来的描述与我们具有的所有历史信息相同时,则认为该状态是充分的。从本质上讲,这意味着当前状态是唯一与之相关的信息,不再需要所有历史信息。从数学上讲,一个状态具有马尔可夫特性,当且仅当

马尔可夫过程本身被认为是无记忆的,因为它们是状态间的随机转移。进一步,我们认为它们是状态空间S上的元组(S, P),其中状态通过转移函数P进行变更,转移函数定义如下。

其中s表示马尔可夫状态,St表示下一状态。

该转移函数描述了一种概率分布,其中分布是agent可转移到的所有可能状态。最后,从一种状态转移为另一种状态时会获得奖励,在数学上将其定义如下。

其中γ表示折扣因子,γ∈[0, 1],Gt表示总折扣奖励,R表示奖励函数。

因此,马尔可夫奖励过程(MRP)元组定义为(S, P, R, γ)。

基于上述描述的公式,图1-1所示的示例可视化展示了马尔可夫决策过程。

图1-1显示了agent如何以不同的概率从一种状态转移到另一种状态从而获得奖励。最佳情况是,在给定环境参数下,我们如何在给定周期内成功学习累积了最高奖励的过程。从本质上讲,这是强化学习非常朴素的解释。

试错学习(trial and error learning)是推动强化学习发展的另一类重要技术,它是研究动物行为的一种方法。具体来说,已证明它对于理解基本奖励和“增强”不同行为的奖惩机制很有意义。但是,“强化学习”一词直到20世纪60年代才出现。在此期间,特别是马文·闵斯基(Marvin Minsky)引入了“信用分配问题”(Credit-Assignment Problem,CAP)的思想。明斯基是一位认知科学家,他一生的大部分时间致力于人工智能研究,如他的著作Perceptrons (1969年)和描述信用分配问题的论文“Steps Toward Artificial Intelligence”(1961年)。针对为获得成功做出的所有决策,CAP求解对应的信用分配方式。具体而言,许多强化学习算法直接致力于求解该问题。虽然如此,试错学习并不是很流行,因为神经网络方法(以及一般的监督学习)吸引了AI领域的大部分研究兴趣,例如Bernard WIDrow和Ted Hoff提出的创新性研究。然而,在20世纪80年代,随着时序差分(Temporal Difference,TD)学习的兴起以及Q学习的发展,人们对该领域的研究兴趣再次兴起。

具有讽刺意味的是,明斯基着重指出,TD学习受到动物心理学另一个方面思想的影响。它源自两类刺激,即一种主要增强物与一种次要增强物(译者注:任何能够加强行为发生的刺激都可被称为增强物),它们成对出现,从而影响行为。但是,TD学习本身主要由Richard S. Sutton提出。因为他的博士论文介绍了时间信用分配思想,他被认为是强化学习领域最具影响力的人物之一。该思想指出奖励可被延迟,特别是在细粒度的“状态-动作”空间中。例如,赢得一盘国际象棋需要采取很多步动作,才能获得赢棋“奖励”。这样,奖励信号对时间上离得较远的状态没有显著影响。因此,时间信用分配解决了对这些细粒度动作的奖励方式,其对时间上遥远的状态具有较有意义的影响。Q学习以产生奖励的“Q”函数命名,它有一些创新,并聚焦于有限马尔可夫决策过程。

Q学习的兴起,开拓了强化学习的新局面,使其得到持续改进,并代表了AI的前沿技术。完成本概述之后,接下来更具体地讨论读者将学习的内容。

 强化学习算法和强化学习框架

强化学习与传统机器学习中的监督学习领域相似度很大,尽管存在一些关键差异。在监督学习中,存在一个客观目标,即我们训练模型的目的是基于给定观察值的输入特征进行正确的预测,而预测结果可以是类标签或特定的值。特征类似于环境中给定状态的向量,我们通常将其作为一系列的状态合集输入给强化学习算法,或一个状态接着一个状态地分别输入。但是,它们的主要区别在于,对于特定问题,强化学习没有必要总是只给出一个“答案”,因为强化学习算法可以通过多种方式成功求解一个问题。因此,我们显然希望所选择的答案能够尽快且尽可能有效地求解问题。这正是我们选择模型的关键所在。

在前面概述强化学习历史的过程中,介绍了一些定理,在后几章中将详细介绍这些定理。但是,由于本书是“实战”型书籍,因此在介绍理论时还必须同时提供一些示例。在本书中将占用大量篇幅讨论强化学习框架OpenAI Gym,及其如何与其他深度学习框架进行交互。OpenAI Gym是一种便于部署、比较和测试强化学习算法的框架。而且它具有很大程度的灵活性,使得用户可以在OpenAI Gym中应用一些深度学习方法,本书后续在证明各种概念的过程中将会利用该功能。下面给出了一些简单的示例代码,这些代码利用了gym软件包和绘图功能,其中绘图功能用于显示训练过程中产生的图像(见图1-2)。

查看该代码,注意到在使用gym时,必须初始化算法所处的环境。尽管通常使用该软件包提供的环境,但也可以为定制任务(例如gym中未提供的电子游戏)创建自己的环境。接着,让我们继续讨论代码中定义的其他变量,这些变量的终端输出如下所示。

这些变量的含义如下。

• action——环境中agent所采取的动作,随后将产生一个奖励。

• reward——赋予agent的奖励,暗示了对应于完成某目标的动作质量。

• observation——由动作产生,指执行某个动作后的环境状态。

• done——布尔类型,指示是否需要重置环境。

• info——字典类型,存储各类调试信息。

这些动作的处理流程如图1-3所示。

为了提供关于车杆(Cart Pole)游戏的更多信息,图1-2显示了关于小车和杆子的电子游戏,其目的是成功平衡小车和杆子,使杆子永不倒下。因此,相应的目标是训练某种深度学习或机器学习算法,以完成该任务。我们将在后续章节中解决这个特定问题。本节的目的只是简要介绍OpenAI Gym。

 Q学习

在前述内容中简要讨论了Q学习。但是,有必要强调一下,本节是本章的重要部分,本节将讨论Q学习内容。Q学习的特征在于存在一些“警察”,“警察”会通知agent在不同情况下应采取的动作。虽然它不需要模型,但我们可以使用一个模型,模型通常采用有限马尔可夫决策过程。具体来说,本书将介绍Q学习的各类变体,包括Q学习、深度Q学习(DQL)和双Q学习(见图1-4)。

本书将在专门介绍这些技术的章节中对它们进行更深入的讨论。但是,鉴于问题的复杂性,Q学习和深度Q学习各有其优点,虽然两者通常都存在类似的不足之处。

Actor-Critic模型

本书介绍的最高级模型是Actor-Critic模型,它由A2C和A3C两类模型组成。二者分别表示Advantage Actor-Critic模型(优势Actor-Critic模型)和Asynchronous Advantage Actor-Critic模型(异步优势Actor-Critic模型)。虽然两者实际上是类似的,但不同之处在于后者具有多个相互配合工作的子模型,并且这些子模型独立更新参数,而前者同时更新所有子模型的参数。这些子模型更新参数的粒度更细(动作到动作粒度),而不是像许多其他强化学习算法那样以回合为粒度进行更新。图1-5为Actor-Critic模型的可视化示例。

强化学习的应用

在向读者全面介绍强化学习概念之后,我们将开始处理多个问题,重点是向读者展示如何在云环境中部署解决方案,我们将在云环境中进行强化学习算法训练和应用。

经典控制问题

由于最优控制领域已经拥有大约60年的历史,因此存在大量经典问题,我们将优先处理这些问题,读者在其他强化学习文献中也会经常看到它们。其中之一是车杆问题,如图1-2所示,该游戏要求用户使用最佳选项集来尝试平衡车杆。图1-6中显示了另一个问题,称为《冰湖》游戏。在该游戏中,agent学习如何穿越冻结的湖面而不踩在会导致其落水的冰上。

《超级马里奥兄弟》游戏

迄今为止,《超级马里奥兄弟》是最令人喜爱的电子游戏之一,它被证明是展示将人工智能中的强化学习技术应用于虚拟世界的最佳方式。借助py_nes库,可以模拟《超级马里奥兄弟》游戏(见图1-7),然后利用游戏中的数据来训练模型自行通关。我们将只专注于一个级别的关卡,并在这个应用中使用AWS(亚马逊云服务)资源,使读者有机会获得该任务中的经验。

《毁灭战士》游戏

此处介绍的经典强化学习应用示例是如何学习玩简单级别的《毁灭战士》(Doom)游戏(如图1-8所示)。这款游戏最初发布于20世纪90年代,运行于PC上,游戏的规则是在通过整个关卡的过程中成功杀死玩家面对的所有怪物或敌人。在给定动作范围、可用的软件包,及其他有帮助的属性后,可以完美应用深度Q学习算法。

基于强化学习的做市策略

不同的自有资金交易公司的共同策略是通过向参与者提供流动性(目的是以任何给定的价格买卖资产)来赚钱。尽管该策略已具有成熟技术,但由于目标相对简单且该领域数据丰富,因此这是应用强化学习的绝佳领域。我们将使用Lobster的限价订单簿(limit order book)数据,该网站包含大量用于此类实验的完美订单数据。在图1-9中,可以看到一个订单簿的示例。

《刺猬索尼克》游戏

另一款适合应用不同模型的经典游戏是《刺猬索尼克》,如图1-10所示。除本章之外,我们将引导读者从零开始逐步创建自己的环境,使读者能够封装一个应用OpenAI Gym和自定义软件的环境,然后训练自己的强化学习算法以解决关卡问题。这里将再次利用AWS资源进行训练,并借用其他电子游戏示例(尤其是《超级马里奥兄弟》游戏)中使用的相同过程。

总结

以上是内存溢出为你收集整理的Python强化学习实战之“强化学习的应用”全部内容,希望文章能够帮你解决Python强化学习实战之“强化学习的应用”所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1189424.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-03
下一篇 2022-06-03

发表评论

登录后才能评论

评论列表(0条)

保存