使用神经网络的国际象棋位置评估

时间:2020-02-01 22:28:54

标签: python keras neural-network

我正在开发一种应该能够下棋的AI。我想利用keras神经网络来评估董事会的位置。我想通过在AI和AI之间玩很多游戏来教NN。我已经实现了 alpha-beta修剪

我的想法是创建一个csv文件,其中包含AI玩过的每个游戏的位置。我会选择要存储在其中的变量。很简单的例子:

"white_pawns","black_pawns","white_queens","black_queens","white_pawns_on_side","white_won"
3,7,1,2,0,False
3,5,3,0,1,True

我想使用这些值来训练模型,然后用它来评估当前板的位置。所以主要问题是:

在给定这些变量的情况下,如何使神经网络输出位置值?例如0绘制时,1绘制时。首选keras,但我可以使用其他python库。

如果您能消除我的其他一些疑问,我也将不胜感激。 这种方法有什么缺陷吗?单个游戏的每个位置都会使神经网络过度拟合吗?也许我每场比赛只能选几个位置?

1 个答案:

答案 0 :(得分:0)

我想您知道这一点,但是当一个人评估木板时,他不仅在看材料,而且还在看棋子的位置。其次,使用此csv,如果看到的只是真或假,则无法决定哪个电影更好。这就是为什么发动机的评估是数值的。还是要它输出一个从-1到1的数字,然后是分数?希望做同样的事情,但对于白获胜,则执行1;对于黑获胜,则执行-1;对于平局,则执行0(在数据集文件中)。如果您想和我一起做,请打我(是否有用于堆栈溢出的消息传递服务?)。

结论

我认为输入应该是董事会的数字表示形式,目标不应是分类器,而应该是数字分类器。它实际上更简单。

我有一个正在使用的python引擎,这是一个认识新朋友的机会。

这只是我的第一个答案,所以如果有不清楚的地方,请发表评论,我会尽力提供帮助!

同样,如krish所说,这可以通过强化学习来实现。但首先您需要制作一个dqn(深度q网络(q学习是一种非常流行的强化学习算法)),为此您需要另一个网络。因为如果没有的话,这将花费很多时间进行训练。

相关问题