Reinforcement Learning: An Introduction (Second edition)个人渣翻(三)Chapter 1.5 1.6

转载请注明出处

1.5 An Extended Example: Tic-Tac-Toe

了说明强化学习的一般概念,并将其与其他方法进行对比,我们接下来将更详细地考虑一个示例。

 

考虑熟悉的儿童游戏井字棋。两个玩家轮流在一个三乘三的棋盘上玩,一个玩家使用X和另一个玩家使用O,直到一个玩家通过放置三个标记连成一条线(水平、垂直或对角线)获得胜利,就像X玩家在下面游戏中所做的那样:

 

 

 

如果棋盘填满且没有玩家3个棋子连成一条线,那么比赛就是平局。因为一个技术娴熟的玩家可以打得永远不会输,所以让我们假设我们是在和一个不完美的玩家比赛,不完美的玩家的比赛有时是错误的,让我们能赢。事实上,就目前而言,让我们考虑平局和输对我们同等不利。我们如何构建一个能发现对手比赛中的缺陷并学会最大化获胜机会的玩家?

 

虽然这是一个简单的问题,但用经典的方法很难解决。例如,博弈论中的经典“极大极小”解决方法在这里是不正确的,因为它假定对手以特定的方式进行博弈。例如,极大极小法玩家永远不会达到可能输的游戏状态,即使事实上它总是因为对手的失误而从该状态获胜。对于连续决策问题的经典优化方法,例如动态规划,可以为任何对手计算一个最优解,但需要输入该对手的完整规范,包括对手在每个棋盘状态下进行每种移动的概率。让我们假设,这个问题的先验信息是不可用的,因为它不适用于绝大多数实际感兴趣的问题。另一方面,这样的信息可以通过经验来估计,在这种情况下,通过对对手进行许多游戏。在这个问题上,我们能做的最好的事情是先学习一个对手行为的模型,达到一定的置信水平,然后应用动态规划计算出一个给定对手模型的最优解。最后,这与我们在本书后面讨论的一些强化学习方法没有什么不同。

 

一种应用于这个问题的进化方法将直接搜索可能的策略空间,寻找一个战胜对手的概率高的策略空间。在这里,策略是一个规则,它告诉玩家在三乘三的棋盘上,对于游戏的每一个状态,X和O的每一个可能的配置,要采取什么动作。对于所考虑的每一个策略,通过跟对手进行一定数量的游戏来估计其获胜概率。然后,该评估将指导下一步考虑哪些策略。一种典型的进化方法会在策略空间中爬山,相继生成和评估策略以试图获得渐进式改进。或者,也许可以使用遗传式算法来维护和评估一系列策略。实际上,可以应用数百种不同的优化方法。

 

 

下面是如何用一个利用值函数的方法来处理井字棋问题。首先,我们建立一个数字表,每个数字表代表游戏的可能状态。每个数字都是我们从那个状态获胜的概率的最新估计。我们把这个估计值作为状态的值,整个表就是学习好的值函数。如果我们从A中胜出的概率的当前估计值高于从B中胜出的概率,则状态A的值高于状态B,或被认为比状态B“更好”。

 

 

Figure 1.1: A sequence of tic-tac-toe moves.

 

转载请注明出处

.实线表示游戏中采取的动作;虚线表示我们(我们的强化学习者)考虑但没有采取的动作。我们的第二步是探索性的动作,这意味着即使其他(导向 e)兄弟分支的排名更高,一个动作也会被采取。探索性动作不会导致任何学习,但我们的其他每个移动都会导致反向更新(backup),如曲线箭头所示和文本中详细说明。

 

假设我们总是玩X,那么对于三个X在一条线上的所有状态,获胜的概率是1,因为我们已经赢了。 类似地,对于三个O在一条线上或者“填满”的所有状态,正确的概率为0,因为我们无法从中获胜。 我们将所有其他状态的初始值设置为0.5,表示我们猜想有50%的获胜机会。

 

我们和对手进行很多场比赛。为了选择我们的动作,我们将检查每个可能动作产生的状态(对于棋盘上的每个空格),并在表中查找它们的当前值。大多数时候,我们都是贪婪地移动,选择一个能带来最大值的状态,也就是说,拥有最高估计获胜概率的状态。然而,

然而,偶尔我们会从其他动作中随机选择。这些被称为探索性动作,因为它们使我们经历我们可能从未见过的状态。在游戏中做出和考虑的一系列移动可以Figure 1.1所示。

 

当我们玩的时候,我们会改变我们在游戏中所找到的状态的值。我们试图让智能体更准确地估计获胜的可能性。为了做到这一点,在每次贪心移动到某个状态之后,我们都会“反向更新(back up)”移动前的状态的值。更准确地说,早期状态的当前值被调整为更接近后期状态的值。这可以通过将先前状态的值的一小部朝后期状态的值移动来实现。如果我们让s表示贪婪移动的状态,s’表示移动之后的状态,那么对s的估计值的更新,表示为V(s),可以写成。

 

