【发布时间】:2015-03-17 06:54:11
【问题描述】:
我不明白如何更新井字游戏的 Q 值。我阅读了所有相关内容,但我无法想象如何做到这一点。我读到Q值是更新游戏结束,但我不明白是否每个动作都有Q值?
【问题讨论】:
标签: machine-learning artificial-intelligence tic-tac-toe reinforcement-learning q-learning
我不明白如何更新井字游戏的 Q 值。我阅读了所有相关内容,但我无法想象如何做到这一点。我读到Q值是更新游戏结束,但我不明白是否每个动作都有Q值?
【问题讨论】:
标签: machine-learning artificial-intelligence tic-tac-toe reinforcement-learning q-learning
每个状态-动作对都有一个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))
在许多游戏中,例如井字游戏,直到游戏结束您才能获得奖励,这就是为什么您必须通过几集运行算法。这就是关于最终状态效用的信息如何传播到其他状态的方式。
【讨论】:
s2 中取 Q 的最大值。在 SARSA 中,您使用策略选择操作 a2,然后更新 Q(s1, a1),考虑使用 Q(s2, a2) 而不是 max(Q(s2, _))。
标准 Q 学习算法的问题在于,将值从最后一步传播到第一步所需的时间太长,因为您只知道游戏结束时的结果。
因此应该修改 Q Learning 算法。以下论文详细介绍了可能的修改:
摘要:
本文报告了我们将 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)
【讨论】: