Question

J'ai un réseau de neurones artificiels qui joue Tic-Tac-Toe - mais il est pas encore terminée

.

Ce que j'ai encore:

  • la matrice de récompense "R [t]" avec des valeurs entières pour chaque pas de temps ou de déplacement "T" (1 = joueur A gagne, 0 = tirage, -1 = victoires joueur B)
  • Les valeurs d'entrée sont correctement propagées à travers le réseau.
  • la formule pour régler les poids:

entrer image description ici


Qu'est-ce qui manque:

  • l'apprentissage TD: j'ai encore besoin d'une procédure qui « backpropagates » erreurs du réseau à l'aide de l'algorithme TD (?)
  • .

Mais je ne comprends pas vraiment cet algorithme.


Mon approche à ce jour ...

Le Decay trace ? doit être « 0,1 » comme des états distales ne devraient pas obtenir qu'une grande partie de la récompense.

Le taux d'apprentissage est « 0,5 » dans les deux couches (entrée et cachée).

Il est un cas de récompense différée: La récompense reste « 0 » jusqu'à ce que le jeu se termine. Ensuite, la récompense devient « 1 » pour la première victoire du joueur, « -1 » pour la victoire du deuxième joueur ou « 0 » dans le cas d'un tirage au sort.


Mes questions:

  • Comment et quand calculez-vous erreur du net (l'erreur TD)?
  • Comment pouvez-vous mettre en œuvre le « rétropropagation » de l'erreur?
  • Comment sont les poids ajustés à l'aide de TD (?)?

Merci beaucoup à l'avance:)

Était-ce utile?

La solution

Si vous êtes sérieux au sujet de ce travail, alors la compréhension TD-lambda serait très utile. Le livre de Sutton et Barto, « l'apprentissage par renforcement » est disponible gratuitement dans format HTML et couvre cet algorithme en détail. Au fond, qu'est-ce que TD-lambda est de créer une correspondance entre un état de jeu et la récompense attendue à la fin du jeu. Comme les jeux sont joués, les Etats qui sont plus susceptibles de conduire à des états gagnant ont tendance à obtenir des valeurs de fidélité plus attendues.

Pour un jeu simple comme tic-tac-toe, vous êtes mieux à commencer par une cartographie sous forme de tableau (suivre juste une valeur de récompense attendue pour chaque état de jeu possible). Ensuite, une fois que vous avez ce travail, vous pouvez essayer d'utiliser un NN pour la cartographie à la place. Mais je suggère d'essayer un autre projet, plus simple NN premier ...

Autres conseils

J'ai été confus à ce sujet aussi, mais je crois que cela est la façon dont il fonctionne:

A partir du noeud d'extrémité, en vérifiant R, (sortie reçu) et E (sortie attendue). Si E = R, il va bien, et vous avez pas de modifications à faire.

Si E! = R, vous voyez à quelle distance il était, en fonction des seuils et ainsi de suite, puis déplacer les poids ou seuil vers le haut ou vers le bas un peu. Ensuite, sur la base des nouveaux poids, vous allez revenir, et devinez si oui ou non il était trop élevé ou trop bas, et répéter, avec un effet plus faible.

Je ne l'ai jamais vraiment essayé cet algorithme, mais qui est essentiellement la version de l'idée que je comprends.

Pour autant que je me souviens que vous faites la formation avec un jeu de résultats connus - donc vous calculer la sortie pour une entrée connue et soustrayez votre valeur de sortie connue de celle - qui est l'erreur.

Ensuite, vous utilisez l'erreur pour corriger le net - pour une seule couche NN ajustée à la règle delta je sais qu'une epsilon de 0,5 est trop élevé - quelque chose comme 0,1 est mieux - plus lent, mais mieux. Avec rétropropagation il est un peu plus avancé - mais pour autant que je me rappelle la description de l'équation mathématique d'un NN est complexe et difficile à comprendre - il n'est pas si compliqué que ça

.

jeter un oeil à http://www.codeproject.com/KB/recipes/BP.aspx

ou google pour "rétropropagation c." - il est probablement plus facile à comprendre dans le code

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top