Q 学习应用于两人游戏

Q Learning Applied To a Two Player Game

我正在尝试实施 Q Learning 代理来学习在井字游戏中与随机代理对战的最佳策略。

我制定了一个我相信会奏效的计划。只有一部分我无法理解。这是因为环境中有两个参与者。

现在,Q Learning 智能体应根据当前状态 s、给定某些策略采取的动作 a、给定动作的后续状态 s' 采取行动,以及从该连续状态收到的任何奖励,r

让我们把它放到一个元组中 (s, a, r, s')

现在通常情况下,智能体会根据给定的动作发现自己遇到的每个状态,并使用 Q 学习方程来更新先前状态的值。

但是,由于 Tic Tac Toe 有两个玩家,我们可以将状态集分成两个。一组状态可以是学习代理转向行动的状态。另一组状态可以是对手轮到采取行动的地方。

那么,我们需要将状态一分为二吗?或者学习代理是否需要更新游戏中访问的每个状态?

我感觉应该是后者,因为这可能会影响到对手获胜时Q值的更新。

任何对此的帮助都会很棒,因为网上似乎没有任何东西可以帮助我解决困境。

Q-Learning是来自MDP(Markov Decision Process)领域的算法,即MDP和Learning在实际面对一个正在行动的世界。每个动作都会改变代理的状态(有一定的概率)

该算法的基础是,对于任何动作,世界都会给出反馈(反应)。

Q-Learning 当任何行动都有某种即时且可衡量的反应时效果最佳

此外,这种方法从一个代理人的角度看世界

我的建议是将代理实现为世界的一部分。就像一个玩各种策略的 be bot,例如随机、最佳动作、固定布局,甚至是一个工具,它的逻辑是 q-learning

为了向前看 n 步和 运行 所有状态(以便稍后您可以选择最好的状态)如果 space 大小太大,您可以使用 monte-carlo 树搜索(就像 GO 一样)

Tic-Tac-Toe游戏已经解出,玩家按照最优策略可以赢或者平局,2个最优玩家会平局,完整的博弈树很容易搭建

一般来说,如果您假设对手也可以学习。但是,你特别提到

for playing against a random agent

这意味着它实际上可以工作,因为这意味着对手没有学习/改变其行为,因此您可以可靠地将对手视为“'a part of the environment'”.

完全做到这一点也可能是您可以采用的最佳方法。将对手(和他的行为)视为环境的一部分意味着您基本上应该完全忽略对手移动的所有状态。每当你的智能体采取行动时,你也应该立即为对手产生一个行动,然后才将结果状态作为下一个状态。

所以,在元组 (s, a, r, s') 中,我们有:

  • s = 您的代理人要搬家的州
  • a = 您的代理执行的操作
  • r = one-step 奖励
  • s' = 您的代理将再次移动的下一个状态

对方要移动的状态,做出的动作,完全没有出现。它们应该被简单地视为环境中不可观察的、不确定的部分。从你的算法来看,在ss'之间没有其他状态,其中有一个对手可以采取行动。从您的算法的角度来看,环境只是不确定的,这意味着在状态 s 中采取行动 a 有时会随机导致 s',但有时也可能随机导致不同的状态 s''.


请注意,这只会准确地起作用,因为你写道对手是一个随机代理(或者更重要的是,一个 non-learning 具有固定策略的代理) .一旦对手也获得了学习能力,这将完全崩溃,您必须继续使用适当的 multi-agent 版本的强化学习算法。