2

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 .

enter image description here

+0

Exécution d'une simulation en tapant ceci, mal mettre à jour le poste principal avec une image de certains résultats momentanément. – Samalot

Répondre

1

Il y a de l'ordre de 10²⁰ différents états dans les contrôleurs, et vous devez jouer un jeu entier pour chaque mise à jour, il sera un très, très longtemps jusqu'à ce que vous obtenez des valeurs d'action significatives ce façon. Généralement, vous voudriez une représentation d'état simplifiée, comme un réseau de neurones, pour résoudre ce genre de problème en utilisant l'apprentissage par renforcement.

En outre, deux mises en garde:

  • Idéalement, vous devriez mettre à jour 1 valeur par jeu, parce que les mouvements dans un seul jeu sont fortement corrélés.
  • Vous devez initialiser les valeurs d'action à de petites valeurs aléatoires pour éviter les modifications de stratégie importantes à partir de petites mises à jour Q.
+0

Merci!Et juste pour clarifier, dites-vous que TD (0) est peu susceptible de montrer une amélioration pour les dames de plus de 1000 jeux, – Samalot

+1

@Samalot, je ne serais pas surpris s'il ne s'améliore pas après un million. –