在学习了神经网络的基础知识并编写了一个使用 MNIST 数据集的代码之后,我想通过制作一个能够玩游戏的游戏来进行下一步。我想让它在像slither.io这样的游戏上运行。所以,为了能够创建多个snake实例并加快游戏速度,我重新创建了一个简单的游戏版本:
核心功能即将完成,现在是人工智能的工作。我想通过仅使用 NumPy 来保持脚本非常简单(并不是说我对 TensorFlow、PyTorch 或 Spark 不感兴趣,但我想在使用这些框架之前从“低层次”理解事物)。
起初,我希望 AI 能够通过读取像素来提出输出。但经过一些研究,我真的不想涉足卷积网络、递归和递归神经网络。我想重新使用我对 MNIST 所做的简单前馈 NN 并对其进行调整。
因此,我想我将使用以下数据,而不是使用像素:
- {x,y} 蛇的位置
- {x,y} 食物位置
- 食物价值
- 时间,为了得到蛇,在短时间内吃更多的食物。
- 距中心的距离,不死在区域外
需要处理很多不同的数据!
我的问题
- 一个简单的 FNN 可以在输入层处理不同类型的数据吗?
- 它会在可变数量的输入下正常工作吗?
事实上,在蛇周围的特定区域,食物的数量是可变的。我遇到了这篇文章,它回答了我的问题,但是如果我想让神经网络忘记一些没有被使用的输入,那么dropout在这种情况下会有什么用处。或者这些输入的权重值(向零校正)就足够了?