我在Python中编写了一个具有以下结构的神经网络:
当每个输入设置为0时,我添加了偏差以允许初始移动。
所以我有两个权重矩阵, W1 (输入和隐藏之间)和 W2 (隐藏和输出之间), 10x9 。
我已经设置了遗传算法以找到最佳值。
我使用 10作为popoulation大小。人口的每个神经网络将与 100个对手神经网络战斗,随机权重不会进化。每50代我就会重生所有的重量。每个神经网络的适应度值的值如下: 2 *(n。胜利)+(抽签数) - 4 *(损失数n)
然后我选择五个最好的神经网络,然后在下一代中复制它们。我还通过交换权重并以10%的概率引入随机突变来生成其他五个神经网络。
我可以看到健身价值几乎每一代都在上升。每50个,可预测的,它会下降,因为反对者'改变,然后再次开始上升。
经过500代,我收集了更新后的重量,并尝试了一个训练有素的神经网络对抗一个新的对手,一个随时随机移动的程序。我得到了90%的胜利,9%的平局和1%的损失。然而,对于人类玩家来说,击败网络仍然很容易。
如何提高最终神经网络的质量?也许需要更多代?还是一个不同的健身功能?在选择过程中我可以改进什么?