井字游戏等游戏中的神经网络与遗传算法?


9

目前,我正在做一个有关创建AI来玩Gomoku游戏的项目(这就像井字游戏,但在15 * 15的板上玩,要连续赢5个)。我已经使用Q学习成功地实现了一个完美的井字游戏AI,并将游戏状态/动作存储在表格中,但是对于15 * 15的游戏板,可能的游戏状态变得太大了,因此实施此项目也是如此。

我的问题是,我应该使用神经网络还是遗传算法解决这个问题?更具体地说,我应该如何实现呢?


2
欢迎使用AI!优秀的问题恕我直言。
周公克

Answers:


7

对于gomoku来说,使用神经网络或遗传算法似乎有点过大,因为这两者都需要一段时间,而且经常没有,不要按照自己的意愿去做。gomoku游戏树很大,但是您可以从minimax,游戏树修剪和良好的启发式功能(包括计数一半和全部2s,3s,4s等)中获得不错的AI。充分利用空间。

如果您不熟悉alpha beta修剪和minimax,请参阅https://www.cs.cornell.edu/courses/cs312/2002sp/lectures/rec21.htm

如果您真的想使用神经网络或遗传算法,则可以获取学习经验。关于神经网络,一种实现方法是:

  • 定义一个启发式函数,该函数接收板状态输入(空,黑,白的顺序为0,1,2),并输出板状态的“良好”值。神经网络是我们的启发式功能。
  • 假设这些游戏中的移动是最佳的,则可以训练当前最佳移动(通过您当前的参数)与数据表明最佳移动之间的差异。这就是我们定义错误函数的方式!因此,您正在使这种差异最小化,以便您的神经网络说的最强烈的动作在理论上是您的游戏数据说的最强烈的动作(此误差函数的优化可以通过反向传播或遗传算法来完成)。
  • 理想情况下,到现在为止,您现在可以将基于(“强”)神经网络的评估功能用于游戏树移动评估,而不是硬编码的启发式算法。

当然,这只是一种方式,您需要首先找到游戏数据。

附带说明,应用遗传算法可能会以多种方式发生,例如如上所述的神经网络中的参数优化或游戏树搜索,因此请确保清楚如何定义问题设置!应用神经网络的替代方法也是如此。

最后,了解gomuku已解决很有帮助。有关其他人的想法,请参阅 /programming/6952607/ai-strategy-for-gomoku-a-variation-of-tic-tac-toe


2
关于gomoku作为已解决游戏的妙语。这可以很容易地验证AI的强度(即它解决了游戏和表现完美的发挥,还是只是打更佳不是对手,如AlphaGo的情况下。)
DukeZhou
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.