我打算编写一个使用深度卷积神经网络来评估棋位置的象棋引擎。我将使用位板来表示板状态,这意味着输入层的位置应具有12 * 64个神经元,玩家移动时应具有1个神经元(黑色代表0,黑色代表白色),而4个神经元具有铸造权利(wks, bks,wqs,bqs)。将有两个隐藏层,每个隐藏层各有515个神经元,一个输出神经元的值在黑人获胜时为-1,在白人获胜时为1,在相等位置时为0。所有神经元将使用tanh()激活功能。
我曾考虑过通过给CNN提供许多由Stockfish评估的职位来使用监督学习,但决定不这样做,因为从某种意义上讲,它只是复制了另一个引擎的评估功能。
因此,我决定使用强化学习,调整自玩游戏的权重和偏见。但是,当我无法对给定位置进行正确评估时,如何训练神经网络呢?我如何“告诉”给定的举动是一个错误,而另一个举动却是出色的?
我已经阅读了一些有关该主题的论文和文章,但在解释训练过程时似乎都没有解释神经网络的调整...
非常感谢所有答案:))
答案 0 :(得分:0)
简单来说,给定所有棋盘的位置,代理处于特定的状态。每个状态都有一个值,可以通过多种方法(如果使用的是深层RL,则是神经网络)可以获知该值。通过在后续状态中的预期收益(回报)来获知状态值。因此,您可以通过模拟环境并从中获得奖励来训练神经网络。奖励以及状态值将用作训练您的神经网络的目标。