优化遗传神经网络解决Tic Tac Toe

时间:2016-05-08 19:03:35

标签: python machine-learning neural-network genetic-algorithm tic-tac-toe

我在Python中编写了一个具有以下结构的神经网络:

  • 9个输入神经元,一个用于游戏的3x3网格中的每个可能空间。它们的价值将是:
    +1(ai' s move),-1(对手的移动),0(如果为空)
  • 隐藏图层中的 9 神经元
  • 9个输出神经元,每个可能的移动一个。我选择价值最高的那个。如果该举动是非法的,我会考虑以下最高等等。

当每个输入设置为0时,我添加了偏差以允许初始移动。 所以我有两个权重矩阵, W1 (输入和隐藏之间)和 W2 (隐藏和输出之间), 10x9

我已经设置了遗传算法以找到最佳值。
我使用 10作为popoulation大小。人口的每个神经网络将与 100个对手神经网络战斗,随机权重不会进化。每50代我就会重生所有的重量。每个神经网络的适应度值的值如下: 2 *(n。胜利)+(抽签数) - 4 *(损失数n) 然后我选择五个最好的神经网络,然后在下一代中复制它们。我还通过交换权重并以10%的概率引入随机突变来生成其他五个神经网络。

我可以看到健身价值几乎每一代都在上升。每50个,可预测的,它会下降,因为反对者'改变,然后再次开始上升。
经过500代,我收集了更新后的重量,并尝试了一个训练有素的神经网络对抗一个新的对手,一个随时随机移动的程序。我得到了90%的胜利,9%的平局和1%的损失。然而,对于人类玩家来说,击败网络仍然很容易。

如何提高最终神经网络的质量?也许需要更多代?还是一个不同的健身功能?在选择过程中我可以改进什么?

0 个答案:

没有答案