gpt4 book ai didi

machine-learning - 我使用 MLP 制作国际象棋引擎的方法有什么问题?

转载 作者:行者123 更新时间:2023-11-30 09:14:54 26 4
gpt4 key购买 nike

我正在使用机器学习制作一个国际象棋引擎,但在调试它时遇到了问题。我需要帮助找出我的程序出了什么问题,如果有任何帮助,我将不胜感激。

我进行了研究,并从多个成功的项目中借鉴了想法。这个想法是使用强化学习来教导神经网络区分强弱位置。

我收集了超过2000个Elo的300万个游戏,并用我自己的方法给它们贴上标签。在研究了数百场比赛后,我发现,可以有把握地假设,在任何比赛的最后 10 回合中,平衡不会改变,获胜方拥有强大的优势。所以我从最后 10 回合中选择了位置并制作了两个标签:一个表示白色获胜,零表示黑色。我没有包括任何平局位置。为了避免偏见,我为双方选择了偶数个标有胜利的位置,并为双方下一回合选择了偶数个位置。

每个位置I由一个长度为773个元素的向量表示。棋盘上每个方格上的每个棋子,以及易位权和下一回合,我都用 1 和 0 进行编码。我的顺序模型有一个包含 773 个神经元的输入层和一个包含一个神经元的输出层。我使用了三隐藏层深度 MLP,第 1、2 和 3 层分别具有 1546、500 和 50 个隐藏单元,每个层的 dropout 正则化值为 20%。隐藏层与非线性激活函数ReLU连接,而最终输出层具有sigmoid输出。我使用了二元交叉熵损失函数和带有所有默认参数的 Adam 算法,除了学习率,我将其设置为 0.0001。

我使用了 3% 的位置进行验证。在前 10 个 epoch 中,验证准确率逐渐从 90% 上升到 92%,仅落后训练准确率 1%。进一步的训练导致过度拟合,训练准确度上升,而验证准确度下降。

我在多个位置上手动测试了经过训练的模型,并得到了非常糟糕的结果。总体而言,如果哪一方有更多棋子或棋子靠近转换方 block ,则该模型可以预测哪一方获胜。它还给下一回合的一方带来了小优势(0.1)。但总体来说意义不大。在大多数情况下,它严重偏爱黑色(约 0.3)并且没有正确考虑设置。例如,它将起始位置标记为~0.0001,就好像黑方几乎有 100% 的获胜机会。有时,立场的不相关转变会导致评估的不可预测的变化。双方各有一张王和一张王后,通常被视为白棋败局(0.32),除非黑王在某个方格上,尽管这并没有真正改变棋盘上的平衡。

我做了什么来调试程序:

  1. 为了确保我没有犯任何错误,我分析了每个位置是如何记录的,一步一步。然后,在训练之前,我从最终的 numpy 数组中挑选了十几个位置,并将其转换回来,以便在常规棋盘上分析它们。

  2. 我使用了同一游戏中的不同数量的位置(1 和 6),以确保使用太多相似的位置不会导致快速过度拟合。顺便说一句,即使我的数据库中每场比赛的一个位置都会产生 300 万个数据集,根据一些研究论文,这应该足够了。

  3. 为了确保我使用的位置不会太简单,我对它们进行了分析。其中 130 万棋子有 36 分(马、象、车和后;兵不包括在计数中),140 万棋子有 19 分,只有 30 万棋子棋子较少。

最佳答案

您可以尝试的一些事情:

  1. 尽可能添加单元测试和断言。例如。如果您知道某个值永远不会变为负数,请添加一个断言来检查该条件是否确实成立。
  2. 打印所有张量的形状,以检查您是否真正创建了您想要的架构。
  3. 检查您的模型是否优于某些简单的基准模型。
  4. 您说您的模型过度拟合,所以也许可以简化它/添加正则化?
  5. 检查您的模型在最简单的位置上的表现。例如。它能识别将死者吗?

关于machine-learning - 我使用 MLP 制作国际象棋引擎的方法有什么问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58567509/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com