gpt4 book ai didi

python - Q 学习应用于两人游戏

转载 作者:行者123 更新时间:2023-11-28 18:14:19 26 4
gpt4 key购买 nike

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

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

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

让我们将其放入一个元组 (s, a, r, s')

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

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

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

我觉得应该是后者,因为这可能会影响对手赢得比赛时更新Q值。

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

最佳答案

一般来说,如果您假设对手也可以学习,那么直接将 Q-learning 应用于两人游戏(或其他类型的多智能体环境)不太可能产生很好的结果。但是,你特别提到

for playing against a random agent

这意味着它实际上可以工作,因为这意味着对手不会学习/改变其行为,因此您可以可靠地将对手视为“环境的一部分”

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

因此,在元组 (s, a, r, s') 中,我们有:

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

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


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

关于python - Q 学习应用于两人游戏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49451366/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com