我无法理解如何更新tic tac toe游戏的Q值。我读了所有这些,但我无法想象如何做到这一点。我读到Q值在游戏结束时更新了,但我不明白,如果每个动作都有Q值?
答案 0 :(得分:6)
每个状态 - 操作对都有Q
值。在执行每个操作后,您将更新一个Q
值。更确切地说,如果从状态a1
应用操作s1
,您将进入状态s2
并为您带来一些奖励r
,那么您更新Q(s1, a1)
如下:< / p>
Q(s1, a1) = Q(s1, a1) + learning_rate * (r + discount_factor * max Q(s2, _) - Q(s1, a1))
在许多游戏中,例如井字游戏,直到游戏结束才获得奖励,这就是为什么你必须通过几集来运行算法。这就是关于最终状态效用的信息如何传播到其他状态。
答案 1 :(得分:2)
标准Q学习算法的问题在于,将值从最终值传播到第一步只需要太长时间,因为您只知道游戏结束时的结果。
因此应修改Q学习算法。以下文章提供了可能的修改的一些细节:
摘要:
本文报道了我们应用Q学习算法的实验 学习玩Tic-tac-toe。原始算法由。修改 仅在游戏终止时更新Q值,传播 更新过程从最后一步向后移动到第一步,并且 合并新的更新规则。我们评估代理商的表现 使用全板和部分板表示。在这 评估时,代理人会玩人类的井字游戏 玩家。评估结果表明改进后的性能 具有部分板表示的Q学习算法具有可比性 对于人类玩家而言。
Learning to Play Tic-Tac-Toe (2009) by Dwi H. Widyantoro & Yus G. Vembrina
(不幸的是,它是在付费墙后面。要么您可以访问IEEE档案,要么可以要求作者提供研究门户的副本:https://www.researchgate.net/publication/251899151_Learning_to_play_Tic-tac-toe)