QUANT[19]强化学习(Reinforcement Learning)学习笔记7

21 篇文章 1 订阅
10 篇文章 0 订阅

Reinforcement Learning:An Introduction NOTE[5]

1.5 拓展例子:井字棋

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

​ 想想我们熟悉的孩子玩的井字棋。棋手在三行三列的棋盘上博弈,一个棋手下X,另一个下O。若X或O的连续三个棋子落于一行或一列或同一斜线上则获胜;若棋盘被填满也不能决出胜负则为平局。让我们假设,我们是在和一个不完美的棋手比赛,他的战术有时是不正确的,并且允许我们获胜。而且,让我们考虑平局和亏损对我们同样不利。我们如何构建一个能在对手的游戏中发现玩家的漏洞,并取得最大化获胜的机会的机器棋手?

​ 虽然这是一个简单的问题,但传统方法难以很好地解决。例如,博弈论中经典的“极小极大”解在这里是不正确的,因为对手可能有特殊的博弈方式。极小极大棋手从不去他可能输棋的局面,就是由于对手的失误他可能能胜出(For example, a minimax player would never reach a game state from which it could lose, even if in fact it always won from that state because of incorrect play by the opponent)。经典的连续决策问题的最优方法,如动态规划,可以计算出任何对手的最优解,但要求输入该对手的全部规格,包括对手在每个基础状态(board state,不明白)下移动的概率。让我们假设在问题无法获得这些先验信息,因为它不适用于大多数实际问题。另一方面,这样的信息可以从经验中估计,在这个例子上就是和对手下棋。最好能学习对手的行为模式,达到一定的置信水平(some level of confidence),然后应用动态规划来计算近似的对手模型的最优解。这与我们在本书后面研究的强化学习方法没有什么不同。

​ 这个问题的一种进化方法将直接搜索一个策略空间以找到最可能赢的那个。在这里,一个策略是告诉玩家在游戏中的各个状态下如何进行移动的规则既3*3的板子上x和o所有可能摆放的位置。我们考虑策略中,获胜的估计概率将通过与对手进行一些比赛来获得。这一评估将决定下一步将考虑哪个或哪些策略。一种典型的演化方法是在策略空间中进行爬坡,然后在尝试进步的过程中依次生成和评估策略。或者,也许可以使用遗传算法来维护和评估一组策略。实际上,我们有上百种不同的优化方法。

​ 下面是使用值函数的方法来解决黑白棋问题的方法。首先,我们建立了一个数字表,每个数字对应一个游戏状态每一个数字将是我们获胜的最新估计。我们把这个估计看作是状态的价值,整个表是学习的值函数。如果A的胜率高于B,我们就认为A的价值高于B,或A比B更好。假设我们玩X,那么所有三个X居于一列的获胜的概率是1,因为我们已经赢了。同样地,对于所有三个O居于一列,或者所有三列被“填充”(or that are “filled up),获胜的概率是0,因为从那时起我们就不可能赢了。我们将所有其他状态的初始值设为0.5,表示猜测我们有50%的获胜机会。

​ 我们和对手打了许多场比赛。为了选择我们的动作,我们检查每个动作可能产生的状态(在棋盘上的每个空格中有一个),并在表中查找它们当前的值(上一段的价值)。大多数时候,我们贪婪地移动,选择最有价值的运动,也就是说,以最高的获胜概率。然而,偶尔我们会从其他动作中随机选择。这些被称为探索性的行动,因为它们使我们体验到我们可能从未见过的状态。在游戏中移动和考虑的序列可绘制成图1.1。

图1.1:一系列井字棋移动。实线表示游戏中所采取的动作;虚线表示我们(强化学习播放器)考虑但未做的动作。我们的第二次移动是一个探索性的举措,这意味着e*所表示的移动在等级上优于当前举动。探索性的动作不会导致任何学习,但我们的其他动作都会产生更新,导致了如弧线箭头所显示的那种更新–如文中所写,估计值自下而上的产生了变化。

Figure 1.1: A sequence of tic-tac-toe moves. The solid lines represent the moves taken during a game; the
dashed lines represent moves that we (our reinforcement learning player) considered but did not make. Our
second move was an exploratory move, meaning that it was taken even though another sibling move, the one
leading to e, was ranked higher. Exploratory moves do not result in any learning, but each of our other moves
does, causing updates as suggested by the curved arrow in which estimated values are moved up the tree from
later nodes to earlier as detailed in the text.

​ 当我们下棋的时候,游戏中根据状态不断改变值,使这些值能更准确地估计获胜的可能性。为了做到这一点,在贪婪移动后,我们重写前一状态的值(we “back up” the value of the state after each greedy move to the state before the move)。更准确地说,前一状态的当前值被更新以接近后续状态的值。这可以通过将前一状态值稍向后状态值靠近一小部分来完成(This can be done by moving the earlier state’s value a fraction of the way toward the value of the later state)。如果让s表示在移动前的状态,s‘表示移动后状态,那么将s的估计值的更新表示为V(s),可以写成

 Python 通过简单的强化学习实现井字棋(Tic-Tac-Toe)


https://blog.csdn.net/JerryLife/article/details/81385766

其中x是一个小的正分数,称为步长参数,它影响学习速度。
此更新规则是时间差学习方法的一个示例,之所以这么称呼它,是因为它的更改是基于两个不同时间估计值之间的差异V (s0) - V (s)。
上面描述的方法在这项任务中表现得很好。
例如,如果步长参数随时间适当减小,那么对于任何固定的对手,该方法将收敛于我们的玩家给定的每个状态下获胜的真实概率。
此外,所采取的行动(除了探索性的行动)实际上是针对这个(不完美的)对手的最佳行动。
换句话说,该方法收敛于与该对手进行博弈的最优策略。

如果步长参数没有随时间减少到0,那么这个玩家在面对慢慢改变游戏方式的对手时也能玩得很好。

这个例子说明了演化方法和学习值函数的方法之间的差异。为了评估一个策略,进化方法持有策略盒并与对手进行多次博弈,或者使用对手的模型模拟多次博弈。获胜的频率给出了该策略获胜概率的无偏估计,并可用于指导下一个策略选择。但是每个策略更改只在许多游戏之后进行并且只使用每个游戏的最后总结果:忽略了游戏期间发生的事情。例如,如果玩家赢了,那么它在游戏中的所有行为都将得到奖励,independently of how specic moves might have been critical to the win.甚至连从未发生过的动作也会受到赞扬! 相反,值函数方法允许对各个状态进行评估最后,演化方法和价值函数方法都是对策略空间的搜索,而价值函数的学习利用的是博弈过程中的信息。

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

虽然这个例子说明了强化学习的一些关键特征,但它太简单了,可能会给人一种强化学习比实际更有限的印象。虽然三棋是两人游戏,但强化学习也适用于没有外部对手的情况,也就是说,在与自然对抗的情况下。”强化学习也不局限于将行为分解为单独的章节的问题,就像三子棋的单独游戏,只有在每一章节的结尾才有奖励。它同样适用于行为不确定持续的情况,以及在任意时候得到不同数额的奖励的情况。强化学习也适用于那些甚至不能分解成离散时间步长的问题,比如井字游戏。一般原则也适用于连续时间问题,尽管理论变得更加复杂,我们在这个介绍性的处理中省略了它。(毕竟基本框架是MDP,能分状态就行)

 井字游戏有一个相对较小的有限状态集,而强化学习可以在状态集非常大,甚至无限时使用。例如,Gerry Tesauro(1992,1995)将上述算法与人工神经网络相结合,学习下约有1020种状态的西洋双陆棋。有了这么多的状态,我们不可能体验到比其中一小部分更多的状态。Tesauro的程序比以前的任何程序都玩得好得多,现在的水平已经达到了世界上最好的人类玩家的水平(参见第16章)。神经网络为程序提供了从经验中归纳的能力,因此,在新的状态下,它根据从过去面临的类似状态中保存的信息(由其网络决定)来选择移动。强化学习系统处理如此大的状态集问题的能力与它从过去经验中总结出的恰当程度密切相关。正是在这种情况下,我们最需要监督学习方法和强化学习。神经网络和深度学习章节9.6)不是唯一的,或者不一定是最好的方法。

在这个井字游戏的例子中,学习一开始并没有超越游戏规则的先验知识,但是强化学习绝不是学习和智力的白板。相反,先验信息可以通过多种方式被整合到强化学习中,这对有效学习至关重要。在井字游戏的例子中,我们也获得了真实的状态,而强化学习也可以应用于部分状态被隐藏的时候,或者当不同的状态在学习者看来是相同的时候。

最后,井字游戏者能够向前看并知道每一个可能的移动会产生的状态。要做到这一点,它必须有一个游戏模型,让它能够“思考”自己的环境将如何变化,以应对自己可能永远不会采取的行动。许多问题都是这样,但在另一些问题中,甚至缺乏行动效果的短期模型。强化学习可以应用于任何一种情况。不需要模型,但是如果模型可用或可以学习,就可以很容易地使用它们(第8章)。

另一方面,有些强化学习方法根本不需要任何环境模型。无模型系统甚至不能考虑它们的环境将如何响应单个操作而改变。从这个意义上说,井字游戏的玩家是无模式的:它没有任何对手的模式。因为模型必须相当精确。当解决问题的真正瓶颈是难以建立足够精确的环境模型时,有用的、无模型的方法比更复杂的方法具有优势。无模型方法也是基于模型方法的重要构件。在本书中,在讨论如何将它们作为更复杂的基于模型的方法的组件之前,我们将用几个章节来讨论无模型方法。

强化学习可以用于系统的高水平和低水平。尽管井字游戏玩家只学习了游戏的基本动作,但没有什么能阻止强化学习在更高层次上工作,因为在更高层次上,每一个“动作”本身都可能是一个复杂的问题解决方法的应用。在分层学习系统中,强化学习可以在多个层次上同时进行。

练习1.1:自我游戏假设,上述的强化学习算法不是与随机的对手进行游戏,而是与自己进行游戏,双方都进行学习。你认为在这种情况下会发生什么?它会学习不同的招数选择策略吗?

1.一开始学习会变慢,但是会比固定玩家对手的情况下学习到更多招数,

最后收敛速度会变慢,也许不会收敛

2.会的

练习1.2:对称性 许多井字游戏的位置看起来不同,但因为对称性而实际上是相同的。我们如何修改上述学习过程以利用这一点呢?这种改变会在哪些方面改善学习过程?现在再想想。假设对手没有利用对称性。那样的话,我们应该吗?那么,对称等价的位置必然具有相同的值,这是真的吗?

 

练习1.3:贪心游戏假设 强化学习游戏者是贪心的,也就是说,他总是会走到他认为最好的位置。它会比一个不贪心的玩家玩得更好,还是更差?可能会出现什么问题?

 

练习1.4:从Exploration学习   :假设所有的动作(包括探索性的动作)之后都发生了学习更新。如果随时间适当减少步长参数(但不减少探索的趋势),则状态值将收敛于一组概率。当我们做的时候,和我们不做的时候,从探索性的动作中得到的两组概率是什么?假设我们继续探索,哪一组概率可能更好学?哪一个会带来更多的胜利?

 

练习1.5:其他改进你能想到其他方法来改进强化学习玩家吗?你能想出更好的办法来解决所提出的井字游戏问题吗?

 

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值