我想用人工神经网络来玩Tic-tac-toe。我对网络的配置如下:对于9个字段中的每个字段,我使用2个输入神经元。所以我有18个输入神经元。对于每个字段,我有一个输入神经元用于玩家1的一块,一个神经元用于玩家2的一块。除此之外,我还有一个输出神经元给出了当前棋盘位置的评估。输出值越高,1号玩家的位置越好,2号玩家的位置越低。
但我的问题是:我如何编写这个神经网络?我的想法是使用Array1-18作为输入神经元。该数组的值是输入权重。I将使用循环遍历数组。每当有一个神经元被激活时,我就把权重加到输出值上。因此,输出值是激活的输入神经元的权重之和:
Output = SUM(ActivatedInputNeurons)您认为这是网络编程的好方法吗?你有更好的主意吗?
我希望你能帮助我。提前感谢!
发布于 2009-04-17 17:22:06
那么,你有一个由18个神经元组成的输入层,和一个由1个神经元组成的输出层。没关系。然而,你需要给你的神经网络一个将输入放入关系中的机会。为此,您至少需要一个中间层。我建议在中间层使用9个神经元。它们中的每一个都应该连接到每个输入神经元,输出神经元应该连接到每个中间层。每个这样的连接都有一个权重,每个神经元都有一个激活水平。
然后,你检查所有的神经元,一次一层。输入层只是用板子状态激活的。对于所有其他神经元,您将遍历其所有相应的连接,并将连接的神经元的激活水平和连接的权重的乘积相加。最后,通过对此总和应用sigmoid函数来计算激活级别。
这就是工作原理。现在,你需要训练这个网络以获得更好的结果。有几种算法可以做到这一点,你必须做一些谷歌和阅读。最后,当结果不够令人信服时,你可能想要调整神经元和层数。例如,您可以将输入层减少到9个神经元,并使用X的+1和O的-1激活它们。也许添加另一个中间层可以获得更好的结果,或者增加一层的神经元数量。
发布于 2009-04-17 16:59:51
我不是特别理解您如何期望从一个输出神经元中获得有意义的董事会情况摘要。我会更多地考虑拥有:
I I I O O O
I I I x O O O
I I I O O O
9 input neurons 9 output neurons在完全连接的网络中,即81个权重。然后训练输出神经元,以获得在该位置玩游戏的相对可取性。
发布于 2010-07-30 06:21:38
看看我的Tic项目。我已经用神经网络和遗传算法解决了这个问题。源代码是免费提供的。
http://www.roncemer.com/tic-tac-toe-an-experiment-in-machine-learning
https://stackoverflow.com/questions/761216
复制相似问题