【问题标题】:Reinforcement learning for training deep neural network用于训练深度神经网络的强化学习
【发布时间】: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


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 2012-05-30
      • 2023-02-01
      • 1970-01-01
      • 1970-01-01
      • 2019-10-20
      • 2020-05-15
      • 2018-10-05
      • 1970-01-01
      • 2018-01-09
      相关资源
      最近更新 更多