如何在神经网络的输出处执行诸如在国际象棋中移动合法性的规则? [关闭]

问题描述 投票:0回答:1

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

machine-learning tensorflow neural-network keras lstm
1个回答
4
投票

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

从论文Mastering Chess and Shogi by Self-Play with a General Reinforcement Learning Algorithm

国际象棋中的一个动作可以分为两部分来描述:选择要移动的棋子,然后在该棋子的合法动作中进行选择。我们用8×8×73的平面堆栈来表示策略π(a | s),这些平面编码超过4,672个可能移动的概率分布。 8×8位置中的每一个都标识了“拾取”一块的正方形。前56个平面为任何一块编码可能的“皇后移动”:沿着八个相对罗盘方向之一{N,NE,E,SE,S,其中一块将被移动的正方形[1..7] SW,W,NW}。接下来的8架飞机为这件作品编制了可能的骑士动作。最后的9架飞机可以分别对两个可能的对角线,即骑士,主教或车辆进行典当移动或捕获。其他从第七等级移动或捕获的棋子被提升为女王。

因此,例如,即使g1-f3上没有骑士,或者即使g1上没有棋子,也可以为移动e8=Q输出一个正概率移动e7,如果有女王,则允许输出d1-h5d1,但另一件是阻止对角线。

关键是它输出了可能移动的概率分布,并且由于它是通过对自己进行训练来训练的,只允许合法移动,它将学会输出非常低或零的非法移动概率。

更准确地说,在一定数量的自玩游戏之后,使用监督学习来训练网络以预测给定棋盘位置的移动的概率和值。在自我播放的最开始,网络具有随机权重,并且它将为许多不可能的移动输出显着的概率,但是在一次或多次监督学习的迭代之后,移动输出概率将开始看起来更合理。

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

此外,当网络使用其策略输出来玩游戏时,它可以简单地仅通过合法移动来规范化每个输出。通过这种方式,我们在自我游戏系统中强制执行移动合法性,但不在神经网络架构本身内。这将借助于移动发生器来完成。

既然你在询问keras,那么你可以将这样的输出层表示为:

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

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

© www.soinside.com 2019 - 2024. All rights reserved.