我正在尝试了解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 代理的输球也比赢球多得多。此外,胜率的变化几乎不存在,尤其是在达到几百场比赛之后。
我错过了什么吗?我已经实现了几个代理:
(死记硬背、TD(0)、TD(Lambda)、Q-Learning)
但它们似乎都产生了相似的、令人失望的结果。