【问题标题】:How to use Recurrent Neural Network to play simple 2D Java game?如何使用循环神经网络玩简单的 2D Java 游戏?
【发布时间】:2019-09-10 18:33:49
【问题描述】:

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

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

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

【问题讨论】:

  • "你的代码 sn-p 建议会派上用场" -- 抱歉,StackOverflow 不能这样工作。请访问help center 并阅读How to Ask 以了解如何使用本网站。

标签: java machine-learning recurrent-neural-network


【解决方案1】:

可以在 GitHub 中找到一些不错的库,但这不是您应该寻找的。要开始您的 RNN,您需要一种训练技术,我个人会推荐 NEAT(增强拓扑的神经进化),它在遗传算法中使用 RNN,有许多视频解释了它如何在像 Snake 这样的游戏中工作和实现(就像这里:@ 987654321@)。如果你去 GitHub 并找到“Neural Network Neat”,你会发现多个 repos,剩下的就是实现!

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

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

这是您需要执行的操作!

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

我想就是这样!

希望我有所帮助,祝你好运!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-08-18
    • 1970-01-01
    • 2017-11-08
    • 2014-01-21
    • 1970-01-01
    • 2017-06-07
    • 2016-11-12
    • 2016-04-05
    相关资源
    最近更新 更多