如何使用递归神经网络玩简单的2D Java 游戏?

How to use Recurrent Neural Network to play simple 2D Java game?

我用 LWJGL 做了一个简单的游戏,你可以通过躲避道路障碍来生存。游戏的唯一输入是向上和向下箭头键。我有一个 "sensors" 的二维数组,其中包含玩家周围区域的安全状态。有什么好的 Java RNN 库可用,我将如何将我的传感器阵列作为深度 rnn 的输入来实时训练它,并接收反馈是在路上还是在路上。我在下面附上了图片以帮助理解这个概念。

我还没有尝试过任何机器学习库,因为我不太了解如何在这种情况下使用它们,所以您的代码片段建议会派上用场。

//My "sensors"; status of player surroundings int[][] stuff = {{top1, top2, top3, top4},{mid1, mid2, mid3, mid4},{bottom1, bottom2, bottom3, bottom4}};

可以在 GitHub 中找到一些不错的库,但这不是您应该寻找的。要启动你的 RNN,你需要一种训练技术,我个人会推荐 NEAT(增强拓扑的神经进化),它在遗传算法中使用 RNN,有很多视频解释它是如何工作的以及在 Snake 等游戏中的实现(像这里:https://www.youtube.com/watch?v=BBLJFYr7zB8).如果你去 GitHub 并且就在 "Neural Network Neat" 你会发现多个 repos,剩下的就是实现它们!

您也可以使用反向传播或 qlearning,但我个人认为 bp 在这种特定情况下效果不佳,如果这是您的第一个 ml 项目,ql 有点高级。

我推荐这个 repo 不是因为它好,而是因为它简单而且它通过 (https://github.com/fabiorino/NeuralNetwork-plays-Pong)

以下是您需要执行的操作!

  • 转到主要 class,在我们的例子中是 Pong
  • 创建输入数组,实际上只是一个双精度数组
  • 在这一行更改 learn() 中的输入 "outputs = nn.getOutputs(inputs);"
  • 更改 gameOver() 中的健身分数
  • 改变 gameover() 中发生的事情

我想就是这样!

希望我帮到你,祝你好运!