2012-01-10 71 views
3

我想实现强化学习连接四个代理程序。 我不确定如何操作以及它应该如何操作。我熟悉强化学习的理论方面,但不知道如何实施。想实现强化学习连接四个代理程序

应该怎么做? 我应该使用TD(lambda)还是Q-learning,以及MinMax树如何实现这一目标? 我的Q和V函数是如何工作的(动作质量和状态值)。我如何评分这些东西?我改进的基本政策是什么,我的模型是什么? 另一件事是我应该如何保存状态或statesXactions(取决于学习算法)。我应该使用神经网络吗?如果是,如何?

我正在使用JAVA。

谢谢。

+0

我不确定任何人都可以回答这个问题,而不只是告诉你如何去做。我会开始,我想要实现什么,我想学习什么,希望这些决定会变得更清晰。 – 2012-01-10 10:07:46

+0

听到别人怎么做会有很大帮助 – Vadiklk 2012-01-10 10:15:25

+0

既然你这样做是为了兴趣,我会首先使用最简单和有趣的方法。我喜欢神经网络,所以我会试试,但为了真正学习,你应该研究这些主题(它们本身就是博士),看看每种方法是多么容易或有效。 – 2012-01-10 10:18:36

回答

2

这可能比你想象的更困难的问题,这是为什么:

的游戏动作空间是列的选择了一块放入。游戏的状态空间是一个MxN网格。每列包含最多M个分布在2名玩家中的棋子。这意味着有(2 M + 1 -1)N状态。对于一个标准的6x7板,这个出来约10 。因此,你不能直接对问题进行再训练学习。状态值函数不平滑,所以无法使用函数近似不起作用。

但并非所有都丢失。首先,您可以通过分隔动作空间来简化问题。如果分别考虑每列的值(基于它旁边的两列),则将N减少到3,将状态空间大小减少到10 。现在,这是非常易于管理的。您可以创建一个数组来表示该值函数,并使用简单的RL算法(如SARSA)对其进行更新。

请注意,游戏的收益非常滞后,所以您可能想要使用资格追踪来加速学习。