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


11

我想知道如何训练基于神经的棋盘游戏,如井字游戏,国际象棋,风险游戏或其他基于轮的游戏的神经网络。通过推论游戏状态作为输入并使用输出作为当前玩家的举动,通过推论得出下一步行动似乎是很直接的。但是,为此目的训练AI似乎不是那么简单,因为:

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

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

Answers:


10

好问题!NN对于此类问题非常有前途:长颈鹿国际象棋。赖的成就被认为是一个很大的成就,但不幸的是,在AlphaGo成为焦点之前仅几个月。(事实证明一切都很好,尽管后来赖先生被DeepMind聘用,尽管对于长颈鹿引擎而言不是很好;)

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


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

您列出的游戏又被称为“ 抽象 ”游戏,以区别于现代战略桌面游戏或一般游戏,后者具有很强的主题,并且在机制和元素方面通常不如抽象游戏紧凑。这就警告了抽象游戏不限于连续游戏,棋盘游戏,甚至不限于特定游戏,例如Sudoku之类的谜题。

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


7

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

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

我将简要解释常见策略。

  • 网络的目的是学习位置评估。我们都知道皇后比主教强,但是我们可以在不进行显式编程的情况下使网络知道吗?那典当的结构呢?网络是否了解如何评估职位是否获胜?

  • 现在,我们知道了为什么需要网络,我们需要对其进行设计。研究之间的设计存在根本差异。在深度学习流行之前,人们正在使用浅层网络。如今,具有许多层的网络脱颖而出。

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

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

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

  • 最后,我们有一个受训的国际象棋中性网络模型!

请查看以下资源以获取详细信息:

https://chessprogramming.wikispaces.com/学习


只有小家伙在这里
昆腾尼亚

这是一个示例,说明在不进行概述的情况下提供外部链接可能会在将来造成损害。由于提供的链接已失效
Greg Hilston '19年

4

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

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.