强化学习训练深度神经网络

时间:2020-08-04 14:00:58

标签: deep-learning neural-network conv-neural-network reinforcement-learning chess

我打算编写一个使用深度卷积神经网络来评估棋位置的象棋引擎。我将使用位板来表示板状态,这意味着输入层的位置应具有12 * 64个神经元,玩家移动时应具有1个神经元(黑色代表0,黑色代表白色),而4个神经元具有铸造权利(wks, bks,wqs,bqs)。将有两个隐藏层,每个隐藏层各有515个神经元,一个输出神经元的值在黑人获胜时为-1,在白人获胜时为1,在相等位置时为0。所有神经元将使用tanh()激活功能。

我曾考虑过通过给CNN提供许多由Stockfish评估的职位来使用监督学习,但决定不这样做,因为从某种意义上讲,它只是复制了另一个引擎的评估功能。
因此,我决定使用强化学习,调整自玩游戏的权重和偏见。但是,当我无法对给定位置进行正确评估时,如何训练神经网络呢?我如何“告诉”给定的举动是一个错误,而另一个举动却是出色的?

我已经阅读了一些有关该主题的论文和文章,但在解释训练过程时似乎都没有解释神经网络的调整...

非常感谢所有答案:))

1 个答案:

答案 0 :(得分:0)

简单来说,给定所有棋盘的位置,代理处于特定的状态。每个状态都有一个值,可以通过多种方法(如果使用的是深层RL,则是神经网络)可以获知该值。通过在后续状态中的预期收益(回报)来获知状态值。因此,您可以通过模拟环境并从中获得奖励来训练神经网络。奖励以及状态值将用作训练您的神经网络的目标。