如何为基于回合的棋盘游戏训练神经网络?

人工智能 训练 张量流 游戏-ai
2021-11-13 21:19:41

我想知道如何为基于回合的棋盘游戏(如井字游戏、国际象棋、风险或任何其他基于回合的游戏)训练神经网络。通过推理获得下一步行动似乎非常简单,将游戏状态作为输入并将输出用作当前玩家的行动。然而,为此目的训练人工智能似乎并不那么简单,因为:

  1. 单招好不好可能没有评分,所以单招训练似乎不是正确的选择
  2. 使用整个游戏的所有游戏状态(输入)和移动(输出)来训练神经网络,似乎不是正确的选择,因为在输掉的游戏中并非所有移动都可能是坏的

所以我想知道如何为基于回合的棋盘游戏训练神经网络?我想使用 tensorflow 为井字游戏创建一个神经网络。

3个回答

好问题!NN 对这类问题非常有前途:长颈鹿国际象棋Lai 的成就被认为是一个相当大的成就,但不幸的是在 AlphaGo 成为聚光灯前几个月。(结果一切顺利,Lai 随后被 DeepMind 聘用,尽管对 Giraffe 引擎来说不是很好;)

我发现赖的方法很有帮助,并且得到了可靠结果的支持。


您可能想要使用“顺序”而不是“基于回合”,因为顺序是博弈论组合博弈论中的首选术语,这些领域将数学分析应用于游戏。

您列出的游戏被进一步称为“抽象”,以将它们与现代战略棋盘游戏或一般游戏区分开来,后者利用强烈的主题并且在机制和元素方面通常不如抽象游戏紧凑。需要注意的是,抽象游戏不仅限于顺序游戏或棋盘游戏,甚至不限于游戏,例如数独等谜题。

这组游戏的正式名称通常是“党派、顺序、确定性完美信息”,井字游戏进一步分为“琐碎”(已解决且容易解决)和非琐碎(难以解决且未解决)的游戏。象棋和围棋之类的游戏。

我是一名国际象棋选手,我的答案只会在国际象棋上。

用强化学习训练神经网络并不是什么新鲜事,在文献中已经做过很多次了。

我将简要解释常见的策略。

  • 网络的目的是学习位置评估。我们都知道女王比主教更强大,但是我们可以在不明确编程的情况下让网络知道它吗?典当结构呢?网络是否了解如何评估一个位置是否获胜?

  • 现在,我们知道为什么需要网络,我们需要设计它。研究之间的设计根本不同。在深度学习流行之前,人们使用的是浅层网络。如今,多层网络脱颖而出。

  • 一旦我们有了网络,您就需要制作一个国际象棋引擎。神经网络本身并不能神奇地下棋,它需要连接一个国际象棋引擎。幸运的是,我们不需要编写位置评估代码,因为网络可以为我们做到这一点。

  • 现在,我们必须玩游戏。我们可以从一些高质量的国际象棋数据库开始,或者让我们的 AI 代理与另一个玩家(例如它自己、另一个 AI 代理或人类)玩游戏。这被称为强化学习

  • 当我们玩游戏时,我们会更新网络参数。这可以通过随机梯度下降(或其他类似技术)来完成。只要我们愿意,我们就会重复我们的训练,通常是数百万次迭代。

  • 最后,我们有一个经过训练的国际象棋神经网络模型!

详情请查看以下资源:

https://chessprogramming.wikispaces.com/Learning

我认为你应该熟悉强化学习。在这个机器学习领域,代理与其环境进行交互,然后代理获得一些奖励。现在,代理是神经网络,环境是游戏,代理可以在获胜时获得奖励 +1,如果失败则获得 -1。你可以使用这个状态、动作、奖励经验元组来训练代理。我也可以推荐 David Silver 在 youtube 上的讲座和 Sutton 的书。