【发布时间】:2010-10-19 17:32:53
【问题描述】:
我想编写一个国际象棋引擎来学习如何走好棋并与其他棋手对抗。我已经编写了棋盘的表示和输出所有可能移动的函数。所以我只需要一个评估函数来说明董事会的给定情况有多好。因此,我想使用一个人工神经网络来评估给定的位置。输出应该是一个数值。数值越高,白棋的位置就越好。
我的方法是构建一个由 385 个神经元组成的网络:棋盘上有 6 个独特的棋子和 64 个区域。因此,对于每个字段,我们需要 6 个神经元(每块 1 个)。如果有白棋,则输入值为 1。如果有黑棋,则值为 -1。如果该字段上没有这种类型的块,则值为 0。除此之外,还应该有 1 个神经元供玩家移动。如果轮到白方,则输入值为1,如果轮到黑方,则值为-1。
我认为神经网络的配置相当不错。但是缺少主要部分:如何将这个神经网络实现为编码语言(例如 Delphi)?我认为每个神经元的权重在开始时应该是相同的。然后根据比赛结果调整权重。但是怎么做?我想我应该让 2 个电脑玩家(都使用我的引擎)互相对抗。如果白方获胜,黑方会得到反馈,称其权重不好。
因此,如果您能帮助我将神经网络实现为编码语言(最好是 Delphi,否则是伪代码),那就太好了。提前致谢!
【问题讨论】:
-
感谢您到目前为止的回答。我意识到用神经网络下棋是困难的或不可能的。但我的问题的第二部分是:你如何编写神经网络(例如我的配置)?我不知道,所以我期待得到一些建议。
-
检查这个:chesscircle.net/forums/…!
-
由于 SOTA 自 2009 年以来发生了显着变化,因此需要对此有更新的答案!使用深度 NL 与强化学习相结合当然可以学习下棋!
-
@KeirSimmons 欢迎您发帖,或添加赏金。
-
我想指出,用一个神经元来指示必须移动的玩家并不是一个好主意,你会遇到一些问题,因为对棋盘的评估不会是均匀的。如果是黑转,我建议你反转所有值,这样它就不会考虑黑与白,而是考虑玩家和对手。
标签: artificial-intelligence neural-network chess