神经网络对连续蛇游戏的帮助

时间:2014-05-31 12:26:31

标签: artificial-intelligence neural-network genetic-algorithm

我正在尝试为'连续蛇'游戏实施AI。它与普通的蛇游戏非常不同,至少就人工智能而言。基本上,蛇的驾驶有点像汽车,而且两个玩家中的第一个撞到了他的小道,或者另一个小跑失去了比赛。屏幕也围绕着它的边界。

如果你看一下我目前进展的视频,你可以更好地理解它: https://www.youtube.com/watch?v=i9qU-r4COQ8

这不是太糟糕,但仍然无法击败我(我是黄色的)。 获胜的人工智能理想情况下需要展示这些行为:

  1. 避免墙壁
  2. 请注意它可以“让我缩短”(当我在我旁边时)。
  3. 避免'缩短'。
  4. 了解当前2d空间的拓扑结构,试图将我封闭在更小的空间内/保护自己更大的空间。
  5. 我目前的方法使用NEAT算法(http://www.cs.ucf.edu/~kstanley/neat.html)。 它是一种遗传算法,可以在几代人之间发展神经网络。它学会了如何在某种程度上做1,2和3(但不是很好)但不知道4。

    对于输入,我正在使用:

    • 相对于我们的对手角度
    • 对手与我们的距离
    • 对手前往相对于我们
    • 使用一定量的树搜索在某些方向上探测的智能光线(见视频)

    我现在有点卡住了,想知道:

    • 我应该研究什么类算法? Recurrent / RealTime / Continous / Unsupervised神经网络,......关于这些以及它们如何应用于我的问题的解释会很棒。
    • 我应该研究哪些具体算法?
    • 我可以使用哪些其他输入?人类玩家可以看到游戏中的所有像素,这比我简单的输入信息要多得多。但我不认为将我的例子中的200x200像素输入我的NN就可以了。也许如果我将它们离散化并使它们相对于AI位置/标题......听起来很棘手。

    如果有人想看到它(C#),我很乐意让我的代码可用。

    谢谢!

3 个答案:

答案 0 :(得分:0)

首先,如果要获得良好的效果,请使用深度卷积q学习,该方法会将图像作为输入。为了进一步改善,您可以输入三到四个连续图像的堆栈,这将有助于确定方向。我认为您无需使用lstm解决此问题,堆叠多个帧会很好。为了进一步改进,您可以将相同的代码转换为决斗网络。

如果您更喜欢快速结果更少的计算,则可以使用增强型随机搜索,但是如果没有经过仔细培训,它可能会进入本地最大值。

答案 1 :(得分:0)

这里的主要问题是您的学习算法没有足够的信息(除非您正在使用递归功能)。基本上,您要让每个帧通过几个距离传感器导航迷宫-不可能。

singhV之前所说的是正确的-为了获得良好的结果,学习算法的输入必须是图像(以及您自己的头部位置和角度)。您可以降低分辨率,然后转换为单色以提高效率。

关于您的问题: *循环网络是可以记住先前状态并基本上像“内存”一样使用的网络。这不是您完成此任务所需要的(除非您真的想保持输入原样,但那条蛇将不得不学习“记住”它所看到的一切-这将是非常令人印象深刻的,但太难了) *无监督:这意味着没有可以学习的“示例”,而是通过正面/负面反馈(失败=不好)来学习。您的网络是不受监督的。 *实时/连续-不知道,除了2007年的一些Microsoft研究外,我什么也没找到:https://www.microsoft.com/en-us/research/publication/continuous-neural-networks/

顺便说一下,NEAT非常整洁,我很高兴遇到这个问题!

答案 2 :(得分:0)

我还不能发表评论,所以我将在这里发表我的建议,但我不希望它能完全回答您的问题,只是您可以借鉴的想法。

1)尝试输入可用于“蛇”移动的可用区域。这可能不容易做到,您将不得不做一些假设。例如:假设对手走的路线使您的区域最小化,或更简单地说,对手保持相同的方向。

2)尝试输入积极的策略,这意味着计算对手的可用区域。该算法可以尝试将您的区域最大化,同时将对手区域最小化。

3)最后,尝试使用与人工神经网络不同的方法。如果将问题表述为最小化/最大化任务,则可以使用许多方法来解决。

顺便说一下!