小编说:强化学习在机器学习中的难度不低,它需要很多方面的知识辅助,同时自身也已经形成了一个庞大的体系。本文介绍了强化学习的基本概念,帮助读者了解强化学习的目标和特点。本文选自《强化学习精要:核心算法与TensorFlow实现》。
什么是强化学习?
“强化学习”这个词并不那么容易理解,“强化”在这里是一个动词还是一个名词,又或者是一个人名?还有人把它称为“增强学习”,其实名字所表达的含义差不多,但总感觉这个名字并没有很清楚地表达它想表达的含义,即使一些对强化学习有一定经验的人也可能感到疑惑。
不得不承认,当今很多知识和概念都是从西方传来的,强化学习也是一个“外来品”。它的英文是Reinforcement Learning,在英文辞典里查询reinforcement 这个词,我们找到了下面的解释:
something that strengthens or encourages something, such as a response to someone’s behavior that is intended to make that person more likely to behave that way again.
将英文翻译后的大概意思是:“reinforcement”是一种“套路”,或者是某种方法,也可能是某种形式。它会强化或者鼓励某个人或者某个事物以更高的可能性产生同样的行为。当然,这里的行为不只是让某个人或事物去做某些事情,也可能是不去做某些事情,具体产生什么样的行为取决于使用什么样的“reinforcement”。
1 . 巴浦洛夫的狗
简单地说,强化学习的完整含义是利用这种“套路”完成学习。这个抽象的概念还有一个心理学上的解释,不禁让笔者想起了一个经典的心理学实验:巴浦洛夫的狗。在这个经典的实验中,每次实验者都对着狗摇铃铛,并给狗一点食物。久而久之,铃铛和食物的组合影响了狗的行为,此后每次对着狗摇铃铛,狗就会不由自主地流口水,并期待食物的到来,这样实验者就让狗“学会”了铃铛和食物的关系,这也可以算作强化学习的一个简单的例子。
了解了这个套路的一个具体例子,我们现在思考的是:能不能将这个套路的活动过程抽象成一个框架,使我们能更方便地将这个框架应用到更多的实例上呢?经过前辈们的苦心研究,最终我们得到了一个具有很高抽象度的强化学习框架。在“巴浦洛夫的狗”实验中,我们发现了下面几个关键要素。
狗:实验的主角。
实验者:负责操控和运转实验。
铃铛:给狗的一个刺激。
口水:狗对刺激的反应。
食物:给狗的奖励,也是改变狗行为的关键。
接下来,我们要给上面的每个要素赋予一个抽象的名字。
实验的主角:Agent。这个词不好翻译,一般翻译为智能体,但是这个翻译更像意译,和英文单词本身的含义有点距离。
实验的操控者:System Environment,一般翻译为系统环境。
给Agent 的刺激(铃铛):Observation,一般翻译为观察值,但是在很多强化学习文献中,会将其等价为状态(State)。
Agent 的反应(口水):Action,一般翻译为行动。
Agent 的奖励(食物):Reward,一般翻译为回报或者反馈。
在经典的强化学习中,智能体要和环境完成一系列的交互。
(1)在每一个时刻,环境都将处于一种状态。
(2)智能体将设法得到环境当前状态的观测值。
(3)智能体根据观测值,结合自己历史的行为准则(一般称为策略,Policy)做出行动。
(4)这个行动会影响环境的状态,使环境发生一定的改变。Agent 将从改变后的
环境中得到两部分信息:新的环境观测值和行为给出的回报。这个回报可以是正向的,也可以是负向的。这样Agent 就可以根据新的观测值做出新的行动,这个过程如下所示。
可以想象,在实验的早期,当实验者对着狗摇铃铛时,狗并不会有任何准备进食的反应;随着实验的进行,铃铛和食物这两个观测内容不断地刺激狗,使狗最终提高了准备进食这个行动的可能性。实际上,这样的交互模式在很多场景下都会出现。
2 . 俄罗斯方块
我们以一个经典的电子游戏俄罗斯方块为例,回顾强化学习的整个过程。
以与巴浦洛夫的狗相同的角度看待俄罗斯方块游戏,我们发现此时的实验者就是游戏制作团队,而被实验的对象就是玩家。实验者通过构建一个俄罗斯方块游戏的环境,强化玩家一些行为的可能性。控制玩家行为的关键在于游戏的得分机制,由于我们明确了玩家的目标是尽可能地获得更高的分数,那么游戏团队对什么样的行为强化,玩家就倾向于产生什么样的行为。
从上面的描述中我们发现,如果游戏团队对消除方块的行动给予强化,那么玩家将更倾向于产生消除方块的行为;如果游戏团队对不消除方块的行动给予强化,玩家会更倾向于产生不消除方块的行为,当然这样会更快地结束游戏。如果游戏团队只对某种特定的消除方块行为(例如,用“竖条”一次性消除多行方块)给予较大的强化,那么玩家会尽可能地产生这种行为,其他消除方块技巧的使用频率会降低。实际上,俄罗斯方块这款游戏就是采用了这样的设计方案。
我们通过两个例子阐述了强化学习的核心思想:通过某种手段影响被实验者的行为。为了实现这个目标,实验者需要构建一个完整的实验环境,通过给予被实验者一定的观测和回报,让其产生实验者想要的结果。
理解了这个思想,就算迈进了强化学习的大门。
强化学习效果的评估
下面我们介绍强化学习的两个显著特点,正是这两个特点使得它与其他学习方法存在不同。
1 . 不断试错
前面提到强化学习通过一些手段影响Agent 的行动,这实际上是站在环境或实验者的角度来看的。如果站在Agent 的角度,就是另外一幅景象:根据环境状态给出行动的Agent 有时会收到较多回报,有时回报较少,回报可以以数值的形式标示,那么Agent还可能收到负的回报。究竟怎样才能获得最多的回报呢?Agent 自己并不知道,“实验者”也不会告诉Agent。所以Agent 需要根据回报的多少不断地调整自己的策略,从而尽可能多地获得回报。这个过程中Agent 需要不断尝试,尝试应对状态的各种可能的行动,并收集对应的回报,只有收集到各种反馈信息,才能更好地完成学习任务。因此这是一个不断试错(Trial and Error)的过程,只有经过尝试、遇到失败,才能获得最终的成功。
2 . 看重长期回报
强化学习的任务通常需要长时间的交互,比如上面提到的俄罗斯方块游戏,玩家与游戏交互的周期可以是一局游戏。在这样的时间跨度下,眼前一步或两步操作获得的回报就变得没那么重要了。前面也提到,俄罗斯方块对同时消除不同层数方块的奖励不同,分4 次消除一行方块得到的分数远远小于一次消除4 行方块得到的分数。消除一行方块比较简单,只需要几个方块就可以做到;而消除4 行方块就比较困难,需要前期方块的累积和准确地摆放一根竖棍。更难的方块摆放也使玩家更快地积累分数,从而更快赢得胜利,这和游戏设计者的初衷一致。因此,从更长远的角度看,玩家要学习如何一次消除多行,而不是追逐短期的得分。当然,追求长期分数需要多探索、多尝试,也可能遇到更多的失败(例如没等到竖棍出现),所以看重长期回报和不断试错存在一定的一致性。
正因为这两个特点,我们在评价强化学习算法的优劣上与其他算法不同。除了一些常见的衡量指标(算法的效果、计算时间、稳定性和泛化性等),我们还要重点考虑一个指标:学习时间。由于学习和尝试相关,所以这个指标一般也看作尝试和探索的次数。如果一个算法需要尝试的次数比较多,我们一般认为算法要花费的时间比较长;如果一个算法需要尝试的次数比较少,那么相对来说花费的时间比较短。
站在机器学习的角度,我们可以认为尝试的样本本身会影响学习的时间,例如样本的代表性、重合度等。对强化学习来说,由于学习本身的特点,我们需要考虑训练样本的使用率(Sample Efficiency)。不同算法对样本的重复使用次数不同,有的算法对于尝试的样本只能使用一次,而有的算法可以反复使用同样的样本。
训练样本的使用率会直接影响学习时间。前面提到Agent 的学习样本要通过自身与环境的交互得到,而这个过程是要花费时间的。需要的样本量少,学习时间就可以缩短;反之学习时间会比较长。对计算机模拟的学习问题来说,样本量并不算个大问题,因为计算机可以在短时间内快速模拟出大量的样本;但是对于在真实场景进行训练的问题来说,产生样本意味着要在真实世界的时间尺度下进行交互,花费的时间会很长。
为了一点效果的提升花费大量的时间,对我们来说有点得不偿失。因此,很多研究人员都在思考如何提高真实世界学习的速度,这就涉及提高样本利用率、迁移学习等内容。这样我们就了解了强化学习关注的两个目标:学习效果和学习时间。
本文节选自《强化学习精要:核心算法与TensorFlow实现》
冯超 著