我的目标是创建一个神经网络,它可以学习使用康威生命游戏的规则来预测棋盘的下一个状态。
从技术上讲,我有三个问题,但我觉得他们需要在一起才能全面了解。
我的网络将单独查看每个单元(以降低所需的计算能力并提高学习速度)及其周围的单元。网络的 9 个输入节点将进入一个隐藏层。输出层将是游戏下一个状态中该单元状态的一个节点。
节点有两种状态(活动和死亡),节点之间的连接可以传输该值或反转它。
对于学习部分,我打算利用突变和自然选择。起始网络将具有没有隐藏层和连接的输入和输出层。然后我的想法是通过添加节点并将它们随机连接到输入和输出来随机生成许多新网络来引入突变。中间层的节点数量将限制为 512,因为有 512 个可能的输入;但是,如果它太慢,我可能会减少它。
我是否也应该让它随机删除节点和连接,以防它们也做出改进?
每个网络都将在相同的电路板状态下进行测试,其准确性将通过将其输出与计算机程序生成的正确输出进行比较来计算。最准确的网络将用于下一代。
我的问题是我不知道如何对节点进行编程。隐藏层中的节点应该对其所有输入执行逻辑 AND 还是 OR?
我知道网络在最初的几个回合内不会学习规则,但我怎么知道它是否会达到 90% 以上的准确率,甚至只有 50%?