从棋盘位置自动提取特征
我正在研究一个项目,在该项目中,我将棋盘位置(FEN字符串转换为二进制)及其评估分数并将其提供给一个神经网络。 我的目标是让神经网络区分好的和坏的位置。
我如何编码位置:国际象棋中有12个独特的棋子,即白棋和黑棋中的棋子,白嘴鸦,骑士,主教,皇后和国王。 我用4位编码每一块,其中0000表示一个空方块。 所以64个方格被编码成256位,我用了6个位来表示游戏状态,如轮到谁移动,国王城堡状态等等。
问题:由于国际象棋位置的输入空间既不平滑也不是单峰(棋盘位置的一个小变化会导致评估分数的巨大变化),因此神经网络学习不好。 现在,下一个合乎逻辑的事情就是提取有用的功能(如材料差异,中心控制等)并将其提供给网络。
我不想亲自挑选功能,因为我希望网络能够自行学习所有内容。 因此我正在考虑使用自动编码器自动提取功能。 有没有更好的方法来完成这个?
简介:从棋盘位置自动提取特征以便将其输入神经网络的最佳方法是什么?
更新:为了生成训练数据,我已经修改了干鱼将其评估过程转储到日志文件中。 因此,它考虑的每一个新动作(位置)都会以FEN字符串的形式写入文件以及它的eval分数
神经网络可以给出任何函数的近似值。 唯一需要考虑的就是搜索空间的维数,它会对数据量产生限制,您必须得到一个好的近似值。
对于一个受监管的网络(您使用自动编码器,那么我认为您使用的是反向传播的一些变体),因此您很难想象如何使用单个职位来完成训练,因为您在训练集中需要类似的职位。 也许你的方法是不同的,但我确信第二个策略(使用功能)更有前途。 我认为使用职位需要大量的数据培训才能获得好的结果。
对于功能看看这里,以及香农的经典作品。
我也从Crafty的源代码中提取了有用的信息。
但是你必须从FEN字符串中提取这些信息。
自动编码器是一种减少数据的方法(因为增加了性能,所以很好)。 如此处所报道的,使用主体部件易观察似乎更好。
我希望这可以帮助你。
链接地址: http://www.djcxy.com/p/84697.html上一篇: Automatic feature extraction from chess board positions