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