我开发了一个“Pong”风格的游戏,它实际上在屏幕底部有一个球,左右有弹性墙,顶部有粘性墙。它随机选择底部的一个点(在水平直线上)和一个随机的角度,从侧壁反弹,并击中顶壁。这将重复 1000 次,每次都是发射位置的 x 值、发射角度和它在顶壁上碰撞的位置的最终 x 值。
这给了我 2 个输入 - 发射和发射角度的 x 值和 1 个输出 - 最终位置的 x 值。我尝试使用具有 2 个输入节点、2 个隐藏节点(1 层)和 1 个输出节点的多层感知器。然而,它会收敛到大约 20 点,然后逐渐变小。这是我尝试过的,但都没有帮助,要么错误永远不会收敛,要么开始发散:
所以,在花了一个晚上和一个早上,让我的大脑和 body 对我产生反感之后,我希望有人能帮我找出这里的问题。这是神经网络无法解决的任务还是我做错了什么?
PS:我用的是Neuroph的网络版而不是编码我自己的程序。至少这将帮助我避免实现中的问题
最佳答案
如果它没有最小化训练错误,那很可能是实现中的错误。另一方面,如果您在保留的测试集上测量准确度,那么一段时间后误差上升也就不足为奇了。
至于公式,我认为有足够的训练数据和足够长的训练时间,一个足够复杂的神经网络可以学习映射,无论你是否对输入进行二值化(前提是你使用的实现支持非二元输入和输出)。我对上面句子中“足够”的含义只有一个模糊的概念,但我敢猜测 1000 个样本是行不通的。还要注意,网络越复杂,估计参数通常需要的数据就越多。
关于neural-network - 神经网络不收敛 - 使用多层感知器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12930517/