哪种类型的神经网络最适合玩实时游戏?

人工智能 神经网络 人工智能设计 游戏-ai 隐藏层 即时的
2021-10-20 11:32:31

为了实现一个可以玩空气曲棍球的神经网络算法,我有两个输入想法,我试图找出哪种设计最可行。

输出必须是两个模拟值,指示机器人在特定时间点上半个桌子上的最佳位置,每秒评估 60 次。

咨询了一位有实现并行算法经验的教授,建议我使用单隐藏层的卷积神经网络,将图像数据直接处理为输入层,处理后可视化直接查看并以某种方式通过预处理强调冰球和木槌。我已经开始了这方面的工作,并使用 OpenCV 成功实现了冰球和木槌的对象检测,以获取所有 3 个实体的中心坐标。

然而,由于能够以每秒 60 次的速度成功和准确地预处理这些数据,我的想法是直接在输入层上输入这些数据(在使用误差函数标准化值之后),并可能实现一个深度学习算法,该算法采用不止一个隐藏层。问题是我没有任何实现神经网络的经验,所以我什至不确定哪种类型的层最适合这个,或者我应该如何设置权重。

我想考虑我的想法的另一个原因是,鉴于输入和输出相对较少,可能不需要 GPU 每秒执行 60 次前向传播,而使用我的教授推荐的卷积网络,我知道我需要以某种方式使用 CUDA 来实现。

最推荐这两种输入法中的哪一种,如果我要尝试实现我的想法,我应该考虑哪些类型的层?此外,对于任何一种方法使用现有框架的任何建议都将受到高度赞赏。

2个回答

我建议您阅读强化学习。看到 AirHockey 与旧 Atari 游戏 Pong 的相似之处,这里有一篇关于如何实现一个简单的神经网络来玩游戏的文章(带代码);深度强化学习:Pong from Pixels

至于层的选择,你应该再次阅读深度强化学习,也许研究一些现有的有效模型,以完成类似的任务,并将它们的架构作为你的起点。上面的链接很好地介绍了这种想法。

作为后续,我建议您使用一个众所周知的开发库,例如TensorFlowpyTorch它们将允许您按照您的意愿在 GPU 上运行您的模型。

有关专门用于强化学习的工具包,请参阅openAI gym

我还建议你看看 Uber AI Labs 的以下工作,他们使用了一种有趣的计算机游戏方法:

https://eng.uber.com/deep-neuroevolution/