写点什么

强化学习入门必看之强化学习导识

用户头像
Alocasia
关注
发布于: 2020 年 11 月 20 日
强化学习入门必看之强化学习导识

强化学习是近几年比较火热的研究领域,自从 2017 年 AlphaGo 战胜了李世石之后,强化学习算法成为了学术界和工业界追捧的热点。那么强化学习适合解决什么问题呢?强化学学习的体系结构是什么样的呢?下面仔细进行说明。

1.  强化学习适用于解决什么样的问题

强化学习的经典的案例有 AlphaGo、非线性系统二级倒立摆、机器人学习站立等。强化学习应用领域还包括无人驾驶、对话系统、翻译系统、游戏等。这些案例就不详细说明了,有兴趣的话可以去网上搜一下。这些案例都有一个共同点,那就是需要持续不断的针对环境来做出决策,什么意思呢?拿 AlphaGo 作为例子,每一次落子的时候,都会看到棋局的状态,这个“棋局的状态”就称为环境,每次状态都不同,也就是说环境是在不断变化的,机器(也称智能体)要根据环境决定要怎么样落子才能赢得比赛,这就是决策。这是一个连续不断的过程,环境有多种,需要根据不同的环境做出最优或者较优的决策,这就是强化学习解决问题的思路。

    用专业术语来说,强化学习适用于解决贯序决策问题。突然出现的专业词汇可能会让大家看的有点晕,不过‘贯序决策’在强化学习中非常重要。通俗来解释,在一个特定的环境中,随着时间的推移,环境也会随之变化,强化学习希望机器人或者智能体可以学习出来一套最优的行为策略以完成特定的任务。尽可能的在没有人为因素干预的情况下来完成整个过程,智能体自主的根据不同的环境来决定什么样的策略好,什么样的策略不好。既然是贯序决策,那就说明完成这个任务需要很多的步骤,强化学习就是要学习出来各个步骤应该做什么,一步一步地达到目的。

    当然,并不是说所有的此类型的问题都需要用强化学习来解决,举一个简单的例子,现在我们有一个节点不是很多的有向图(假如说有 10 个节点),每条边上都有权值,该权重可以理解为两个节点之间的距离,现在选取两个不同的节点 A 和 B,计算从节点 A 到节点 B 的最短路径,这是图论里面的一个非常经典的一个问题,有很多经典的方法可以解决,最简单的就是遍历。同样的,这也是一个贯序决策问题,那么用强化学习来解决这个问题合适吗?可以说合适也可以说不合适,要看环境是否合适(有向图的大小)。如果是 10 个节点的有向图,很明显不合适,但是如果是成千上万个节点呢?遍历这个图十分的麻烦,这时候用强化学习来解决就比较合适了。

    总结来说,强化学习的应用场景有很多,但是需要具体问题具体分析。对相关场景进行科学的分析归纳并获得良好的策略,这是强化学习要解决的核心问题。

2.  强化学习的体系结构

    首先,强化学习的输入数据不是某一张图片或者文字,而是连续不断的环境,可以是多张图片,也可以是多段话。强化学习的关注点不在输入数据本身,而是根据当前的输入应该采取什么样的行动来达到最终的目的,比如下棋,就是要赢。整个过程下来会有很多的动作和状态,称之为任务序列。智能体起初也不知道如何使整个任务序列达到最优,它需要不断地与环境经行交互,不断地尝试。这时候需要提出另外一个词—回报。每次智能体进行决策之后都会得到一个回报,智能体则通过当前的回报决定当前的决策是被保留还是被放弃。举例来说,当智能体在玩游戏的时候,某一个动作使游戏角色的血量减少了,则这个动作被放弃,而另外一个动作使得分增加了,则这个动作被保留。强化学习的体系结构如图 1 所示,很多材料中都会出现类似的示意图,因为这几项是强化学习必备的。

图 1 强化学习体系结构

强化学习不同于监督学习和无监督学习,在监督学习和无监督学习中,训练数据是不会变化的,并且算法不会与环境进行交互,而强化学习有自己特殊的获取数据和使用数据的方式。还是拿下围棋为例,监督学习的做法是当看到某一个棋盘的状态后,直接决定将子落在哪个位置,因为监督学习的训练数据包括棋盘的状态以及最好的落子位置。而强化学习则不同,强化学习并不知道落子在哪里比较好,只能进行尝试,然后根据回报决定落子的位置是否合适。用强化学习训练智能体进行下棋的话,一般要训练成千上万把。但是基本没有人可以做到跟机器下几千把围棋,那 AlphaGo 是怎么训练的呢?AlphaGo 是先通过监督学习训练出来两个能下棋的智能体,然后让两个智能体对弈来优化模型。所以 AlphaGo 是监督学习和强化学习的结合体。

