Question

J'implémente l'algorithme DQN à partir de zéro sur la simulation de montagne. J'utilise une configuration de $ récompense = 1.0 $ lorsque la voiture frappe le drapeau et 0 $ autrement. Le facteur de désintégration de récompense est défini sur $ gamma = 0,99 $. L'algorithme commence par le facteur d'exploration de $ epsilon = 1,0 $ et diminue cela au fil du temps à $ epsilon = 0,1 $.

Si j'ai compris correctement, la fonction $ q $ pour une paire d'état et d'action est définie comme:

$ Q (s_t, a_t) = r_t + gamma times operatorname {arg , max} _a q (s_ {t + 1}, a_ {t + 1}) $

Ainsi, $ q_ {max} $ satisferait la condition:

$ Q_ {max} = r_ {max} + gamma Times q_ {max} $

Ce qui signifie:

$ Q_ {max} = frac {r_ {max}} {1 - gamma} $

Cependant, comme mon réseau ne se rapproche que de la fonction $ q $, il est possible de produire parfois une valeur supérieure à $ q_ {max} $. Lorsque cela se produit, une formation plus approfondie entraîne une croissance de exponentielle des valeurs de façon exponentielle, et le tout explose.

Lorsque je serre l'erreur de valeur attendue par rapport à la valeur prédite actuelle à un petit nombre, elle provoque toujours une explosion un peu plus lente.

La seule solution à laquelle je peux penser est de serrer la valeur prévue $ q (s_ {t + 1}, a {t + 1}) $ à $ q_ {max} $ et le forcer à ne jamais aller au-dessus de cela. J'ai fait cela et j'ai obtenu des résultats corrects avec.

Est-ce que ça a du sens? Est-ce une situation qui se produit dans DQN? Ou peut-être que j'ai raté quelque chose et que mon implémentation est un peu buggy?

Pas de solution correcte

Licencié sous: CC-BY-SA avec attribution
scroll top