第二章 强化学习与深度强化学习

前言

本章对强化学习的基本术语和概念提供了一个简明的解释。它将使您很好地理解开发人工智能代理的基本强化学习框架。本章还将介绍深度强化学习,并为您提供一些算法可以帮助您解决的高级问题类型。在这一章中,你会发现很多地方都用到数学表达式和方程式。尽管背后有足够的理论强化学习和深度强化学习填满整本书,实际实现的关键概念是有用的在本章所讨论的,所以当我们在Python中实现的算法来训练我们的代理商,你可以清楚地了解他们背后的逻辑。如果你在第一次考试时不能全部掌握,那也没有关系。当你需要更好的理解时,你可以回到这一章并修改。
本章我们将讨论以下主题:

  • 什么是强化学习
  • 马尔科夫决策过程
  • 强化学习框架
  • 什么是深度强化学习
  • 深度强化学习代理在实践中如何工作

什么是强化学习

如果你是人工智能(AI)或机器学习领域的新手,你可能想知道强化学习是关于什么的。简单来说,就是通过强化来学习。强化,正如你从普通英语或心理学中所知道的,是增加或强化选择采取某一特定行动来回应某事的行为,因为采取该行动会获得更高的回报。我们人类在很小的时候就擅长通过强化来学习。那些有孩子的人可能会更多地利用这一事实来教他们养成好习惯。然而,我们都将能够与此相关,因为不久之前我们都经历了生命的那个阶段!比如,如果孩子每天放学后按时完成作业,父母就奖励孩子巧克力。孩子了解到,如果他/她每天完成作业,他/她就会得到巧克力(奖励)。因此,这加强了他们每天完成作业来收到巧克力的决心。这种学习强化某一特定行动选择的过程,其动机是采取这种行动将获得的奖励,这种学习过程被称为强化学习或强化学习。

你可能会想,“哦,是的。这种人类心理对我来说很熟悉。但这与机器学习或人工智能有什么关系?”好想法。强化学习的概念实际上是受到行为心理学的启发。它是几个研究领域的纽带,最重要的是计算机科学、数学、神经科学和心理学,如下图所示:
在这里插入图片描述
我们很快就会意识到,强化学习是机器学习中最有前途的方法之一,它将引领人工智能的发展。如果这些术语对你来说都是新的,不要担心!从下一段开始,我们会复习一下这些术语,了解它们之间的关系,让你感觉舒服。如果你已经知道了这些术语,那么从一个不同的角度来阅读这本书会让你耳目一新。

以直观的方式理解AI的含义和内容

人类和动物展示的智能被称为自然智能,而机器展示的智能被称为人工智能,原因显而易见。我们人类开发算法和技术,为机器提供智能。这方面的一些最大的发展是在机器学习、人工神经网络和深度学习领域。这些领域共同推动了人工智能的发展。到目前为止,有三种主要的机器学习范式已经发展到一定的成熟程度,它们是:

  • 监督学习
  • 非监督学习
  • 强化学习

在下面的图表中,你可以直观地了解AI领域。你可以看到,这些学习范式是机器学习领域的子集,而机器学习本身也是AI的一个子集/分支:
在这里插入图片描述

监督学习

