如何表示国际象棋 AI 的目标变量

数据挖掘 机器学习 深度学习
2022-02-16 17:01:28

受到谷歌最近的 AlphaGo 项目的启发,我决定作为一个有趣的个人挑战,我想使用深度学习和卷积神经网络来构建一种算法,当难度设置为专家时,它可以击败普通的国际象棋程序。我的国际象棋很糟糕,而且通常无法击败简单/中等以上的计算机,因此制作比我聪明得多的东西(至少在国际象棋方面)听起来很迷人。

问题: 预测下一个最佳棋步的目标变量应该是什么样的?

我已经建立了很长时间的预测模型,但我无法解决这个问题。一些让我感到困惑的事情:

  • 我相信围棋的目标变量只是棋盘上的整个空间网格。在国际象棋中,合法移动的数量是有限的,随着整个游戏过程中棋子从棋盘上移走,合法移动的数量会不断减少。如何表示缩小的目标空间?
  • 并非所有棋子都有相同的规则集(例如:皇后对骑士)。我是否需要以某种方式明确地编码这些规则,或者深度学习会自动学习它们吗?

笔记:

  • 我知道 alpha-beta 修剪和准蛮力搜索技术已被证明在国际象棋中表现良好,但是,我特别想使用深度学习来代替。

  • AlphaGo 从监督学习 (SL) 开始,研究记录的专家人类动作以制定策略网络等。就我而言,我只是尝试做监督学习部分,当我这样做时,我很难定义目标变量。这就是我问题的根源。

2个回答

在基本模型中,目标变量将是特定棋盘位置的得分。

那么让我们仔细看看这句话的各个部分。

对于得分,您可以取任何数字,但 Giraffe 论文建议在给定的棋盘位置(例如 -1 和 1 之间的数字)中取胜机会。

您首先需要确定所有可能的(合法)移动。假设您找到 42 个候选动作。每一步都对应一个棋盘位置。每个棋盘位置都有一个分数(= 目标变量)。

因此,您必须预测 42 个棋盘位置的得分,并且在简化模型中,采取导致最高得分的动作。

在训练模型之前,您必须为训练集中的棋盘位置分配一个分数,以便构建您的模型并能够对新的棋盘位置进行预测。因此,您必须找到一种方法来分配分数,手动或通过现有的国际象棋引擎,或两者的组合。

顺便说一句,国际象棋规则决定了可能的合法走法,这是第一步,也很重要。

还有更多,但我希望这能回答这个问题。这个描述本身并不构成高级引擎,但它可能是推理如何构建引擎的开始。