其中是一个叫做步长参数的小正分数,它影响学习速度。这个更新规则是时序差分学习算法的一个例子,之所以称之为时序差分学习算法,是因为它的变化是基于一个在两个不同时间的估计值之间差,V(s')-V(s))。

 

上面描述的方法在这个任务上执行得相当好。例如,如果步长参数随时间适当减小,则对于任何固定的对手,该方法将收敛到我们的玩家在给定最佳发挥的每个状态下获胜的真实概率。此外,随后采取的动作(探索性动作除外)实际上是对抗对手的最佳动作。换言之,该方法收敛到玩这个游戏的最优策略。如果步长参数没有随着时间的推移一直减小到零,那么这个玩家也能很好地对抗那些缓慢改变其游戏方式的对手。

 

为了评估策略,进化方法将策略保持不变,并和对手进行许多游戏,或者使用对手的模型模拟许多场游戏。胜利的频率给出了对该策略获胜的概率的无偏估计,并且可用于指导下一个策略选择。但是每次策略更改都是在许多游戏之后进行的,并且只使用每个游戏的最终结果:在游戏期间发生的事情被忽略。例如,如果玩家赢了,那么它在游戏中的所有行为都会得到信任,而不考虑具体的动作对获胜有多重要。甚至对从未发生过的动作也给予了信任!相比之下,值函数方法允许评估单个状态。最后,进化方法和值函数方法都是搜索策略的空间,而学习值函数则利用了游戏过程中可用的信息。

 

这个简单的例子说明了强化学习方法的一些关键特性。首先,重点是与环境交互时的学习,在本例中是与对手玩家交互。第二,有一个明确的目标,正确的行为需要计划或预见,考虑到一个人选择的延迟影响。例如,简单的强化学习玩家将学习为目光短浅的对手设置多重动作陷阱。强化学习解决方案的一个显著特点是,它可以在不使用对手模型的情况下实现规划和前瞻的效果,并且不需要对未来状态和动作的可能序列进行明确搜索。

 

虽然这个例子说明了强化学习的一些关键特性,但它非常简单,可能会给人留下这样的印象:强化学习比实际情况更为有限。虽然井字棋是一个双人游戏,但强化学习也适用于没有外部对手的情况,即在“对抗自然的游戏”的情况下。强化学习也不局限于行为分解为单独的事件的问题,例如井字游戏的单独游戏,奖赏只在每个事件的结尾。当行为无限期地持续下去,并且在任何时候都能得到不同程度的奖赏时,这一点同样适用。强化学习也适用于甚至不分解为离散时间步骤的问题,例如井字棋游戏。一般原则也适用于连续时间问题,尽管理论变得更复杂,我们从这个介绍性的处理中省略了它。

 

井字棋具有相对较小的有限状态集,而当状态集非常大或甚至无限时,也可以使用强化学习。例如,Gerry Tesauro(1992,1995)将上述算法与人工神经网络相结合,学习玩西洋双陆棋,其具有大约1020个状态。在这么多的状下态,我们只能经历其中的一小部分状态。Tesauro的程序学习得远比先前的程序好,现在以世界上最好人类玩家的水平进行游戏(见第15章)。神经网络为程序提供了从其经验中归纳的能力,以便在新的状态下,它根据网络确定的从过去面临的类似状态中保存的信息来选择移动。一个强化学习系统在处理如此大的状态集的问题上能多好地工作,与它如何从过去的经验中适当地概括密切相关。正是在这个角色中,我们最需要有监督的学习方法和强化学习。神经网络并不是唯一或最好的方法。

 

在这个井字游戏的例子中,学习开始时没有除游戏规则外的事先知识,但强化学习绝不需要学习和智能的白板视图。相反,先验信息能以各种方式被纳入强化学习中,这对于有效学习至关重要。我们也可以在井字棋例子中获得真实的状态,而强化学习也可以在一部分状态被隐藏,或者在学习者看来不同的状态是相同的情况下应用。然而,这种情况实际上更为困难,我们在本书中并没有详细介绍。

 

最后,井字棋玩家能够展望未来,并了解每一个可能的动作将导致的状态。要做到这一点,它必须有一个游戏模型,让它能够“思考”环境会如何变化,以应对可能永远不会做出的动作。许多问题都是这样的,但在另一些问题中,甚至缺乏动作效果的短期模型。强化学习可以应用于任何一种情况。不需要模型,但如果模型可用或可以学习,则可以很容易地使用。

 

另一方面,有一些强化学习方法根本不需要任何类型的环境模型。无模型系统甚至无法考虑它们的环境将如何响应单个操作而发生变化。就其对手而言,井字棋玩家在这个意义上是无模型的:它没有任何类型的对手模型。由于模型必须相当精确才能发挥作用,因此当解决问题的真正瓶颈是难以构建足够精确的环境模型时,无模型方法比更复杂的方法具有优势。无模型方法也是基于模型方法的重要组成部分。在本书中,我们在讨论如何将无模型方法用作更复杂的基于模型的方法的组件之前,专门为无模型方法编写了几个章节。

 

但是强化学习可以在系统的高层次和低层次上使用。虽然井字棋玩家只学习游戏的基本动作,但是没有什么能阻止强化学习在更高层次上工作,因为每一个“动作”本身都可能是一种精细化的问题解决方法的应用。在分层学习系统中,强化学习可以同时在多个层次上工作。

1.6 Summary

强化学习是一种理解和自动化目标导向学习和决策的计算方法。它与其他计算方法的区别在于,它强调由一个agent从与其环境的直接交互中学习,而不依赖于示例性的监督或完整的环境模型。在我们看来,强化学习是第一个认真解决从与环境交互中学习以实现长期目标时出现的计算问题的领域。

强化学习使用一个正式的框架,从状态、动作和奖赏的角度定义学习agent与其环境之间的交互。该框架旨在成为一种简单的方式来表示人工智能问题的基本特征。这些特征包括因果感、不确定性和非决定性,以及明确目标的存在。

价值和值函数的概念是我们在本书中考虑的大多数强化学习方法的关键特征。我们认为值函数对于策略空间的有效搜索具有重要意义。它们对值函数的使用将强化学习方法与进化方法区分开来,进化方法直接在策略空间中搜索,以整个策略的标量评估为指导。

转载请注明出处

猜你喜欢

转载自www.cnblogs.com/qswg/p/10438498.html