2012-01-10 101 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)對其進行更新。

請注意,遊戲的收益非常滯後,所以您可能想要使用資格追蹤來加速學習。