Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/tensorflow/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Machine learning 如何在神经网络的输出中执行象棋中的移动合法性等规则?_Machine Learning_Tensorflow_Neural Network_Keras_Lstm - Fatal编程技术网

Machine learning 如何在神经网络的输出中执行象棋中的移动合法性等规则?

Machine learning 如何在神经网络的输出中执行象棋中的移动合法性等规则?,machine-learning,tensorflow,neural-network,keras,lstm,Machine Learning,Tensorflow,Neural Network,Keras,Lstm,如何将规则(如国际象棋规则)应用于神经网络,使网络不会预测/训练无效的移动?在AlphaZero国际象棋的示例中,网络的输出形状允许从任何正方形开始的任何棋子的所有可能移动 从报纸上看: 国际象棋中的一步可以分为两个部分:选择要移动的棋子,然后 在该乐曲的合法舞步中进行选择。我们用8×8×73表示策略π(a | s) 编码4672个可能移动概率分布的平面堆栈。每一个都是8×8 位置标识从中“拾取”工件的正方形。前56个平面编码 任何棋子可能的“皇后移动”:棋子将在其中移动的若干方块[1..7]

如何将规则(如国际象棋规则)应用于神经网络,使网络不会预测/训练无效的移动?

在AlphaZero国际象棋的示例中,网络的输出形状允许从任何正方形开始的任何棋子的所有可能移动

从报纸上看:

国际象棋中的一步可以分为两个部分:选择要移动的棋子,然后 在该乐曲的合法舞步中进行选择。我们用8×8×73表示策略π(a | s) 编码4672个可能移动概率分布的平面堆栈。每一个都是8×8 位置标识从中“拾取”工件的正方形。前56个平面编码 任何棋子可能的“皇后移动”:棋子将在其中移动的若干方块[1..7] 沿着八个相对罗盘方向之一{N,ne,E,SE,S,SW,W,nw}移动。这个 接下来的8架飞机对该棋子可能的骑士动作进行编码。最后9个平面在两个可能的对角线上对典当移动或捕获的可能不足的推进进行编码,分别为骑士、主教或骑士 分别是鲁克。第七等级的其他棋子移动或捕获提升为 女王

因此,例如,允许网络为移动
g1-f3
输出正概率,即使
g1
上没有骑士,或者为移动
e8=Q
输出正概率,即使
e7
上没有棋子,或者
d1-h5
如果
d1
中有女王,但另一个棋子挡住了对角线

关键是它输出可能移动的概率分布,并且由于它是通过在只允许合法移动的情况下与自身对抗来训练的,因此它将学会输出非常低或零的非法移动概率

更准确地说,在一系列的自玩游戏之后,使用监督学习对网络进行训练,以预测给定棋盘位置的移动概率和移动值。在自我游戏开始时,网络具有随机权重,它将输出大量不可能移动的显著概率,但经过一次或多次监督学习迭代后,移动输出概率将开始看起来更加合理

AlphaZero团队选择这种架构而不是在网络中强制执行规则的原因很简单:输出必须采用固定的大小,因为应该有固定数量的输出神经元。不同数量的输出神经元对应不同数量的合法动作是没有意义的。或者,将网络内的非合法移动的输出归零是没有意义的,因为这将是一个高度非标准的操作,可能是运行反向传播的噩梦。你需要区分一个象棋移动生成器

此外,当网络使用其策略输出玩游戏时,它只需通过合法的移动来规范每个输出。通过这种方式,我们在自我游戏系统中实施移动合法性,而不是在神经网络架构本身中。这将在移动生成器的帮助下完成

由于您询问的是keras,具体而言,您可以表示如下输出层:

model.add(Dense(4672, activation='softmax'))

总之:在预测国际象棋棋棋步的神经网络结构中,不一定要强制执行棋步合法性,我们可以允许所有可能的棋步(包括非法棋步),并训练网络输出非法棋步的低概率或零概率。然后,当我们使用移动概率进行游戏时,我们可以仅对合法移动进行规范化以获得所需结果,但这是在神经网络之外发生的。

在AlphaZero国际象棋的示例中,网络的输出形状允许从任何正方形开始的任何棋子的所有可能移动

从报纸上看:

国际象棋中的一步可以分为两个部分:选择要移动的棋子,然后 在该乐曲的合法舞步中进行选择。我们用8×8×73表示策略π(a | s) 编码4672个可能移动概率分布的平面堆栈。每一个都是8×8 位置标识从中“拾取”工件的正方形。前56个平面编码 任何棋子可能的“皇后移动”:棋子将在其中移动的若干方块[1..7] 沿着八个相对罗盘方向之一{N,ne,E,SE,S,SW,W,nw}移动。这个 接下来的8架飞机对该棋子可能的骑士动作进行编码。最后9个平面在两个可能的对角线上对典当移动或捕获的可能不足的推进进行编码,分别为骑士、主教或骑士 分别是鲁克。第七等级的其他棋子移动或捕获提升为 女王

因此,例如,允许网络为移动
g1-f3
输出正概率,即使
g1
上没有骑士,或者为移动
e8=Q
输出正概率,即使
e7
上没有棋子,或者
d1-h5
如果
d1
中有女王,但另一个棋子挡住了对角线

关键是它输出可能移动的概率分布,并且由于它是通过在只允许合法移动的情况下与自身对抗来训练的,因此它将学会输出非常低或零的非法移动概率

更准确地说,在一系列的自玩游戏之后,使用监督学习对网络进行训练,以预测给定棋盘位置的移动概率和移动值。在自我游戏开始时,网络具有随机权重,它将输出大量不可能移动的显著概率,但经过一次或多次监督学习迭代后,移动输出概率将开始看起来更加合理

AlphaZero团队选择这种体系结构而不是在网络中强制执行规则的原因很简单:输出必须采用固定的大小,因为应该有固定的numb