我想了解 Q-Learning ,
我当前的算法操作如下:
1。维护一个查找表,将状态映射到有关每个可用操作的即时奖励和效用的信息。
2。在每个状态下,检查它是否包含在查找表中,如果没有,则进行初始化(使用默认实用程序0)。
3。选择要采取的操作,概率为:
(*ϵ* = 0>ϵ>1 - probability of taking a random action)
1-ϵ = Choosing the state-action pair with the highest utility.
ϵ = Choosing a random move.
ϵ decreases over time.
4. :根据以下内容更新当前状态的实用程序:
Q(st, at) += a[rt+1, + d.max(Q(st+1, a)) - Q(st,at)]
我正在与一个简单的启发式玩家玩我的代理人,他总是采取行动,为其提供最佳即时奖励。
结果 - 结果非常糟糕,即使在几百场比赛之后,Q-Learning代理正在失去比获胜更多。此外,胜率的变化几乎不存在,特别是在达到几百场比赛之后。
我错过了什么吗?我已经实施了几个代理商:
(Rote-Learning,TD(0),TD(Lambda),Q-Learning)
但他们似乎都在产生类似的,令人失望的结果。
答案 0 :(得分:1)
在跳棋中有大约10²个不同的状态,你需要为每次更新玩一整场游戏,所以在你以这种方式获得有意义的动作值之前,这将是非常非常长的时间。通常,您需要一个简化的状态表示,如神经网络,使用强化学习来解决这类问题。
另外,有几点需要注意: