构建一个自学的井字游戏

数据挖掘 机器学习 数据挖掘 爪哇
2021-09-29 20:16:03

假设我们收集了一个巨大的数据库,其中包含每个玩家玩并获胜的获胜序列。(两个玩家都被编程,以获得随机数并尝试玩游戏)。

使用每个玩家为未来比赛收集的这些获胜序列的最佳方式是什么?我们是否要在不使用历史数据的情况下编写一个事件来播放,而使用历史数据编写少数其他事件?

保存获胜序列的最佳方法是什么,玩家一和玩家二所走的整个路径,还是只保存获胜玩家使用的序列?

这是我第一次尝试机器学习范式,希望可以得到一些支持!

1个回答

几年前,我在 Coursera 上参加了计算机科学入门课程,我们不得不使用蒙特卡罗算法来构建井字游戏 AI。我们没有使用历史数据,而是使用一个函数生成数据,该函数将通过一系列随机动作进行游戏,但我认为原理基本相同。

棋盘上的每个方块都有一个与之相关的单独分数。对于完成的每一场比赛,分数会根据哪个玩家获胜而变化。如果指定为机器玩家的玩家获胜,则机器玩家在棋盘上放置标记的每个格子的得分将增加,而“其他”玩家的分数将在其放置标记的每个格子中减少。相反,如果另一个玩家赢了,它的分数会随着棋盘上它放置标记的每个方格增加,而机器玩家的分数会降低。如果比赛是平局,每个方格的点数不会改变。

所以,为了回答你的问题,我认为跟踪获胜者和失败者的行动很重要,因为我们不仅需要知道什么有效,而且什么无效。

编辑:我只记得我的第一个实施并没有为输掉的比赛在网格上扣除分数,因此,我的 AI 有一个全面的“进攻”策略。换句话说,它专注于在不努力阻止人类玩家的情况下获得三连胜。这就是为什么跟踪导致损失的动作很重要的原因。