【问题标题】:Q Learning Algorithm for Tic Tac Toe井字游戏的 Q 学习算法
【发布时间】:2015-03-17 06:54:11
【问题描述】:

我不明白如何更新井字游戏的 Q 值。我阅读了所有相关内容,但我无法想象如何做到这一点。我读到Q值是更新游戏结束,但我不明白是否每个动作都有Q值?

【问题讨论】:

    标签: machine-learning artificial-intelligence tic-tac-toe reinforcement-learning q-learning


    【解决方案1】:

    每个状态-动作对都有一个Q 值。在执行每个操作后更新一个 Q 值。更准确地说,如果从状态 s1 应用操作 a1 让您进入状态 s2 并为您带来一些奖励 r,那么您更新 Q(s1, a1) 如下:

    Q(s1, a1) = Q(s1, a1) + learning_rate * (r + discount_factor * max Q(s2, _) - Q(s1, a1))
    

    在许多游戏中,例如井字游戏,直到游戏结束您才能获得奖励,这就是为什么您必须通过几集运行算法。这就是关于最终状态效用的信息如何传播到其他状态的方式。

    【讨论】:

    • 感谢您的回复。但是我无法理解井字游戏的Q学习。你说直到游戏结束你才能得到奖励。我得到了它。但是我无法理解机器如何决定第一个动作?例如,我输入“X”,机器输入“O”。机器如何决定把这个“O”放在哪里,因为我知道完整的游戏只有一个 Q 值。
    • 井字游戏是一款两人游戏。使用 Q-Learning 学习时,您需要在学习时与对手对抗。这意味着您需要实现另一种算法(例如 Minimax),自己玩或使用另一种强化学习代理(可能是相同的 Q-learning 算法)。
    • 要决定在特定状态下采取何种行动,您需要一个策略。实施 Q-Learning 时的一个常见选项是使用 epsilon-greedy(具有衰减 epsilon),它考虑了探索和利用之间的权衡。
    • 感谢您的回复
    • 不,在 SARSA 算法中,您不会在 s2 中取 Q 的最大值。在 SARSA 中,您使用策略选择操作 a2,然后更新 Q(s1, a1),考虑使用 Q(s2, a2) 而不是 max(Q(s2, _))
    【解决方案2】:

    标准 Q 学习算法的问题在于,将值从最后一步传播到第一步所需的时间太长,因为您只知道游戏结束时的结果。

    因此应该修改 Q Learning 算法。以下论文详细介绍了可能的修改:

    1. 游戏结束后给予非负奖励(平局除外),然后不会在每个动作步骤执行 Q 更新(这不会改变任何内容),但是 仅在游戏结束后
    2. Q 更新是通过传播上一次移动的新值来执行的 回到第一步
    3. 由于两人游戏的轮流性质,另一个更新公式也考虑了对手的观点

    摘要:

    本文报告了我们将 Q 学习算法应用于 学习玩井字游戏。原算法修改为 仅在游戏结束时更新 Q 值,传播 从最后一步向后移动到第一步的更新过程,以及 合并新的更新规则。我们评估代理性能 使用全板和部分板表示。在这个 评估,代理与人类玩井字游戏 玩家。评估结果表明,修改后的性能 具有部分棋盘表示的 Q Learning 算法具有可比性 和人类玩家一样。

    Learning to Play Tic-Tac-Toe (2009) by Dwi H. Widyantoro & Yus G. Vembrina

    (不幸的是,它位于付费墙后面。您可以访问 IEEE 档案,也可以要求作者在 researchgate 上提供一份副本:https://www.researchgate.net/publication/251899151_Learning_to_play_Tic-tac-toe

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-04-15
      • 2016-05-09
      • 1970-01-01
      • 1970-01-01
      • 2015-12-02
      • 2020-08-22
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多