监督学习类似于我们教孩子通过名字来识别某人或某物。我们提供一个输入和一个与输入相关的名称/类标签(简称标签),并期望机器学习这个输入到标签的映射。这听起来简单,如果我们只是想让机器学习input-to-label映射几个对象(如对象识别——任务型)或人员(如面对/声音/人识别任务),但是如果我们想要一个机器学习数千类,每个类可能有几个不同的输入的变化?例如,如果这项任务是从输入的图像中识别一个人的脸,还要从1000个其他输入的图像中识别人脸,即使对一个成年人来说,这项任务也可能是复杂的。对于同一个人的脸,输入图像可能会有几种变化。这个人可能在一个输入图像中戴着眼镜,或者在另一个输入图像中戴着帽子,或者表现出完全不同的面部表情。对于机器来说,要看到输入的图像,识别并识别人脸是一项困难得多的任务。随着深度学习领域的最新进展,像这样的监督分类任务对机器来说不再困难。机器能够识别人脸以及其他一些东西,其准确度达到了前所未有的水平。例如,DeepFace系统(https://research.fb.com/wp-content/upl外形尺寸/ 2016/11 / deepface-closing-the-gap-to-human-level-performance-in-face - verification.pdf), Facebook开发的人工智能研究实验室,达到97.45%的精度在人脸识别标签在野外数据集。

非监督学习

与监督学习范式不同,无监督学习是一种不为学习算法和输入提供标签的学习形式。这类学习算法通常用于找出输入数据中的模式,并将类似的数据聚在一起。深度学习领域的最新进展引入了一种新的学习形式,称为生成对抗网络(Generative Adversarial Networks),这种学习方式在本书撰写期间非常流行。如果你感兴趣,你可以从这个视频学习更多关于生成对抗网络:https://www.packtpub.com/big-data -and-business-intelligence/学习-生成-对抗-网络-video。

强化学习

与监督学习和非监督学习相比,强化学习是一种混合学习方式。正如我们在本节开始时所了解的,强化学习是由奖励信号驱动的。在有家庭作业问题的孩子的例子中,奖励信号是来自父母的巧克力。在机器学习的世界里,巧克力可能不会吸引计算机(好吧,我们可以编程让计算机想要巧克力,但我们为什么要这么做呢?孩子还不够吗?!),但是仅仅的标量值(数字)就可以了!奖励信号在某种程度上仍然是人类特有的,表明了任务的预期目标。例如,使用强化学习来训练代理人玩Atari游戏,游戏中的分数可以作为奖励信号。这使得强化学习更加容易(对于人类而不是机器!),因为我们不需要在游戏的每个点上标记要按的按钮来教机器如何玩游戏。相反,我们只是让机器自己学习,以最大化他们的分数。我们能让一台机器学会如何玩游戏,如何控制汽车,或如何自己做作业,而我们所要做的只是告诉它如何得分,这听起来不是很有趣吗?这就是为什么我们要在本章学习它。在接下来的章节中,您将自己开发一些很酷的机器。

强化学习实践

现在你已经对人工智能的真正含义和驱动其发展的各种算法有了直观的理解,我们现在将专注于构建一个强化学习机器的实际方面。
以下是你在开发强化学习系统时需要注意的核心概念:

  • Agent
  • Rewards
  • Environment
  • State
  • Value function
  • Policy

Agent

在强化学习世界中,机器是由(软件)代理运行或指示的。代理是机器的一部分,它拥有智能并决定下一步要做什么。当我们深入学习强化学习时,你将会多次遇到“Agent”这个术语。强化学习是基于奖励假设的,该假设认为任何目标都可以通过期望累积奖励的最大化来描述。那么,这个奖励到底是什么呢?这是我们接下来要讨论的问题。

Rewards

奖励(表示为)通常是一个标量,作为反馈提供给agent以推动其学习。代理人的目标是使总报酬最大化,这个信号表示代理人在时间步的表现。以下不同任务的奖励信号例子可能会帮助你更直观地理解:

  • 对于我们之前讨论过的Atari游戏,或者任何普通的电脑游戏,每次分数增加的奖励信号是+1,每次分数下降的奖励信号是-1。
  • 对于股票交易,报酬信号可以为每一美元的收益+1和每一美元的损失-1。
  • 在模拟中驾驶汽车,每行驶1英里奖励信号为+1,每碰撞奖励信号为-100。
  • 有时,奖励信号可能是稀疏的。例如,在象棋或围棋游戏中,如果代理赢了游戏,奖励信号可以是+1,如果代理输了游戏,奖励信号可以是-1。奖励是稀缺性的,因为代理只有在完成一款完整的游戏后才会收到奖励信号,而不知道自己的每一步棋走得有多好。

Environment

在第一章中,我们研究了OpenAI Gym toolkit提供的不同环境。你可能想知道为什么它们被称为环境,而不是问题、任务或其他什么。现在你已经读到这一章了,有什么印象吗?

环境是代表我们感兴趣的问题或任务的平台,以及代理与之交互的平台。下图显示了最高抽象级别的一般强化学习范式:
在这里插入图片描述
在每个时间步骤(用表示)中,代理接收来自环境的一个观察,然后执行一个操作,对于该操作,它将接收来自环境的标量奖励以及下一个观察,然后重复这个过程,直到到达一个终端状态。什么是观察,什么是状态?让我们接下来研究一下。

State

当代理与环境交互时,过程会产生一系列的观察、动作和奖励,如前所述。在某个时间步长中,agents到目前为止所知道的是,观察、动作和奖励的序列,并且它一直观察到时间步长。从直觉上讲,把这称为历史是有道理的:
在这里插入图片描述
未来会发生什么取决于历史。正式地说,用来确定接下来发生什么的信息被称为状态。因为它取决于到该时间步长的历史,所以可以表示为:
在这里插入图片描述
这里,f表示函数。

在我们继续之前,有一条很微妙的信息需要你理解。让我们再看看强化学习系统的一般表现:
在这里插入图片描述
现在,您将注意到系统中的两个主要实体(代理和环境)都有自己的状态表示。环境状态(有时用它来表示)是环境自己(私人)的表现,环境用它来选择下一个观察和奖励。这种状态通常对代理来说是不可见/可用的。同样,代理也有自己的状态的内部表示(有时用表示),这是代理使用的基于其操作的信息。因为该表示是代理的内部表示,所以由代理使用任何函数来表示它。通常,它是基于代理迄今为止所观察到的历史的某个功能。另外,马可夫状态是使用历史中所有有用信息的状态的表示。根据定义,利用马尔科夫属性,一种状态是马尔科夫或马尔科夫,这意味着在给定现在的情况下,未来是独立于过去的。换句话说,这样的状态是对未来的充分统计。一旦知道了状态,就可以丢弃历史记录。一般情况下,环境状态、、和历史、满足马尔可夫性质。

在某些情况下,环境可能使其内部环境状态直接对代理可见。这样的环境称为完全可观察环境。在代理不能直接观察环境状态的情况下,代理必须根据它所观察到的状态构造自己的状态表示。这种环境称为部分可观测环境。例如,一个玩扑克的代理人只能观察公共牌,而不能观察其他玩家所拥有的牌。因此,它是一个部分观察到的环境。类似地,只有一个摄像头的自动驾驶汽车并不知道它在环境中的绝对位置,这使得环境只能部分地被观察到。

Model

模型是一个代理对环境的表示。这与我们对周围人和事物的心理模式相似。代理使用它的环境模型来预测接下来会发生什么。它有两个关键部分:

  • 状态转移模型/概率
  • 回馈模式

状态转移模型是一种概率分布或函数,在给定状态和时间步长的动作的情况下,预测在下一个时间步结束状态的概率。数学上可表示为:
在这里插入图片描述
代理使用奖励模型来预测如果它在时间步的状态下采取行动,它将获得的立即的下一个奖励。这种对下一次奖励的期望可以用数学方法表示为:
在这里插入图片描述

Value function

价值函数代表了代理人对未来报酬的预测。价值功能有两种类型:状态价值功能和行为价值功能。

State-value function

状态值函数是一个函数,它表示agent在时间步长t时处于一种状态有多好。通常也称为值函数。表示agent在时间步长t结束状态时,对其未来所能获得的回报的预测。数学上可以表示为:
在这里插入图片描述
这个表达式的意思是,政策下的状态值是未来奖励折现后的期望和,其中γ是折现因子,是一个实数,取值范围为[0,1]。实际上,折现系数通常设置在[0.95,0.99]的范围内。另一个新术语是,这是代理人的政策。

Action-value function

行为-价值函数是一个函数,表示agent对在状态下采取行动有多好的估计。表示为。它与状态值函数的关系如下式所示:
在这里插入图片描述

Policy

所指示的政策规定了国家应采取的行动。它可以看作是一个将状态映射到操作的函数。政策主要有两种类型:确定性政策和随机政策。
确定性策略规定了给定状态下的一种行为,也就是说,只有一种行为。
在这里插入图片描述

随机策略规定了给定时间步长的状态下的行为分布,即有多个行为,每个行为都有一个概率值。
在这里插入图片描述

遵循不同策略的代理在相同的环境中可能表现出不同的行为。

深度强化学习

深度强化学习是人们在深度学习领域取得进展并将其应用于强化学习的过程中自然产生的。我们学习了状态价值函数、行动价值函数和政策。让我们简要地看看如何用数学表示它们或通过计算机代码实现它们。state-value函数是一个实值函数,它以当前状态作为输入,并输出一个实值数字(如4.57)。这个数字是agent对其状态好坏的预测,并且agent会根据其获得的新经验不断更新其价值函数。同样,动作值函数也是一个实值函数,它将动作作为状态之外的输入,并输出一个实数。表示这些函数的一种方法是使用神经网络,因为神经网络是通用函数近似器,它能够表示复杂的非线性函数。对于试图通过只看屏幕上的图像来玩雅达利游戏的代理(就像我们一样),状态可以是屏幕上图像的像素值。在这种情况下,我们可以使用带有卷积层的深度神经网络从状态/图像中提取视觉特征,然后使用几个完全连接的层最终输出or,这取决于我们想要近似哪个函数。

如果我们这样做了,那么我们就是在做深度强化学习!容易理解吗?我希望如此。让我们看看其他一些我们可以在强化学习中使用深度学习的方法。

回想一下,一个政策是表示为确定性的政策,在随机的情况下政策,行动可以是离散的(比如“左移动,”“移动吧,”或“向前移动”)或连续值(如加速度的“0.05”,“0.67”为指导,等等),他们可以单个或多维。因此,策略有时可能是一个复杂的函数!它可能必须接受多维状态(如图像)作为输入,并将多维概率向量作为输出(在随机政策的情况下)。所以,这看起来像是个怪物函数,不是吗?的确是的。这就是深度神经网络的救命之处!我们可以用深度神经网络近似一个agent的策略,然后直接学习更新策略(通过更新深度神经网络的参数)。这被称为基于策略优化的深度强化学习,它已经被证明在解决几个具有挑战性的控制问题上非常有效,尤其是在机器人领域。

综上所述,深度强化学习就是将深度学习应用于强化学习,到目前为止,研究人员已经通过两种方式成功地将深度学习应用于强化学习。一种方法是用深度神经网络来近似值函数,另一种方法是用深度神经网络来表示策略。

早在2005年,当研究人员试图使用神经网络作为值函数近似器时,这些想法就已经为人所知。但直到最近它才走红,因为尽管神经网络或其他非线性值函数逼近器可以更好地表示环境状态和行为的复杂值,但它们容易不稳定,往往导致次优函数。直到最近,像Volodymyr Mnih和他在DeepMind(现在是谷歌的一部分)的同事这样的研究人员才发现了稳定学习的技巧,并使用深度的、非线性函数逼近器来训练智能体,这些逼近器收敛到接近最优值函数。在这本书的后面的章节中,我们将事实上复制一些他们当时开创性的结果,它超越了人类玩Atari游戏的能力。

强化学习和深度强化学习的应用

直到最近,由于样本的复杂性和不稳定性,强化学习和深度强化学习的实际应用一直受到限制。但是,这些算法在解决一些非常困难的实际问题时被证明是非常强大的。这里列出了其中一些,让你有所了解:

  • 学会比人类更好地玩电子游戏:这个消息可能已经传到你那里了。DeepMind和其他公司的研究人员开发了一系列算法,从DeepMind的Deep-Q网络(简称DQN)开始,该网络在玩雅达利游戏时达到了人类水平。我们将在本书后面的章节中实现这个算法!从本质上讲,它是本章简要介绍的Q-learning算法的一个深层变体,做了一些改变,提高了学习的速度和稳定性。在几场比赛之后,它的游戏得分能够达到人类水平。更令人印象深刻的是,相同的算法在没有任何特定游戏调整或改变的情况下实现了这一级别的游戏。
  • 掌握围棋:围棋是一种挑战人工智能几十年的中国游戏。它是在一个全尺寸的19×19的棋盘上玩的,它比国际象棋更复杂,因为棋盘上可能的位置有很多。直到最近,还没有任何人工智能算法或软件能够在这一游戏中达到人类的水平。AlphaGo是来自DeepMind的人工智能程序,它使用了深度强化学习和蒙特卡罗树搜索技术,改变了这一切,并击败了人类世界冠军李世石(4-1)和范辉(5-0)。DeepMind发布了其人工智能代理的更高级版本,名为AlphaGO Zero(它使用了零人类知识,并学会了完全靠自己下棋!)和AlphaZero(它可以下围棋、国际象棋和Shogi!),所有这些都将深度强化学习作为核心算法。
  • **帮助AI赢得危险边缘!**当前位置IBM的沃森是IBM开发的人工智能系统,因在《危险边缘》(Jeopardy)节目中击败人类而一举成名。使用TD学习的扩展来创建它的每日双注策略,帮助它战胜人类冠军。
  • 机器人运动和操作:强化学习和深度强化学习都使复杂机器人的运动和导航控制成为可能。加州大学伯克利分校的研究人员最近的几项研究显示,他们如何使用深度强化,训练策略,为机器人操作任务提供视觉和控制,并生成连接驱动,使复杂的双足类人行走和奔跑。

总结

在这一章中,我们讨论了agent如何与环境交互,基于它从环境接收到的观察而采取行动,以及环境如何以(可选的)奖励和下一个观察来响应agent的行动。

通过对强化学习基础的简明理解,我们进一步了解了什么是深度强化学习,并揭示了我们可以使用深度神经网络来表示价值函数和策略的事实。虽然这一章在符号和定义上有点多,但希望它为我们在接下来的章节中开发一些很酷的代理奠定了坚实的基础。在下一章中,我们将巩固前两章的学习,并通过奠定基础来训练agent去解决一些有趣的问题。

猜你喜欢

转载自blog.csdn.net/weixin_42990464/article/details/112134547