【问题标题】:Q Learning Applied To a Two Player GameQ 学习应用于两人游戏
【发布时间】:2018-03-23 13:59:54
【问题描述】:

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

我制定了一个我认为可行的计划。只有一个部分我无法理解。这是因为环境中有两个参与者。

现在,Q Learning 代理应该对当前状态s、给定某些策略采取的操作a、给定操作的后续状态s' 以及从该后续状态收到的任何奖励采取行动,r。

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

现在,代理通常会对在给定动作中遇到的每个状态采取行动,并使用 Q 学习方程来更新先前状态的值。

但是,由于井字游戏有两个玩家,我们可以将状态集划分为两个。一组状态可以是学习代理转向行动的状态。另一组状态可能是对手转而采取行动的地方。

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

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

对此的任何帮助都会很棒,因为似乎没有任何在线内容可以帮助解决我的困境。

【问题讨论】:

    标签: python tic-tac-toe reinforcement-learning q-learning


    【解决方案1】:

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

    用于对抗随机代理

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

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

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

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

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


    请注意,这只会因为您写到对手是随机代理(或更重要的是,具有固定策略的非学习代理)而起作用。一旦对手也获得了学习能力,这将完全崩溃,你必须转向适当的多智能体版本的强化学习算法。

    【讨论】:

      【解决方案2】:

      Q-Learning 是 MDP(马尔可夫决策过程)领域的一种算法,即 MDP 和 Learning 在实际面对一个被执行的世界时。并且每个动作都会改变智能体的状态(有一定的概率)

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

      Q-Learning 在任何行动都有某种直接且可衡量的反应时最有效

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

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

      为了向前看 n 步并运行所有状态(以便稍后您可以选择最好的状态),如果空间太大,您可以使用蒙特卡罗树搜索(就像 GO 一样)

      井字游戏已经解决了,玩家按照最优策略可以取胜或平局,2个最优玩家将实现平局,完整的博弈树比较容易构建

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2015-03-17
        • 2019-06-15
        • 2019-10-28
        • 1970-01-01
        • 2011-12-24
        • 1970-01-01
        • 1970-01-01
        • 2016-06-09
        相关资源
        最近更新 更多