目前我正在开展一个项目,我正在为游戏创建一个AI播放器。我正在使用UCT算法,我计划添加一个对手移动的预测。为此,我想使用神经网络,但我遇到了一些问题:
我已经有一些数据可以为默认播放器构建一个基本的神经网络,即我以前没见过的播放器。问题是我想更新这个网,以便它适应每个特定的对手。我尝试过搜索在线神经网络算法,但到目前为止还不是很成功。你能给我一些如何实现这个的建议吗?如何在不完全从头开始训练的情况下根据新数据更新参数?
编码是用Java完成的,我尝试使用Weka来处理我拥有的数据。然而,我发现的唯一的神经网络分类器是Multilayer Perceptron。我熟悉单层感知器,我知道它的输出不是概率(与对数线性或朴素贝叶斯分类器相反)。多层感知器也不具有生成能力吗?如果是这样,使用这些“得分”作为概率输出有多么不准确?我应该使用不同的神经网络算法吗?如果是的话,是否有适用于Java的库?
非常感谢。
答案 0 :(得分:1)
好的,所以我对此有所了解并做了一些研究,我决定按照以下步骤进行:
由于我没有找到更好的东西,我将使用通常的反向传播算法简单地使用新的训练值进行1更新步骤。据我所知,当人们将其转换为在线学习时,使用新值进行1更新是其他算法中的常用方法。找到正确的学习率可能会很有趣。由于这种方法每次移动只会进行1次更新,因此反向传播不必非常优化,因此我将编写自己的解决方案,不会使用任何库。
在这里,我可能会放弃Weka工具,我将尝试使用FANN库。由于在计算默认参数后我不需要使用它,因此它实际上是用其他语言实现的并不重要。
如果您了解更好的解决方案,请与我们联系。感谢。