2.1 强化学习的主要概念

    图 1 中给出了强化学习的五个重要的概念和术语。虽然不愿意这么说,但是还是要以英文为准,中文是翻译过来的,而且很多材料翻译出来的名词略有差异,不过核心意思是一致的。强化学习的目标是进行自主的学习,在特定的环境中获得解决问题的最优策略。不过实际情况中强化学习或多或少都会受到人为的干预,因为强化学习毕竟是要尽可能的与人类的智慧和经验保持一致。接下来,详细介绍一下图 1 中的五个重要的概念。

(1)      Agent

Agent 可以翻译为“智能体”或者“机器人”,它是在环境中进行决策的智能主体部分,也可以理解成自己写的算法。举例来说,在游戏中,智能体就是玩家,不过不是真实的人在玩游戏,而是机器在玩游戏。

(2)      Environment

     Environment 一般翻译为“环境”,这个概念在前面提到很多次了,它指智能体所在的环境。不同的场景下环境也不同,将强化学习应用在游戏中,环境就是游戏中的内容,而将强化学习应用在围棋中的话,环境就是棋盘。

(3)      State

     State 大多翻译为“状态”,它与 Environment 紧密相连。State 是指智能体能够观察到的环境信息,但并不是所有的信息都能观察到。强化学习的体系结构本来就是人为设定的,由于人类自身的感知范围是有限的,因此智能体的观察到的情况也是有限的。而且在实际编程操作的时候,并不是观察到什么信息就用什么信息,通常会利用一些降维技术将观察到的情况数字化之后进行处理。

(4)      Action

     Action 就是“动作”,是指智能体根据观察到的状态发起的行动。Action 可以理解为智能体与环境之间的动作交互。由于计算机只认数字,因此 Action 一般情况下是用数字来表示,比如说,向左移或向右移分别可以用 0 或 1 表示。当然,Action 还有很多种表示方式,可以是数字、向量等。有一点要注意,当前的 Action 并不一定会影响智能体下一个时刻的状态,因为不同的应用场景下对动作的定义差别会很大。

(5)      Reward

     Reward 可以翻译为“回报”或者“奖励”,有时候也会说成是“得分”。值得一提的是,Reward 是一个超参数,它不能通过训练学得,通常情况下需要人为定义好。Reward 是指智能体根据某一个状态采取一个动作之后得到的用于衡量该动作优劣的值。简单来说,如果一个动作是好的,则智能体可能会得到一个很大的回报,比如 10、50,而如果某一个动作是不好的,则有可能得到一个很差的值,比如-20、-100。

2.2 强化学习的整体流程

       上一小节详细介绍了强化学习的重要概念,本节详细说明一下强化学习的整体流程。

       根据图 1,从智能体开始,智能体根据得到的状态采取一个动作之后,环境发生了改变,并且返回给智能体一个回报,然后智能体会观测到新的状态,通过在环境中不断地重复上述的过程,就会得到下述序列:

其中,t 指的是某一个时刻,t+1 则是紧随 t 时刻的下一个时刻,表示环境在某一个时刻 t 的状态,

表示智能体在时刻 t 采取的动作,表示在时刻 t 智能体得到的回报。值得注意的是,上述序列虽然看起来是连续的,实际上是由许多离散的状态片段组成的,智能体需要逐一处理,通过不断的学习改良来获得最优的序列。

       另外,动作的取值有很多种,既可以是离散的,也可以是连续的。比如在玩游戏的时候,左移、右移、开火等都是离散的值,而在扫地机器人中行进的距离是连续的,并且这些动作都是已经设定好的,不需要智能体去学习。还有就是状态的数量可能会特别多,通常要描述一个具体的场景需要数万的数值,然而其中有很多数据对于智能体来说是没有用的,因此智能体会对观测到的状态数据进行相应的取舍来更好地进行决策。回报是一个比较特殊的概念,回报基本上是由训练者决定的,即使在同样的环境,同样的算法中,设定不同的回报将会直接导致模型结果的差异,因此可以通过改变回报来调整训练的方向。

3.  总结

以上就是强化学习的一些基础知识,其实本文不只是简单的介绍强化学习,其中还加入了很多需要注意的点以及优劣性比较。在进行科普的时候没有写的晦涩难懂,通过一些具体的例子来进行说明,使大家更好的理解。欢迎大家评论交流。

 

关注领域:强化学习、深度学习、机器学习


发布于: 2020 年 11 月 20 日阅读数: 259
用户头像

Alocasia

关注

没事多磕点盐~ 2020.11.16 加入

西安交通大学博士 研究领域:强化学习 深度学习 机器学习

评论 (1 条评论)

发布
用户头像
👍 👍 👍 👍 👍
2020 年 11 月 20 日 13:03
回复
没有更多了
强化学习入门必看之强化学习导识