创建一个自学的马里奥赛车游戏 AI?

人工智能 神经网络 游戏-ai Python 自动驾驶汽车 整洁的
2021-11-18 03:35:58

我将在明年开展一个项目,创建一个自学 AI 来玩赛车游戏,目前游戏将是 Mario Kart 64。

我有几个问题希望能帮助我入门:

  1. 人工智能的哪些方面最适用于为赛车游戏创建自学游戏人工智能(Q-Learning、NEAT 等)
  2. 已经学会玩马里奥赛车 64 的 ANN 或 NEAT 可以用来学习玩其他赛车游戏吗?
  3. 我应该阅读哪些书籍/材料来进行这个项目?
  4. 在整个项目中我还应该考虑哪些其他因素?

谢谢您的帮助!

1个回答

人工智能的哪些方面最适用于为赛车游戏创建自学游戏人工智能(Q-Learning、NEAT 等)

一般来说,您正在研究一个涉及顺序决策的问题,在机器学习环境中。

如果您想构建一个可以通过接收屏幕图像来学习的代理,那么 NEAT 无法直接扩展到这种复杂性。尽管您可以应用深度学习和进化算法的巧妙组合,但在深度强化学习中将找到最深入探索和可能成功的解决方案。DQN、A3C、A2C、PPO 等算法。. . 有几十个需要考虑,但所有这些都是基于代理使用经验样本来更新衡量以某种方式(策略)行事的“价值”或直接估计最佳策略的函数。

已经学会玩马里奥赛车 64 的 ANN 或 NEAT 可以用来学习玩其他赛车游戏吗?

在限度内,是的。您将构建一个接受像素输入并输出控制器消息的系统。如果您在任何兼容的 N64 游戏(具有相同的屏幕分辨率和相同的控制器输出)上从头开始重新开始训练,它就有机会学会玩好新游戏。由于 N64 上的其他驾驶游戏是所有游戏的子集,并且比滚动射击游戏或冒险游戏更相似,因此能够成功学习一个的代理也可能学习另一个。

马里奥赛车经纪人不太可能在没有重新培训的情况下立即擅长另一场比赛。视觉和控制差异可能会太大。不过你可以试试。一个有趣的实验是让你训练有素的代理,或者它的一部分,看看从这开始是否会缩短新游戏的学习时间。这称为迁移学习。

我应该阅读哪些书籍/材料来进行这个项目?

您至少需要介绍强化学习的第一部分。如果你的目标是只做代理,那么你可以跳过理论重的部分,但在有限的范围内你理解的理论越多,就越容易改变代码特性以使某些东西工作。我可以提出以下建议:

在整个项目中我还应该考虑哪些其他因素?

在开始之前,您应该知道这可能是一个雄心勃勃的项目,使用当前可用的工具包需要大量的计算时间。您需要提前考虑一下,因为您将面临以下决定:

  • 对你来说是更重要的是在这个问题上制作一个工作机器人,还是更重要的是理解底层理论以便你了解正在发生的事情。您至少需要在两者中都做一点,但您可以朝任何一个方向努力:
    • 互联网上有足够多的预构建学习代理,您可以通过学习足够的知识来连接游戏副本,然后让学习代理完成其工作,从而获得一个成功的项目。这对你来说足够了吗,你会觉得你已经解决了你的问题吗?
    • 有大量关于 RL 及其背后的数学原理的教育材料。如果您有兴趣了解这一点,并可能产生自己的想法来改进当前算法,那么您需要更加努力地研究这些材料。但是,这可能会导致您偏离您的马里奥赛车玩家目标,并且您可能永远无法真正解决它,因为需要较少计算能力的简单得多的问题实际上在学术上仍然很有趣。

另外,我可以想到以下几点:

  • 打造您的马里奥赛车玩家是一个长期目标。您需要从更简单的代理开始,以了解您希望应用于马里奥赛车的技术。

  • 您可能需要比您现有的更多的计算能力来解决这个游戏。

  • 您将需要解决 N64 仿真器的自动控制问题。至少有一个现有的模拟器Mupen64Plus - 我不知道它是否适合你,但至少有人试图在gym-mupen64plus 项目中包装它以进行自动学习。