J'essaie de comprendre Q-Learning,Est-ce une implémentation correcte de Q-Learning for Checkers?
Mon algorithme actuel fonctionne comme suit:
1. Une table de consultation est maintenue qui associe un état à l'information sur sa récompense immédiate et utilitaire pour chaque action disponible.
2. À chaque état, vérifiez si elle est contenue dans la table de recherche et initialisez-la dans le cas contraire (avec un utilitaire par défaut de 0).
3. Choisissez une action à prendre avec une probabilité de:
(*ϵ* = 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. Mise à jour le utilitaire de l'état actuel basé sur:
Q(st, at) += a[rt+1, + d.max(Q(st+1, a)) - Q(st,at)]
Je suis actuellement jouer mon agent contre un simple joueur heuristique, qui a toujours kes le mouvement qui va lui donner le meilleur récompense immédiate.
Les résultats - Les résultats sont très pauvres, même après quelques centaines de jeux, l'agent Q-Learning est en train de perdre beaucoup plus qu'il gagne. De plus, le changement de taux de victoire est quasi inexistant, surtout après avoir atteint quelques centaines de matchs.
Ai-je raté quelque chose? Je l'ai mis en place un agent couple:
(Rote-Learning, TD (0), TD (Lambda), Q-Learning)
Mais ils semblent tous être céder similaires, décevants, les résultats .
Exécution d'une simulation en tapant ceci, mal mettre à jour le poste principal avec une image de certains résultats momentanément. – Samalot