我正在开发一种应该能够下棋的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
库。
如果您能消除我的其他一些疑问,我也将不胜感激。 这种方法有什么缺陷吗?单个游戏的每个位置都会使神经网络过度拟合吗?也许我每场比赛只能选几个位置?
答案 0 :(得分:0)
我想您知道这一点,但是当一个人评估木板时,他不仅在看材料,而且还在看棋子的位置。其次,使用此csv,如果看到的只是真或假,则无法决定哪个电影更好。这就是为什么发动机的评估是数值的。还是要它输出一个从-1到1的数字,然后是分数?希望做同样的事情,但对于白获胜,则执行1;对于黑获胜,则执行-1;对于平局,则执行0(在数据集文件中)。如果您想和我一起做,请打我(是否有用于堆栈溢出的消息传递服务?)。
我有一个正在使用的python引擎,这是一个认识新朋友的机会。
这只是我的第一个答案,所以如果有不清楚的地方,请发表评论,我会尽力提供帮助!
同样,如krish所说,这可以通过强化学习来实现。但首先您需要制作一个dqn(深度q网络(q学习是一种非常流行的强化学习算法)),为此您需要另一个网络。因为如果没有的话,这将花费很多时间进行训练。