【发布时间】:2020-11-24 15:34:54
【问题描述】:
我打算编写一个国际象棋引擎,它使用深度卷积神经网络来评估国际象棋位置。我将使用位板来表示棋盘状态,这意味着输入层应该有 12*64 个神经元用于位置,1 个用于玩家移动(0 表示黑色,1 表示白色)和 4 个神经元用于易位权(wks, bks,wqs,bqs)。将有两个隐藏层,每个隐藏层有 515 个神经元,一个输出神经元的值在 -1 之间表示黑色获胜,1 表示白色获胜,0 表示相同位置。所有神经元都将使用 tanh() 激活函数。
我曾考虑通过向 CNN 提供 Stockfish 评估的大量位置来使用监督学习,但决定不这样做,因为这在某种意义上只会复制另一个引擎的评估函数。
因此我决定使用强化学习,调整自我游戏的权重和偏差。但是,当无法判断给定位置的正确评估是什么时,我该如何训练神经网络呢?我如何“告诉”它一个给定的动作是一个错误而另一个动作是优秀的?
我已经阅读了一些关于这个主题的论文和文章,但在解释训练过程时,似乎没有一篇能解释神经网络的调整...
非常感谢所有答案:))
【问题讨论】:
标签: deep-learning neural-network conv-neural-network reinforcement-learning chess