如何创建和训练(通过变异和选择)神经网络来预测棋盘的下一个状态?

人工智能 神经网络 遗传算法 收敛
2021-11-08 04:26:43

我的目标是创建一个神经网络,它可以学习使用康威生命游戏的规则来预测棋盘的下一个状态。

从技术上讲,我有三个问题,但我觉得他们需要在一起才能全面了解。

我的网络将单独查看每个单元(以降低所需的计算能力并提高学习速度)及其周围的单元。网络的 9 个输入节点将进入一个隐藏层。输出层将是游戏下一个状态中该单元状态的一个节点。

节点有两种状态(活动和死亡),节点之间的连接可以传输该值或反转它。

对于学习部分,我打算利用突变和自然选择。起始网络将具有没有隐藏层和连接的输入和输出层。然后我的想法是通过添加节点并将它们随机连接到输入和输出来随机生成许多新网络来引入突变。中间层的节点数量将限制为 512,因为有 512 个可能的输入;但是,如果它太慢,我可能会减少它。

我是否也应该让它随机删除节点和连接,以防它们也做出改进?

每个网络都将在相同的电路板状态下进行测试,其准确性将通过将其输出与计算机程序生成的正确输出进行比较来计算。最准确的网络将用于下一代。

我的问题是我不知道如何对节点进行编程。隐藏层中的节点应该对其所有输入执行逻辑 AND 还是 OR?

我知道网络在最初的几个回合内不会学习规则,但我怎么知道它是否会达到 90% 以上的准确率,甚至只有 50%?

1个回答

回复:我是否也应该让它随机删除节点和连接,以防它们也做出改进?
您可能会阅读有关“辍学”的信息。在这种情况下,它不是首选,因为过度拟合实际上是一种好处。

回复:隐藏层中的节点应该对其所有输入执行逻辑与还是或?
神经网络中没有逻辑运算。您需要将输入乘以权重。最后,您将得到一个需要将其转换回 1 或 0 的分数,在这里我建议您查看“softmax”,它是一个完全用于此目的的激活函数。

回复:我怎么知道它是否会超过 90% 的准确率,甚至只有 50%?
正如 Jaden 建议的那样,您将需要一个基准。您可以简单地从您的其他帖子中获取我的结果。(即在 20 个 epoch 中达到 100%)

我同意贾登的观点,你的桌子上有很多东西。也许首先开发一个 DNN 来学习 GOL 是有意义的,您将需要激活、损失计算和至少一个优化器。一旦经过测试和工作,您就可以从遗传算法的第二个模型开始,该模型需要不同的损失函数以及遗传操作、种群选择等。不错的大项目,祝你好运!