如何在视频游戏中规范化机器学习(神经网络)的输入

时间:2017-07-18 13:39:23

标签: machine-learning neural-network artificial-intelligence

最近,我一直在创建神经网络,计划训练他们玩我所做的游戏(神经网络可以访问所有游戏数据)。我对神经网络,遗传算法和NEAT实现有很深的理解。然而,我遇到的问题是将玩家看到的输入规范化。如果我们有敌人对象,medkit对象和武器对象,则需要输入和处理它们。我看到了来自SethBling here的视频,在那里他简要解释了他如何设置神经网络。他只使用了值1,0和-1。但是,对于更复杂的游戏,这是行不通的。当输入为.25< 25时,我尝试使用小模拟返回true。 x< .75并且否则为假,但它无法找到解决方案。因此,似乎我不能只将对象的ID扔到神经网络中。非常感谢任何帮助!

2 个答案:

答案 0 :(得分:1)

我打算发表评论,但不幸的是我没有足够的声望点。所以,我有一些建议,希望能给你一些想法。我将假设您使用NEAT算法作为游戏算法。现在,从我收集的问题来看,因为你在游戏中有不同数量的实际物体要与之交互,所以几乎不可能为每一帧提供标签。因此,正如您似乎已经想到的那样,您需要为对象提供非整数域,无论是通过类的总数还是其他方法将检测到的类ID标准化。为了尝试完成这个(或避免问题),我有3个命题:

1:使用某种类型的图像处理(无论是分割还是阈值处理),对象检测以及图像时刻,以便创建您感兴趣的对象数据库,然后在游戏进行时,您可以重新创建一个更简单的实际游戏环境版本

2:训练语义分割神经网络以执行类似于1

的操作

3:训练(或使用预训练的)深度卷积神经网络来提取高级特征。然后使用这些功能(可能还有某种位置编码方法)作为NEAT算法的输入。然后,您的NEAT算法将选择要查看的过滤器组合,以便做出决定。

我想我会亲自尝试3号选项,因为它需要最少量的手动工作才能初步设置。

我希望这会给你一些想法。

答案 1 :(得分:0)

当使用神经网络时,一个好的方法是将它们视为人类。人类需要知道什么? 我一直在做的是为不同类型的东西提供网络不同的传感器。我的传感器几乎总是只有一定长度的光线。 在你的情况下,我相信你没有比使用3个传感器作为硬币,3个传感器用于药物等更好的选择。 你还必须决定是否要使用布尔传感器(它只会告诉网络是否有东西触发了传感器,无论多么接近)或双传感器(它会返回一个值告诉网络事件发生的接近程度)或者如果你想两者合并。